Skip to content

Instantly share code, notes, and snippets.

View shrunyan's full-sized avatar

Stuart Runyan shrunyan

View GitHub Profile
@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
@shrunyan
shrunyan / comic-publisher.md
Created January 9, 2016 22:49
outline for comic publishing software

Comic Publisher

Draft: 1

Some of the best comic work happening now is coming from indie comic creators who are distributing their work through the web. From what I can tell they are using traditional CMSs to publish and manage their work and readership.

This document will attempt to layout ideas around an application designed specifically for comic publishers. The mantra of this app is;

To be the wordpress for comic creators