def main(): app = Selector(wrap=Yaro) app.add('401', GET=get_401) app.add('', GET=get_index) app.add('/', GET=get_index) app.add('/items.json', GET=get_items_json) app.add('/items', GET=get_item) app.add('/item/{id}', GET=get_item) app.add('/dropbox', POST=post_to_dropbox,GET=get_dropbox) app.add('/notes', POST=post_to_notes,GET=get_notes) app.add('/note/{id}', DELETE=delete_note) app.add('/dropbox/{id}', GET=get_dropbox_item) app.add('/thumbnail/{blob_key}', GET=get_thumbnail) app.add('/serve/{blob_key}', GET=serve_blob) app.add('/attributes', GET=get_attributes,POST=post_to_attributes) app.add('/attribute/{ascii_id}', GET=get_attribute,DELETE=delete_attribute) app.add('/upload/{user_id}', POST=process_upload) app.add('/formupload/{user_id}', POST=process_formupload) app.add('/upload_url', GET=get_upload_url) run_wsgi_app(app)
body += '<div id="pos">' body += '<span id="pos_display">' for leaf, n in izip( leaves(bundle.derivation, lambda e: not is_ignored(e)), count()): body += '<span id="pos%d" style="display:none">%s</span>' % ( n, leaf.tag) body += '</span>' body += '</div>' yield layout(body) else: yield error_document() else: yield error_document() def error_document(): return 'Error' routes = Selector() routes.add('/view/{doc}/{deriv}', GET=view_deriv) from wsgiref import simple_server srv = simple_server.WSGIServer(('', 8000), simple_server.WSGIRequestHandler) srv.set_app(routes) srv.serve_forever()
import barrel.cooper import static import json from selector import Selector from unipath import FSPath as Path app = Selector() base = Path(__file__).parent for course in base.listdir(filter=Path.isdir): subapp = static.Cling(course.child('html')) if course.child('auth.json').exists(): users = json.load(open(course.child('auth.json'))) auth = barrel.cooper.basicauth(users=users, realm="Course Material") # FIXME: worth allowing customization here? subapp = auth(subapp) app.add("/%s|" % course.name, GET=subapp)
# something less like gunicorn/etc. Oh... You're welcome. __all__ = ['application'] def say_hello(environ, start_response): """ Test app... """ args, kwargs = environ['wsgiorg.routing_args'] print args start_response("200 OK", [('Content-type', 'text/plain')]) return ["Hello, %s!" % kwargs['name']] # I know - a long variable name, but don't change it - see the above # message above ``__all__`` for more context... application = Selector() # include for smoke testing application.add('/hello/{name}', GET=say_hello) application.add(ENDPT_PREFIX + '/hello/{name}', GET=say_hello) # Change to include a version number as a prefix application.add(ENDPT_PREFIX + '/lookup[/]', GET=lookup) application.add(ENDPT_PREFIX + '/register/{object_id:word}/{object_name:segment}/' + '{object_desc:segment[/{parent_uuid:word}][/]', POST=register) application.add(ENDPT_PREFIX + '/provenance/{uuid:word}/{username}/{service_name}/' + '{event_name}/{category_name}[/]', POST=provenance) application.add(ENDPT_PREFIX + '/provenance/{service_name}/{event_name}/{category_name}[/]', POST=prov_post)
def say_hello(environ, start_response): """ Test app... """ args, kwargs = environ['wsgiorg.routing_args'] print args start_response("200 OK", [('Content-type', 'text/plain')]) return ["Hello, %s!" % kwargs['name']] # I know - a long variable name, but don't change it - see the above # message above ``__all__`` for more context... application = Selector() # include for smoke testing application.add('/hello/{name}', GET=say_hello) application.add(ENDPT_PREFIX + '/hello/{name}', GET=say_hello) # include for configuration verification application.add(ENDPT_PREFIX + '/summary', GET=summary) # Change to include a version number as a prefix application.add(ENDPT_PREFIX + '/lookup[/]', GET=lookup) application.add(ENDPT_PREFIX + '/register/{service_key}/{object_id:segment}/{object_name:segment}/' + '{object_desc:segment[/{parent_uuid:word}][/]', POST=register) application.add(ENDPT_PREFIX + '/provenance/{uuid:word}/{username}/{service_name}/' + '{event_name}/{category_name}[/]', POST=provenance) application.add(ENDPT_PREFIX + '/provenance/{service_name}/{event_name}/{category_name}[/]',
class OpenIdGateway(object): def __init__(self, app_conf): self.app_conf = app_conf self.sess_key = 'openid.amp.fm.gateway' self.base_url = self.app_conf['base_url'] self.ekey = 'openidgateway' self.urls = [ ('[/]', {'GET': self.index}), ('/login[/]', {'GET': self.login, 'POST': self.login}), ('/complete[/]', {'GET': self.complete, 'POST': self.complete}), ('/transform/openid-redirect.xsl', {'GET': self.openid_redirect_xslt}), ] self._s = Selector(self.urls) if self.app_conf.get('debug', False): self._s.add('/forms[/]', {'GET': self.forms}) self.store = filestore.FileOpenIDStore('./cache') def __call__(self, environ, start_response): return self._s(environ, start_response) def get_consumer(self, sess): return consumer.Consumer(sess, self.store) def index(self, environ, start_response): url = ''.join([self.base_url, 'login']) raise HTTPSeeOther(location=url) def login(self, environ, start_response): req = Request(environ) set_template(environ, 'login.xslt') sess = environ['beaker.session'] params = {'base_uri': self.base_url} if not sess.get(self.ekey): sess[self.ekey] = {} sess.save() headers = [('Content-Type', 'application/xml')] if not (req.params.get('uname') or req.params.get('return_location')): message ='There must be a uname and return_location in the query string' raise HTTPBadRequest(detail=message) openid_url = req.params['uname'] sess[self.ekey]['return_location'] = req.params['return_location'] if not openid_url: # this seems better ... # raise HTTPBadRequest("need openid_url") params['message'] = "Don't leave your name blank." params['status'] = 'failure' set_params(environ, params) start_response('200 OK', headers) return [] consumer = self.get_consumer(sess[self.ekey]) try: request = consumer.begin(openid_url) except Exception, exc: params['message'] = 'Error in discovery: %s' % (cgi.escape(str(exc[0]))) params['status'] = 'failure' set_params(environ, params) start_response('200 OK', headers) return [] if request is None: errcode = cgi.escape(post['openid_url']) params['message'] = 'No OpenID services found for <code>%s</code>' % (errcode) params['status'] = 'failure' set_params(environ, params) start_response('200 OK', headers) return [] #sreg_request = sreg.SRegRequest(required=['nickname']) #request.addExtension(sreg_request) return_to = '%scomplete'% self.base_url return_to = '%s?identity=%s' % (return_to, openid_url) trusted_root = self.base_url sess[self.ekey]['trusted_root'] = trusted_root redirect_url = request.redirectURL(trusted_root, return_to) set_params(environ, {'redirect_url': redirect_url}) params['status'] = 'redirect' params['message'] = 'OpendID Login Redirection' sess.save() set_params(environ, params) start_response('200 OK', headers) return []