Repository navigation
Expand file tree
/
Copy pathcontroller.py
More file actions
69 lines (56 loc) · 2.1 KB
/
Copy pathcontroller.py
File metadata and controls
69 lines (56 loc) · 2.1 KB
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
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
import cgi
import datetime
import os
import logging
from urlModel import UrlModel
from urlModel import UrlController
from urlCleaner import UrlCleaner
from google.appengine.ext import webapp
from google.appengine.ext.webapp import template
from google.appengine.ext.webapp.util import run_wsgi_app
def goToHome(self, error = None):
lasts = urlController.get_lasts()
self.response.headers['Content-Type'] = 'text/html'
path = os.path.join(os.path.dirname(__file__), 'home.html')
self.response.out.write(template.render(path, { 'lasts': lasts, 'error': error, 'url': self.request.get('url') } ))
class MainPage(webapp.RequestHandler):
def get(self):
goToHome(self)
class SavePage(webapp.RequestHandler):
def post(self):
url = self.request.get('url')
potdemiel = self.request.get('potdemiel')
if len(potdemiel) != 0: # Very simple protection about spammer's bot who filling all field
goToHome(self, 'An error occured.')
return
if not url or len(url) == 0:
goToHome(self, 'Please type an URL.')
return
try:
cleanedUrl = urlCleaner.clean(url)
except ValueError, err:
goToHome(self, 'An error occured, URL is malformed : ' + err.args[0])
return
shortened_url = urlController.save(cleanedUrl)
self.redirect('/#' + shortened_url.shortname)
class RedirectPage(webapp.RequestHandler):
def get(self, shortname):
shortened_url = urlController.get_by_key(shortname)
self.redirect(shortened_url.url)
class RssPage(webapp.RequestHandler):
def get(self):
lasts = urlController.get_lasts()
self.response.headers['Content-Type'] = 'application/rss+xml'
path = os.path.join(os.path.dirname(__file__), 'rss.xml')
self.response.out.write(template.render(path, { 'lasts': lasts } ))
application = webapp.WSGIApplication([
('/', MainPage),
('/add', SavePage),
('/rss.xml', RssPage),
(r'/(.*)', RedirectPage)
])
if __name__ == '__main__':
logging.getLogger().setLevel(logging.ERROR)
urlController = UrlController()
urlCleaner = UrlCleaner()
run_wsgi_app(application)