1#!/usr/bin/env python 2# 3# Copyright (C) 2017 The Android Open Source Project 4# 5# Licensed under the Apache License, Version 2.0 (the "License"); 6# you may not use this file except in compliance with the License. 7# You may obtain a copy of the License at 8# 9# http://www.apache.org/licenses/LICENSE-2.0 10# 11# Unless required by applicable law or agreed to in writing, software 12# distributed under the License is distributed on an "AS IS" BASIS, 13# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14# See the License for the specific language governing permissions and 15# limitations under the License. 16# 17 18import os 19 20import webapp2 21 22from webapp.src.handlers import base 23from webapp.src.scheduler import device_heartbeat 24from webapp.src.scheduler import job_heartbeat 25from webapp.src.scheduler import periodic 26from webapp.src.tasks import indexing 27from webapp.src.tasks import removing_outdated_devices 28 29 30class RedirectHandler(base.BaseHandler): 31 """Redirect handler to redirect to specific appspot version.""" 32 def get(self, arg): 33 if arg: 34 return self.redirect("https://{}.appspot.com/".format(arg)) 35 36 37class MainPage(base.BaseHandler): 38 """Main web page request handler.""" 39 40 def get(self): 41 """Generates an HTML page.""" 42 self.template = "index.html" 43 44 template_values = {} 45 46 self.render(template_values) 47 48 49config = {} 50config['webapp2_extras.sessions'] = { 51 'secret_key': os.environ.get('SESSION_SECRET_KEY'), 52} 53 54app = webapp2.WSGIApplication( 55 [ 56 ("/tasks/schedule", periodic.PeriodicScheduler), 57 ("/tasks/device_heartbeat", device_heartbeat.PeriodicDeviceHeartBeat), 58 ("/tasks/job_heartbeat", job_heartbeat.PeriodicJobHeartBeat), 59 ("/tasks/remove_outdated_devices", 60 removing_outdated_devices.RemoveOutdatedDevices), 61 ("/tasks/indexing([/]?.*)", indexing.CreateIndex), 62 ("/redirect/(.*)", RedirectHandler), 63 ], 64 config=config, 65 debug=False) 66