diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..e69de29 diff --git a/src/api/__init__.py b/src/api/__init__.py new file mode 100644 index 0000000..14d0074 --- /dev/null +++ b/src/api/__init__.py @@ -0,0 +1,10 @@ +from flask_restx import Api +from .example import api as example_api + +api = Api( + title="API", + version="1.0", + description="API", + ) + +api.add_namespace(example_api) diff --git a/src/api/example.py b/src/api/example.py new file mode 100644 index 0000000..821667f --- /dev/null +++ b/src/api/example.py @@ -0,0 +1,16 @@ +from flask_restx import Namespace, Resource, fields +from flask_restx import reqparse +from flask import make_response, abort, request, Response +from functools import lru_cache +import requests +import logging + +api = Namespace('example', description='Example namespace') + + +@api.route('/') +@api.doc(description="Example endpoint") +class Example(Resource): + @api.doc('example') + def get(self): + return {'hello': 'world'} diff --git a/src/app.py b/src/app.py new file mode 100755 index 0000000..9fd512e --- /dev/null +++ b/src/app.py @@ -0,0 +1,21 @@ +#!/usr/bin/python +# Entry point + +from flask import Flask +from api import api +from config import config, setupLog +import os +import logging + +setupLog() + +port = config["server.port"] +debug = config["server.debug"] + +app = Flask(__name__) + +api.init_app(app) + +app.run(host='0.0.0.0', + port=config["server.port"], + debug=config["server.debug"]) diff --git a/src/config.py b/src/config.py new file mode 100644 index 0000000..434e1b9 --- /dev/null +++ b/src/config.py @@ -0,0 +1,26 @@ +# Load configuration yaml + +import envyaml +import os +import logging + +config = envyaml.EnvYAML(os.environ.get('CONFIG_PATH', 'config.yaml')) + +def setupLog(): + logLevel = config["log.level"] + filename = config["log.filename"] + logFormat = config["log.format"] + + level = None + if logLevel == "info": + level =logging.INFO + elif logLevel == "debug": + level = logging.DEBUG + elif logLevel == "warning": + level = logging.WARNING + elif logLevel == "error": + level = logging.ERROR + elif logLevel == "critical": + level = logging.CRITICAL + + logging.basicConfig(level=level, filename=filename, format=logFormat) diff --git a/src/config.yaml b/src/config.yaml new file mode 100644 index 0000000..8ada1ba --- /dev/null +++ b/src/config.yaml @@ -0,0 +1,8 @@ +log: + level: "debug" + filename: "application.log" + format: "%(levelname)s : %(message)s" + +server: + port: 5000 + debug: True diff --git a/src/requirements.txt b/src/requirements.txt new file mode 100644 index 0000000..e69de29