Skip to content

Instantly share code, notes, and snippets.

View brandonaaskov's full-sized avatar

Brandon Aaskov brandonaaskov

  • Mainframe Labs LLC
  • Maine, USA
View GitHub Profile
@brandonaaskov
brandonaaskov / alexa-oauth-example.js
Created August 19, 2016 17:48
Basic OAuth Example for Linking Accounts with an Alexa Skill
var express = require('express')
var router = express.Router()
var qs = require('qs')
function login (req, res) {
const query = qs.parse(req.query)
req.session.alexa = query // store the variables for the redirect URI after successful login
res.render('login')
}
@brandonaaskov
brandonaaskov / docker-clean-none-images.js
Last active October 3, 2016 15:40
Removes all lingering docker images with a repository of <none>
var _ = require('lodash')
var exec = require('child_process').exec
var removeUnnamedDockerImages = function (json) {
_.forEach(json, function (image) {
if (image.repo === '<none>') {
exec('docker rmi -f ' + image.imageId, function (rmErr, rmStdout, rmStderr) {
if (rmErr) {
return console.error(rmErr)
}
#! /usr/bin/env babel-node
var _ = require('lodash')
var exec = require('child_process').exec
var onDockerStopContainer = function (err, stdout, stderr) {
if (err) {
return console.error(err)
}
@brandonaaskov
brandonaaskov / extract-text-webpack-plugin_example.js
Last active November 28, 2016 21:22
extract-text-webpack-plugin example
const _ = require('lodash')
const path = require('path')
const webpack = require('webpack')
const ExtractTextPlugin = require('extract-text-webpack-plugin')
const pkg = require('./package.json')
// Webpack: The Confusing Parts
// https://medium.com/@rajaraodv/webpack-the-confusing-parts-58712f8fcad9
const isDevelopment = process.env.NODE_ENV === 'development'
@brandonaaskov
brandonaaskov / vscode-settings.json
Last active October 2, 2017 21:41
vscode.settings
// Place your settings in this file to overwrite the default settings
{
"editor.tabSize": 2,
"editor.fontFamily": "Operator Mono, Inconsolata, Hack, Input Mono Narrow, Consolas, Input Mono, Menlo, Monaco",
"editor.fontSize": 12,
"editor.fontWeight": "300",
"editor.wordWrap": "on",
"terminal.external.osxExec": "Terminal.app",
"search.exclude": {
"**/node_modules": true,
@brandonaaskov
brandonaaskov / konami-code.js
Last active June 8, 2017 15:41
A very straightforward example of leveraging the konami code (uses isEqual from lodash because it reads easier)
const konamiCode = [38, 38, 40, 40, 37, 39, 37, 39, 66, 65, 13]
let konamiTracker = []
const listener = event => {
const key = event.keyCode
const currentSequence = [...konamiTracker, key]
const slice = konamiCode.slice(0, currentSequence.length)
const isPartialMatch = _.isEqual(currentSequence, slice)
const isExactMatch = _.isEqual(currentSequence, konamiCode)
@brandonaaskov
brandonaaskov / filestack-security-policy-generation.js
Created November 6, 2017 21:22
Filestack's docs are woefully lame for how to create security policies. Hopefully this helps.
// -------------------------------------------- SERVER SIDE
const base64 = require('base64-url')
const crypto = require('crypto')
const moment = require('moment')
function calculatePolicy(policy, secret) {
const policyString = JSON.stringify(policy)
const encodedPolicy = base64.encode(policyString)
const signature = crypto.createHmac('sha256', secret).update(secret).digest('hex')
@brandonaaskov
brandonaaskov / docker-compose.yml
Created June 8, 2018 17:33
simple docker-compose setup for wordpress
version: '3.3'
services:
db:
image: mysql:5.7
volumes:
- db_data:/var/lib/mysql
ports:
- 3306
networks:
- blogosphere
@brandonaaskov
brandonaaskov / getDuration.js
Created October 31, 2018 15:40
It's surprisingly often that I need to parse a duration into a time format. Here's the latest I've had to use. And yes, it uses LoDash but this is my gist and I use LoDash all the time.
getDuration (duration) { // duration in ms
const timeString = new Date(duration).toISOString().substr(11, 8)
const time = _.reduce(timeString.split(':'), (result, piece, index) => {
let key
if (index === 0) key = 'hours'
if (index === 1) key = 'minutes'
if (index === 2) key = 'seconds'
result[key] = parseInt(piece, 10)
return result
}, {})
@brandonaaskov
brandonaaskov / users-crud-api-tests.js
Last active January 17, 2019 20:23
Integration tests for a basic CRUD API for Users
require('dotenv').config()
const { HOST, PORT } = process.env
const request = require('supertest')(`http://${HOST}:${PORT}`)
describe('Users CRUD APIs', () => {
let userId // gets stored once we create a user
const userInfo = {
name: 'Dade Murphy',
username: 'Zero Cool',
address: {