#!/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()