summaryrefslogtreecommitdiffstats
path: root/karm/test/__httpd.py
blob: ba87113be609842226ecf0a651da4f8336c092ae (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
'''Runs an HTTP server on port 8000 (or the first command line argument).'''

import BaseHTTPServer
import SimpleHTTPServer
import sys
import os.path

class MyHandler( SimpleHTTPServer.SimpleHTTPRequestHandler ):

  def do_PUT( self ):
    '''Just enough to work with karm.'''
    path = self.translate_path(self.path)

    rval = 200
    if not os.path.exists( path ): rval = 201

    f = file( path, "w" )
    lines = []
    while 1:
      line = self.rfile.readline()
      lines.append( line  )
      if line == '\r\n' or line == '\n' or line == '':
          break
    f.writelines( lines )
    self.send_response( rval )


DEFAULT_PORT = 8000

if sys.argv[1:]: port = int(sys.argv[1])
else: port = DEFAULT_PORT
server_address = ('', port)

SimpleHTTPServer.SimpleHTTPRequestHandler.protocol_version = "HTTP/1.0"
httpd = BaseHTTPServer.HTTPServer(server_address, MyHandler )

sa = httpd.socket.getsockname()
print "Serving HTTP on", sa[0], "port", sa[1], "..."
httpd.serve_forever()