forked from precious/bash_minifier
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathapp_engine_handlers.py
52 lines (42 loc) · 1.55 KB
/
app_engine_handlers.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
import webapp2
import cgi
import urllib
import minifier
class MainPage(webapp2.RequestHandler):
def get_template(self):
template = ""
with open("template.html", "r") as tfile:
template = tfile.read()
return template
def get(self):
url = self.request.get("url", None)
self.response.headers["Content-Type"] = "text/html"
if url:
try:
stream = urllib.urlopen(url)
if stream.code != 200:
raise ValueError
user_source = stream.read()
return self.returnMinifiedSource(user_source)
except:
self.response.set_status(400)
return self.response.write("<h1>400</h1><br>Bad url")
params = dict(user_source="", processed_source="")
self.response.write(self.get_template() % params)
def post(self):
user_source = self.request.get("user_source", "")
self.returnMinifiedSource(user_source)
def returnMinifiedSource(self, user_source):
processed_source = ""
if user_source.strip():
try:
processed_source = minifier.minify(user_source.replace("\r",""))
except Exception, e:
processed_source = str(e)
self.response.headers["Content-Type"] = "text/html"
params = dict(user_source=cgi.escape(user_source),
processed_source=cgi.escape(processed_source))
self.response.write(self.get_template() % params)
application = webapp2.WSGIApplication([
("/", MainPage),
])