Skip to content

Instantly share code, notes, and snippets.

@rawls238
Last active November 23, 2015 05:13
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save rawls238/1b1d9be8ec0a576404ac to your computer and use it in GitHub Desktop.
Save rawls238/1b1d9be8ec0a576404ac to your computer and use it in GitHub Desktop.
'use strict'
var http = require('http');
const PORT = 4000;
let inMemoryStore = {};
const parseQueryParams = (str) => {
const split = str.split('&');
return split.reduce((ret, cur) => {
const kv = cur.split('=');
ret[kv[0]] = kv[1];
return ret;
}, {});
};
const setValueHandler = (request) => {
const params = parseQueryParams(request.url.split('?')[1]);
Object.keys(params).forEach((param) => {
inMemoryStore[param] = params[param];
});
return 'success';
};
const getValueHandler = (request) => {
const params = parseQueryParams(request.url.split('?')[1]);
return inMemoryStore[params.key] || 'NULL';
};
const noop = (request) => {
return;
};
//relatively generic route handler
const fetchHandler = (request) => {
const url = request.url.split('?')[0];
const key = `${request.method}${url}`;
console.log(`Handling ${key}`);
switch (key) {
case "GET/set":
return setValueHandler;
case "GET/get":
return getValueHandler;
default:
return noop;
}
}
const handle = (request, response) => {
const handler = fetchHandler(request);
response.end(handler(request));
}
const server = http.createServer(handle);
//start up the server
server.listen(PORT, function(){
console.log("Listening on port %s", PORT);
});
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment