server/server.py
author Eugen Sawin <sawine@me73.com>
Sat, 08 Oct 2011 01:05:50 +0200
changeset 9 44d912089ce1
parent 8 c926073022f4
child 10 ab694dc54515
permissions -rwxr-xr-x
Basic JSON response.
sawine@7
     1
#!/usr/bin/python
sawine@7
     2
sawine@7
     3
from argparse import ArgumentParser
sawine@7
     4
sawine@7
     5
def parse_args():
sawine@7
     6
    parser = ArgumentParser(description="")
sawine@7
     7
    parser.add_argument("port", type=int, help="port")
sawine@7
     8
    parser.add_argument("-a", help="host address")
sawine@7
     9
    return parser.parse_args()	
sawine@7
    10
sawine@7
    11
def main():
sawine@9
    12
    args = parse_args()
sawine@9
    13
    port = args.port
sawine@9
    14
    server = Server("localhost", port, GetHandler)
sawine@9
    15
    server.run()
sawine@7
    16
sawine@7
    17
from BaseHTTPServer import BaseHTTPRequestHandler
sawine@7
    18
from BaseHTTPServer import HTTPServer
sawine@7
    19
import SocketServer
sawine@7
    20
import urlparse
sawine@7
    21
sawine@7
    22
class GetHandler(BaseHTTPRequestHandler):
sawine@9
    23
    def do_GET(self):
sawine@9
    24
        if self.path == "/":
sawine@9
    25
            self.path = "/machine.html"
sawine@9
    26
sawine@9
    27
        parsed_path = urlparse.urlparse(self.path)
sawine@9
    28
        message = '\n'.join(("client: %s:%i" % self.client_address,
sawine@9
    29
                             "path: %s" % parsed_path.path,
sawine@9
    30
                             "query: %s" % parsed_path.query,
sawine@9
    31
                             "params: %s" % parsed_path.params))
sawine@9
    32
        self.send_response(200) 
sawine@9
    33
       
sawine@9
    34
        resource = True
sawine@9
    35
        if parsed_path.path.endswith(".html"):            
sawine@9
    36
            self.send_header("Content-type", "text/html")          
sawine@9
    37
        elif parsed_path.path.endswith(".css"):
sawine@9
    38
            self.send_header("Content-type", "text/css")
sawine@9
    39
        elif parsed_path.path.endswith(".js"):
sawine@9
    40
            self.send_header("Content-type", "application/javascript")
sawine@9
    41
        else:
sawine@9
    42
            self.send_header("Content-type", "application/json")  
sawine@9
    43
            resource = False
sawine@9
    44
        self.end_headers()
sawine@9
    45
sawine@9
    46
        if resource:
sawine@9
    47
            self.wfile.write(open("../client" + parsed_path.path).read())
sawine@9
    48
        else:           
sawine@9
    49
            self.wfile.write("{\"time\": 73}")
sawine@7
    50
		
sawine@7
    51
class Server(HTTPServer):
sawine@9
    52
    def __init__(self, host, port, handler):
sawine@9
    53
        HTTPServer.__init__(self, (host, port), handler)
sawine@9
    54
        self.host = host
sawine@9
    55
        self.port = port
sawine@9
    56
    def run(self):
sawine@9
    57
        self.serve_forever()
sawine@7
    58
sawine@7
    59
if __name__ == "__main__":
sawine@7
    60
	main()
sawine@7
    61