diff options
author | Lars Wirzenius <liw@liw.fi> | 2018-11-19 09:51:37 +0200 |
---|---|---|
committer | Lars Wirzenius <liw@liw.fi> | 2018-11-19 09:51:37 +0200 |
commit | a580249c56e3dc79dea528156371e3ce01f2e857 (patch) | |
tree | 8e5d2f0b1efee00e5aeb0ad21583683cfcf20734 | |
parent | db8a90d92a2a395d183af53e7d603338146d85c6 (diff) | |
download | effi-reg-a580249c56e3dc79dea528156371e3ce01f2e857.tar.gz |
Add: facade for Effi-reg
-rwxr-xr-x | effireg | 82 | ||||
-rw-r--r-- | effireg.json | 5 |
2 files changed, 87 insertions, 0 deletions
@@ -0,0 +1,82 @@ +#!/usr/bin/python3 +# Copyright (C) 2018 Lars Wirzenius +# 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/>. + + +import copy +import json +import logging +import os +import sys +import uuid + +import bottle +import requests + + +class EffiAPI: + + def __init__(self, app, apiurl): + self._add_routes(app) + self._apiurl = apiurl + + def _add_routes(self, bottleapp): + routes = [ + { + 'method': 'GET', + 'path': '/', + 'callback': self._call(self._frontpage), + }, + ] + + for route in routes: + bottleapp.route(**route) + + def _call(self, callback): + def helper(): + r = bottle.request + logging.info('Request: path=%s', r.path) + logging.info('Request: content type: %s', r.content_type) + for h in r.headers: + logging.info('Request: headers: %s: %s', h, r.get_header(h)) + logging.info('Request: body: %r', r.body.read()) + return callback() + return helper + + def _frontpage(self): + return "Effi REG!" + + +def main(): + with open(sys.argv[1]) as f: + config = json.load(f) + + logging.basicConfig( + filename=config['log'], level=logging.DEBUG, + format='%(asctime)s %(levelname)s %(message)s') + + logging.info('Effi-reg starts') + + if config.get('pid'): + pid = os.getpid() + with open(config['pid'], 'w') as f: + f.write(str(pid)) + + app = bottle.default_app() + api = EffiAPI(app, config) + app.run(host='127.0.0.1', port=8181) + + +if __name__ == '__main__': + main() diff --git a/effireg.json b/effireg.json new file mode 100644 index 0000000..17c3530 --- /dev/null +++ b/effireg.json @@ -0,0 +1,5 @@ +{ + "api-url": "https://effi-reg.vm.liw.fi", + "log": "effiapi.log", + "pid": "effiapi.pid" +} |