Skip to content

Instantly share code, notes, and snippets.

View clairegraham's full-sized avatar

Claire Graham clairegraham

View GitHub Profile
@clairegraham
clairegraham / chef.rb
Created December 13, 2019 18:49
Simple Ruby class for manually querying the Chef REST API (using Net::HTTP instead of Chef's REST resources)
require 'base64'
require 'time'
require 'digest/sha1'
require 'openssl'
require 'net/https'
require 'json'
class ChefAPI
# Public: Gets/Sets the http object.
#!/usr/bin/env ruby
require 'google/apis/script_v1'
require 'googleauth'
require 'googleauth/stores/file_token_store'
require 'fileutils'
OOB_URI = 'urn:ietf:wg:oauth:2.0:oob'
APPLICATION_NAME = 'Append Row to Spreadsheet'
CLIENT_SECRETS_PATH = File.join(Dir.home, '.google-oauth.json')
@clairegraham
clairegraham / mailchannels-datadog.py
Created December 13, 2019 18:20
Simple library to pull some metrics from the Mailchannels API, which I used for alerting via DataDog
#!/usr/bin/env python
import requests
import re
import json
from datadog import initialize, api
class Mailchannels:
def __init__(self):
self.payload = {
const puppeteer = require('puppeteer');
const Downloader = require('/home/ubuntu/node_modules/puppeteer/utils/ChromiumDownloader');
const chromiumRevision = require('/home/ubuntu/node_modules/puppeteer/package.json').puppeteer.chromium_revision;
const revisionInfo = Downloader.revisionInfo(
Downloader.currentPlatform(), chromiumRevision);
const domain = process.argv[2];
const puppeteer = require('puppeteer');
const domain = process.argv[2];
function sleep(millis) {
return new Promise(resolve => setTimeout(resolve, millis));
}
(async () => {
const browser = await puppeteer.launch({args: ['--no-sandbox', '--disable-setuid-sandbox']});
addEventListener('fetch', event => {
event.passThroughOnException()
event.respondWith(handleRequest(event.request))
})
async function handleRequest(request) {
let url = new URL(request.url)