#!C:/Program Files/Python22/python.exe
"""
An HTTP PUT handler in Python
cf. http://www.apacheweek.com/issues/put1
"""
import os, sys, string, re, cgi
def r(status, msg):
print 'Content-Type: text/html\n'
if status == 200: print '
OKO.K.
'+msg+'
\n'
elif status == 500:
print 'ErrorError Publishing File
\n'
print 'An error occurred publishing this file ('+msg+').\n'
sys.exit(0)
def run(env):
if env['REQUEST_METHOD'] == 'GET': r(200, string.strip(__doc__))
elif env['REQUEST_METHOD'] != 'PUT': r(500, 'Request method != PUT')
if 'PATH_TRANSLATED' in env.keys(): fn = env['PATH_TRANSLATED']
else: r(500, 'No PATH_TRANSLATED')
if 'CONTENT_LENGTH' in env.keys(): cl = env['CONTENT_LENGTH']
else: r(500, 'Content-Length missing or zero ('+cl+')')
try: f = open(fn, 'w'); f.write(sys.stdin.read()); f.close()
except: reply(500, 'Cannot write to '+fn)
r(200, 'Content accepted')
if __name__=="__main__":
run(os.environ)