#!/usr/bin/env coffee { _ } = require 'lodash' http = require 'http' fs = require 'fs' connect = require 'connect' request = require 'request' # Read the original config. config = JSON.parse fs.readFileSync './config.json', 'utf-8' # This is the scrubbed version. _.extend scrubbed = {}, config, { protocol: 'http', token: null } proxy = (req, res, next) -> write = (code, body) -> res.writeHead code, {'Content-Type': 'application/json; charset=utf-8'} res.end body # Config? if req.url is '/config.json' # Refer to us like so. scrubbed.host = req.headers.host return write 200, JSON.stringify scrubbed, null, 4 # API request? if req.url.match /^\/repos/ # The new headers. headers = Accept: 'application/vnd.github.raw' # Add a token? headers.Authorization = 'token ' + config.token if config.token # Make the request. return request { uri: 'https://' + config.host + req.url headers }, (_err, _res, body) -> write _res.statusCode, body # Get handled by Connect. next() app = connect() .use(proxy) .use(connect.static(__dirname + '/public')) .listen process.env.PORT