25
|
1 #!/usr/bin/env python
|
|
2
|
|
3 """
|
|
4 web handler for MPL licenser
|
|
5 """
|
|
6
|
|
7 import licenses
|
26
|
8 import tempfile
|
25
|
9 from webob import Request, Response, exc
|
|
10
|
|
11 class Handler(object):
|
|
12
|
|
13 required = set(['name', 'email', 'url'])
|
|
14
|
|
15 template = """<html>
|
|
16 <head><title>MPL licenser</title></head>
|
|
17 <body>
|
|
18 <h1>MPL Licenser</h1>
|
|
19 <div><i>license your files with MPL. Currently works for files of type: %(filetypes)s</i></div>
|
|
20 <div><form method="POST" enctype="multipart/form-data">
|
|
21 <p>Enter a file: <input type="file" name="file"/></p>
|
|
22 <p>or a URL: <input type="text" name="url" value="%(url)s"/></p>
|
|
23 <p>And enter your name: <input type="text" name="name" value="%(name)s"/></p>
|
|
24 <p>and email: <input type="text" name="email" value="%(email)s"/></p>
|
|
25 <input type="submit"/>
|
|
26 </body>
|
|
27 </html>"""
|
|
28
|
|
29 def __init__(self, **kw):
|
|
30 self.methods = {'GET': self.GET,
|
|
31 'POST': self.POST}
|
|
32
|
|
33 def __call__(self, environ, start_response):
|
|
34 request = Request(environ)
|
|
35 if request.method in self.methods:
|
|
36 response = self.methods[request.method](request)
|
|
37 else:
|
|
38 response = exc.HTTPMethodNotAllowed()
|
|
39 return response(environ, start_response)
|
|
40
|
|
41 def GET(self, request):
|
|
42 variables = {}
|
|
43 for i in self.required:
|
|
44 if i in request.GET:
|
|
45 variables[i] = request.GET[i]
|
|
46 if set(variables.keys()) == self.required:
|
|
47 try:
|
|
48 pass
|
|
49 except:
|
|
50 pass
|
|
51 return self.render(**variables)
|
|
52
|
|
53 def render(self, **variables):
|
|
54 for i in self.required:
|
|
55 if i not in variables:
|
|
56 variables[i] = ''
|
|
57 variables['filetypes'] = licenses.filetypes_string()
|
|
58 return Response(content_type='text/html', body=(self.template % variables))
|
|
59
|
|
60 def POST(self, request):
|
|
61 pass
|
|
62
|
26
|
63 def interpolate(self, filename, body, name, email):
|
|
64 fd, tf = tempfile.mkstemp()
|
|
65 try:
|
|
66 os.write(fd, body)
|
|
67 os.close(fd)
|
|
68 finally:
|
|
69 os.remove(tf)
|
|
70
|
|
71
|
25
|
72 if __name__ == '__main__':
|
|
73 from wsgiref import simple_server
|
|
74 app = Handler()
|
|
75 server = simple_server.make_server(host='0.0.0.0', port=8080, app=app)
|
|
76 server.serve_forever()
|
|
77
|