Axione-IPE-Viewer/webapp/eligibility_api/elig_api_routes.py

36 lines
1.4 KiB
Python
Raw Normal View History

2022-11-16 16:10:30 +01:00
from flask import Flask, request
2023-02-28 22:31:35 +01:00
from coordinates import check_coordinates_args, adapt_coordinates_to_max_area
2022-11-16 16:10:30 +01:00
from eligibility_api.elig_api_exceptions import ApiParamException
2023-01-11 15:35:12 +01:00
from ipe_fetcher.axione import AXIONE_MAX_AREA, Axione
2022-11-16 16:10:30 +01:00
2023-02-28 22:31:35 +01:00
2022-11-16 16:10:30 +01:00
class EligibilityApiRoutes:
def __init__(self, flask_app: Flask, axione_ipe: Axione):
self.flask_app = flask_app
self.axione_ipe = axione_ipe
def add_routes(self):
@self.flask_app.route("/eligibilite/axione", methods=["GET"])
def get_axione_eligibility_per_immeuble():
refimmeuble = request.args.get("refimmeuble")
if not refimmeuble:
2023-02-28 22:31:35 +01:00
raise ApiParamException(
"You need to specify path parameter 'refimmeuble'"
)
2022-11-16 16:10:30 +01:00
return self.axione_ipe.get_eligibilite_per_id_immeuble(refimmeuble)
2023-01-11 15:35:12 +01:00
@self.flask_app.route("/eligibilite/axione/coord", methods=["GET"])
def get_axione_eligibility_per_coordinates():
args = request.args
try:
processed_args = check_coordinates_args(args)
2023-02-28 22:31:35 +01:00
coordinates = adapt_coordinates_to_max_area(
processed_args, AXIONE_MAX_AREA
)
return self.axione_ipe.get_area_buildings(coordinates, {})
2023-01-11 15:35:12 +01:00
except ValueError:
2023-02-28 22:31:35 +01:00
raise ApiParamException(
"You need to specify path parameters 'swx' 'swy' 'nex' 'ney'"
)