Skip to content

Instantly share code, notes, and snippets.

@verhulstm
Forked from rudi-c/rcserver.py
Created November 9, 2024 04:49
Show Gist options
  • Save verhulstm/55149d4e89bd801f07d5b9ae429a171f to your computer and use it in GitHub Desktop.
Save verhulstm/55149d4e89bd801f07d5b9ae429a171f to your computer and use it in GitHub Desktop.
Python key-value server
#!/usr/bin/python
from BaseHTTPServer import BaseHTTPRequestHandler, HTTPServer
from urlparse import urlparse, parse_qs
global_store = {}
class KeyServerHandler(BaseHTTPRequestHandler):
def get_request(self, query_components):
if "key" in query_components:
key = query_components["key"][0]
print "Getting request for key: %s" % key
if key in global_store:
self.send_response(200)
self.wfile.write(global_store[key])
self.wfile.write("\n")
else:
self.send_response(404)
else:
self.send_response(400)
def set_request(self, query_components):
self.send_response(202)
for key, value in query_components.iteritems():
global_store[key] = value[0]
def do_GET(self):
parsed = urlparse(self.path)
query_components = parse_qs(parsed.query)
self.send_header("Content-type", "text/html")
self.end_headers()
if parsed.path == "/get":
self.get_request(query_components)
elif parsed.path == "/set":
self.set_request(query_components)
def main():
port = 4000
print "Listening on %d..." % port
server = HTTPServer(('', port), KeyServerHandler)
server.serve_forever()
if __name__ == "__main__":
main()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment