forked from twpayne/waypointviewer
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmain.py
74 lines (56 loc) · 2.94 KB
/
main.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
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
# waypointviewer.py Waypoint Viewer Google Maps/Google AppEngine application
# Copyright (C) 2011 Tom Payne
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
from django.utils import simplejson
from google.appengine.api.urlfetch import fetch
from google.appengine.ext import webapp
from google.appengine.ext.webapp import template
from google.appengine.ext.webapp.util import run_wsgi_app
import os.path
import waypoint
class MainPage(webapp.RequestHandler):
def get(self):
template_values = dict((key, self.request.get(key)) for key in ('kml', 'tsk', 'title', 'wpt'))
path = os.path.join(os.path.dirname(__file__), 'templates', 'index.html')
self.response.out.write(template.render(path, template_values))
class WaypointviewerJs(webapp.RequestHandler):
def get(self):
template_values = dict((key, self.request.get(key)) for key in ('kml', 'tsk', 'wpt'))
path = os.path.join(os.path.dirname(__file__), 'templates', 'waypointviewer.js')
self.response.headers['content-type'] = 'text/javascript'
self.response.out.write(template.render(path, template_values))
class Wpt2json(webapp.RequestHandler):
def get(self):
debug = self.request.get('debug')
wpt = self.request.get('wpt')
response = fetch(wpt)
feature_collection = waypoint.feature_collection(response.content.splitlines(), debug=debug)
if debug:
feature_collection_properties['content'] = response.content
feature_collection_properties['content_was_truncated'] = response.content_was_truncated
feature_collection_properties['final_url'] = response.final_url
headers = dict((key, response.headers[key]) for key in response.headers)
feature_collection_properties['headers'] = headers
feature_collection_properties['status_code'] = response.status_code
keywords = {'indent': 4, 'sort_keys': True}
else:
keywords = {}
self.response.headers['content-type'] = 'application/json'
self.response.out.write(simplejson.dumps(feature_collection, **keywords))
application = webapp.WSGIApplication([('/', MainPage), ('/waypointviewer.js', WaypointviewerJs), ('/wpt2json.json', Wpt2json)], debug=True)
def main():
run_wsgi_app(application)
if __name__ == '__main__':
main()