diff --git a/app/MRE/api/routes.py b/app/MRE/api.py similarity index 91% rename from app/MRE/api/routes.py rename to app/MRE/api.py index 22a894f..79c30b3 100644 --- a/app/MRE/api/routes.py +++ b/app/MRE/api.py @@ -2,7 +2,12 @@ from flask import current_app from flask_restx import Api, fields, apidoc, Model, Namespace, Resource from flask_restx.reqparse import RequestParser from app.mre_module import compute_mre -from . import namespace + +namespace = Namespace( + 'mre', + description='API endpoints for MRE calculations.' +) + MRE_request_parser = RequestParser() MRE_request_parser.add_argument('consumer_fico', @@ -18,7 +23,7 @@ MRE_request_parser.add_argument('down_payment', type=float, help='The down payment (as a percentage) for purchasing the home (float between [0, 1]).') -@namespace.route('compute_mre_from_home_price') +@namespace.route('/compute_mre') @namespace.doc(params={ 'consumer_fico': 'The consumer\'s fico score (int).', 'home_price': 'The price of the home (float).', diff --git a/app/MRE/api/__init__.py b/app/MRE/api/__init__.py deleted file mode 100644 index c928b48..0000000 --- a/app/MRE/api/__init__.py +++ /dev/null @@ -1,6 +0,0 @@ -from flask_restx import Namespace - -namespace = Namespace( - 'mre', - description='API endpoints for MRE calculations.' -) diff --git a/app/__init__.py b/app/__init__.py index 69e68db..bed2b97 100644 --- a/app/__init__.py +++ b/app/__init__.py @@ -1,4 +1,4 @@ -from flask import Flask, g, request +from flask import Flask, g, request, url_for import time import os from app.MRE import blueprint as mre_blueprint @@ -45,4 +45,19 @@ def create_app(app_name: str='MRE') -> Flask: app.logger.info(f'HTTP request completed (method={request.method}, path={request.path}, request_time={request_time}, status_code={response.status_code}).') return response + def has_no_empty_params(rule): + defaults = rule.defaults if rule.defaults is not None else () + arguments = rule.arguments if rule.arguments is not None else () + return len(defaults) >= len(arguments) + + @app.route('/ping') + def ping(): + links = [] + for rule in app.url_map.iter_rules(): + if "GET" in rule.methods and has_no_empty_params(rule): + url = url_for(rule.endpoint, **(rule.defaults or {})) + links.append(url) + app.logger.info(f'Endpoint: {url}') + return {'links': links}, 200 + return app diff --git a/run.py b/run.py index 050634c..561e134 100644 --- a/run.py +++ b/run.py @@ -3,4 +3,4 @@ from app import create_app app = create_app() if __name__ == '__main__': - app.run(ssl_context='adhoc') \ No newline at end of file + app.run(port=8080, host='0.0.0.0')