# -*- coding: utf-8 -*- import nltk import locale import datetime import cjson import clt_sentences import clt_tokens import clt_tags import clt_gen from mod_python import apache from mod_python import util nltk.data.path.append('/home/markus/nltk_data') x = nltk.pos_tag([]) def handler(req): function = '' cgi_input = util.FieldStorage(req) try: function = cgi_input["input"].split('/')[0] except: return fail(cgi_input,"function is missing",req) if cgi_input.has_key("data"): data = cgi_input['data'].decode('UTF-8') try: data = cjson.decode(data) except: return fail(cgi_input,"invalid input json for ",req) else: return fail(cgi_input,"parameter missing",req) try: if(function == 'sentences'): if isinstance(data, basestring): result = clt_sentences.function(data) else: return fail(cgi_input,'invalid input, string expected',req) elif(function == 'tokens'): if isinstance(data,list): result = clt_tokens.function(data) else: return fail(cgi_input,'invalid input, string expected',req) elif(function == 'tags'): if isinstance(data,list): result = clt_tags.function(data) else: return fail(cgi_input,'invalid input, list expected',req) else: return fail(cgi_input,'unknown function: %s' % function,req) except: return fail(cgi_input,'unknown error',req) return response(cgi_input,result,req) def fail(cgi_input,message,req): result = clt_gen.json_fail(message) return response(cgi_input,result,req) def response(cgi_input, result, req): write_header(req) if cgi_input.has_key("callback"): callback=cgi_input['callback'] req.write(callback +'(' + result + ');') else: req.write(result) return apache.OK def write_header(req): req.headers_out['Cache-Control'] = 'must-revalidate, max-age:86400, s-maxage:86400' req.headers_out['Expires'] = get_expire_time() req.headers_out['Access-Control-Allow-Origin'] = '*' req.content_type = "application/json;charset=utf-8" req.send_http_header() def get_expire_time(): locale.setlocale(locale.LC_TIME, 'en_US') return datetime.datetime.utcnow().strftime('%a, %d %b %Y 23:59:59 GMT')