siphon-server/sync.py

61 lines
1.7 KiB
Python

'''
Created on 15.09.2010
@author: Sergey Morozov
'''
import sys, os, cgitb, urlparse, json
from wsgiref.util import application_uri
cgitb.enable()
serverdir = os.path.dirname(__file__)
sys.path.append(serverdir)
sys.path.append(serverdir + os.sep + 'include')
import config
from siphon import user
def application(environ, start_response):
urlBase = urlparse.urljoin(application_uri(environ), '.')
# Read post data
try:
post_length = int(environ['CONTENT_LENGTH'])
post = environ['wsgi.input'].read(post_length)
except KeyError:
post = None
# Parse query string
form = urlparse.parse_qs(environ['QUERY_STRING'], keep_blank_values = True)
try:
form['type'] = form['type'][0]
except KeyError:
form['type'] = None
try:
form['email'] = form['email'][0]
except KeyError:
form['email'] = None
try:
form['password'] = form['password'][0]
except KeyError:
form['password'] = None
u = user(form, post)
if u.status['retval'] == 0:
if form['type'] == 'get':
output = json.dumps(u.getUser())
elif form['type'] == 'set':
output = json.dumps(u.setUser())
elif form['type'] == 'signup':
output = json.dumps(u.signup())
elif form['type'] == 'forgot':
output = json.dumps(u.forgot(urlBase))
else:
output = json.dumps(u.unsupportedFunction())
else:
output = json.dumps(u.status)
status = '200 OK'
response_headers = [('Content-type', 'text/plain'),
('Content-Length', str(len(output)))]
start_response(status, response_headers)
return([output])