From a580249c56e3dc79dea528156371e3ce01f2e857 Mon Sep 17 00:00:00 2001 From: Lars Wirzenius Date: Mon, 19 Nov 2018 09:51:37 +0200 Subject: Add: facade for Effi-reg --- effireg | 82 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 82 insertions(+) create mode 100755 effireg (limited to 'effireg') diff --git a/effireg b/effireg new file mode 100755 index 0000000..a81287a --- /dev/null +++ b/effireg @@ -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 . + + +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() -- cgit v1.2.1