Skip to content

Instantly share code, notes, and snippets.

@OllieJones
OllieJones / validateGithubWebhook.js
Created October 5, 2017 12:49
Github webhooks use a shared secret for validation. The webhook itself contains a header X-Hub-Signature containing a hash of the webhook body. This function checks that hash against the body.
'use strict';
const crypto = require( 'crypto' );
function validateGithub( secret, signature, rawBody ) {
if( (!signature) || signature.length === 0 ) return false;
if( (!rawBody) || rawBody.length === 0 ) return false;
try {
const splits = signature.split( '=' );
@OllieJones
OllieJones / streamPeek.js
Last active September 5, 2018 13:38
Read useful information from a MP4 data stream
/*
* this code examines a MP4 data stream.
* it looks at the appropriate atoms to determine width, height, and frame rate.
*
* It is a sleazy approach, the equivalent of grepping for necessary
* boxes rather than using box lengths to parse the file.
*/
function read32( buff, fourcc, offset ) {
let start = 0;
'use strict';
/*globals ebml */
if ( !window.ebml ) window.ebml = {};
ebml.EbmlDecoder = function EbmlDecoder( options ) {
var schema = {
"80": {
@OllieJones
OllieJones / queue.js
Last active September 17, 2021 15:50
Queue class, super simple, based on Kate Morley's queue code.
'use strict';
/*
Queue.js
A class to represent a queue
Created by Kate Morley - https://code.iamkate.com/ - and released under the terms
of the CC0 1.0 Universal legal code:
@OllieJones
OllieJones / h264tools.js
Created February 4, 2021 16:11
h.264: Create an 'avcC' atom from a sequence of NALUs emitted by MediaRecorder
'use static'
// noinspection JSUnusedLocalSymbols,JSUnusedGlobalSymbols
/**
* Tools for handling H.264 bitstream issues.
*/
/**
* Handle the parsing and creation of "avcC" atoms.
*/
@OllieJones
OllieJones / wordpress-hooks.php
Last active March 16, 2022 11:56
Register WordPress Hooks Declaratively
<?php
namespace OllieJones;
use ReflectionClass;
use ReflectionMethod;
/**
* Automatically register WordPress hooks in classes derived from this one.
*
@OllieJones
OllieJones / wp_options_length_histogram.sql
Created June 23, 2022 15:59
Display a histogram of WordPress option lengths with histogram buckets approximating the log of lengths
-- Display a histogram of WordPress option lengths,
-- with histogram buckets approximating the log of lengths,
WITH lengths AS (
SELECT LENGTH(option_value) l,
autoload,
option_name
FROM wp_options
),
buckets AS (
SELECT autoload, l, option_name,