Skip to content

Instantly share code, notes, and snippets.

View shrunyan's full-sized avatar

Stuart Runyan shrunyan

View GitHub Profile
@shrunyan
shrunyan / genRequests.js
Last active November 23, 2025 23:25
Function to generate a total amount of requests over a specificed time period to simulate a natural traffic pattern
/**
* Generates requests in batches over a specified time period
* By varying the batch size randomly up to a max, it simulates more natural traffic
* @name genRequests
* @param {String} url The URL to send requests to
* @param {Number} total Total number of requests to send
* @param {Number} batchMax Max number of requests to send in parallel per batch
* @param {Number} runTime Amount of time in millseconds to spread the requests over
* @returns {Promise<Number>} Number of requests completed
*/
@shrunyan
shrunyan / index.js
Created November 20, 2019 00:18
Proof case for unexpected 404 responses
// This test ensures there is no render gap between when a page is published and made available.
// Specifically we expect to get a 200 response (vs 404) immediately, within milliseconds, after a page is published.
// We will prove this by making a request to site-engine every X milliseconds and then triggering a publish
// At no time should we recieve a 404 response
const ZESTY_INSTANCE_DOMAIN = "http://zesty.pw/";
const ZESTY_USER_EMAIL = "";
const ZESTY_USER_PASSWORD = "";
const ZESTY_INSTANCE_ZUID = "8-f48cf3a682-7fthvk";
@shrunyan
shrunyan / index.js
Created March 21, 2018 17:20
Take screenshots of urls. Inspired by https://meowni.ca/posts/2017-puppeteer-tests/
const puppeteer = require('puppeteer')
const express = require('express')
const querystring = require('querystring')
const server = express()
/**
* Screenshot a url
* e.g. /screenshot?url=https://www.npmjs.com&width=800&height=600
*/
server.get('/screenshot', async (req, res) => {
@shrunyan
shrunyan / prestart.js
Created February 6, 2017 19:55
npm prestart script for triggering sub-app builds
// @see https://strongloop.com/strongblog/modular-node-js-express/
var fs = require('fs')
var resolve = require('path').resolve
var join = require('path').join
var cp = require('child_process')
// get library path
var src = resolve(__dirname, '../src/')
@shrunyan
shrunyan / pipeline.js
Last active August 26, 2016 22:05
Streaming pipeline for requesting, modifying and uploading an image.
'use strict'
var http = require('http')
var request = require('request')
var gm = require('gm')
var fs = require('fs')
var FormData = require('form-data')
let r1 = request('https://upload.wikimedia.org/wikipedia/commons/e/eb/Ash_Tree_-_geograph.org.uk_-_590710.jpg')
@shrunyan
shrunyan / sniff.js
Created August 26, 2016 20:59
Node.js module to sniff the bytes from a stream for mimetype detection
'use strict'
import stream from 'stream'
export default function sniff(rs, sniffLength = 16384) {
return new Promise((resolve, reject) => {
let buffer = Buffer.from([])
let ws = new stream.Writable()
@shrunyan
shrunyan / index.js
Created May 14, 2016 20:11 — forked from anonymous/index.js
Experimenting with Koajs and the Spotify api
'use strict'
const koa = require('koa')
const r = require('koa-route')
const https = require('https')
const app = koa()
app.use(r.get('/search/:term', function *(term) {
const req = https.request({
method: 'get',
@shrunyan
shrunyan / dropbox-form-upload.js
Last active August 7, 2016 22:42
Example xhr request to post file from form to dropbox
<form action="/" method="post" name="newsletter">
<input type="text" name="first_name" value="stuart" />
<input type="file" id="resume" />
<input type="hidden" id="dropbox" />
<input type="hidden" name="zlf" value="1" />
<button type="submit">Submit</button>
</form>
<script>
document.forms.newsletter.addEventListener('submit', function cb(evt) {
evt.preventDefault()
@shrunyan
shrunyan / fu-status-middleware
Created March 12, 2016 09:12
troll express middlware
app.get('/troll', (req, res) => {res.sendStatus([200,400,500,422][Math.floor(Math.random() * 4)])})
@shrunyan
shrunyan / comic-reader.md
Created January 9, 2016 22:57
a comic reader which can consume multiple comic data sources

Comic Reader

As an avid web comic reader many times I start reading a web comic and get distracted with life then forget about the website. I'd like an application that can be a single source of readership.

It should:

  • Maintain a list of comics being read
  • Maintain the state of what page I'm on
  • Provide a mechanism for comic discovery