summaryrefslogtreecommitdiff
path: root/python/gras/query/__init__.py
diff options
context:
space:
mode:
Diffstat (limited to 'python/gras/query/__init__.py')
-rw-r--r--python/gras/query/__init__.py81
1 files changed, 0 insertions, 81 deletions
diff --git a/python/gras/query/__init__.py b/python/gras/query/__init__.py
deleted file mode 100644
index c72222b..0000000
--- a/python/gras/query/__init__.py
+++ /dev/null
@@ -1,81 +0,0 @@
-import time
-import BaseHTTPServer
-import urlparse
-import json
-import os
-
-__path__ = os.path.abspath(os.path.dirname(__file__))
-
-server_registry = dict()
-
-class MyHandler(BaseHTTPServer.BaseHTTPRequestHandler):
-
- #hide log messages to stdout by default
- def log_message(self, format, *args): pass
-
- def do_HEAD(s):
- s.send_response(200)
- s.send_header("Content-type", "text/html")
- s.end_headers()
-
- def do_GET(s):
- """Respond to a GET request."""
-
- #extract the path and set default
- o = urlparse.urlparse(s.path)
- args = server_registry[s.server]
- path = o.path
-
- #handle json requests
- if path.endswith('.json'):
- s.send_response(200)
- s.send_header("Content-type", "application/json")
- s.end_headers()
- if path == '/args.json':
- arg_strs = dict((str(k), str(v)) for k, v in args.iteritems())
- s.wfile.write(json.dumps(arg_strs))
- else:
- #why the fuck does no OS ever patch boost when there is a bug
- #https://svn.boost.org/trac/boost/ticket/6785
- #serialize the path args into xml -- but I just wanted json
- def xml_from_qs(k, v):
- if not isinstance(v, list): v = [v]
- return ''.join(['<%s>%s</%s>'%(k, v_i, k) for v_i in v])
- query_args = [xml_from_qs(k,v) for k,v in urlparse.parse_qs(o.query).iteritems()]
- query_args.append(xml_from_qs('path', path))
- xml_args = xml_from_qs('args', ''.join(query_args))
- s.wfile.write(args['top_block'].query(xml_args))
- return
-
- #clean up path for filesystem
- if path.startswith('/'): path = path[1:]
- if not path: path = 'main.html'
- target = os.path.join(__path__, path)
-
- #get files from the local file system
- if os.path.exists(target):
- s.send_response(200)
- if target.endswith('.js'): s.send_header("Content-type", "text/javascript")
- elif target.endswith('.css'): s.send_header("Content-type", "text/css")
- else: s.send_header("Content-type", "text")
- s.end_headers()
- s.wfile.write(open(target).read())
- #otherwise not found do 404
- else:
- s.send_response(404)
- s.send_header("Content-type", "text/html")
- s.end_headers()
- s.wfile.write("<p>not found</p>")
-
-import select
-
-class http_server(object):
- def __init__(self, args, **kwargs):
- server_class = BaseHTTPServer.HTTPServer
- self._httpd = server_class(args, MyHandler)
- server_registry[self._httpd] = kwargs
-
- def serve_forever(self):
- while True:
- try: self._httpd.serve_forever()
- except select.error: pass