Mercurial > hg > bitsyauth
comparison example/wsgibrowserid_example.py @ 39:8255e769828b
example/wsgibrowserid_example.py example/wsgibrowserid.py
| author | Jeff Hammel <jhammel@mozilla.com> |
|---|---|
| date | Fri, 27 Dec 2013 20:02:00 -0800 |
| parents | example/wsgibrowserid.py@4dfffa966edd |
| children |
comparison
equal
deleted
inserted
replaced
| 38:4dfffa966edd | 39:8255e769828b |
|---|---|
| 1 #!/usr/bin/env python | |
| 2 | |
| 3 """ | |
| 4 test Mozilla persona auth via wsgibrowserid | |
| 5 | |
| 6 https://github.com/ianb/wsgibrowserid | |
| 7 """ | |
| 8 | |
| 9 import optparse | |
| 10 import os | |
| 11 import sys | |
| 12 from webob import Request, Response, exc | |
| 13 from wsgiref import simple_server | |
| 14 | |
| 15 here = os.path.dirname(os.path.realpath(__file__)) | |
| 16 page = os.path.join(here, 'wsgibrowserid.html') | |
| 17 | |
| 18 class PersonaTest(object): | |
| 19 def __init__(self, page=page): | |
| 20 self.page = page | |
| 21 assert os.path.exists(self.page), "File '%s' not found" % self.page | |
| 22 self.page = open(self.page, 'r').read() | |
| 23 def __call__(self, environ, start_response): | |
| 24 request = Request(environ) | |
| 25 method = request.method | |
| 26 if method == 'GET': | |
| 27 content_type = 'text/html' | |
| 28 body = self.page | |
| 29 elif method == 'POST': | |
| 30 content_type = 'text/plain' | |
| 31 assertion = request.POST.get('assertion') | |
| 32 print ("Assertion: %s" % assertion) | |
| 33 body = '\n'.join(['%s: %s' % (key, environ[key]) | |
| 34 for key in sorted(environ.keys())]) | |
| 35 else: | |
| 36 content_type = 'text/plain' | |
| 37 body = 'Try GET or POST to do something interesting (How did you get here?)' | |
| 38 start_response("200 OK", [('Content-Type', content_type), | |
| 39 ('Content-Length', str(len(body)))]) | |
| 40 return [body] | |
| 41 | |
| 42 def main(args=sys.argv[1:]): | |
| 43 | |
| 44 usage = '%prog [options]' | |
| 45 parser = optparse.OptionParser(usage=usage, description=__doc__) | |
| 46 parser.add_option('-p', '--port', dest='port', | |
| 47 type='int', default=8123, | |
| 48 help="port to serve on") | |
| 49 options, args = parser.parse_args(args) | |
| 50 | |
| 51 app = PersonaTest() | |
| 52 | |
| 53 server = simple_server.make_server('127.0.0.1', options.port, app) | |
| 54 print 'server on\nhttp://localhost:%d/' % options.port | |
| 55 try: | |
| 56 server.serve_forever() | |
| 57 except KeyboardInterrupt: | |
| 58 pass | |
| 59 | |
| 60 if __name__ == '__main__': | |
| 61 main() |
