Last active
November 23, 2015 05:13
-
-
Save rawls238/1b1d9be8ec0a576404ac to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
'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