diff options
Diffstat (limited to 'python/gras/query/__init__.py')
-rw-r--r-- | python/gras/query/__init__.py | 81 |
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 |