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