""" Main SPDX - License - Identifier: LGPL - 3.0 - or -later Copyright © 2021 Project Author name guillermo.gutierrezmorote@concordia.ca Project Collaborator name peteryefi@gmail.com """ import flask from apispec import APISpec from apispec.ext.marshmallow import MarshmallowPlugin from flask_apispec.extension import FlaskApiSpec from flask_restful import Api from hub_api.city_info import CityInfo, City from hub_api.geometry import Geometry from hub_api.greenery_catalog import GreeneryCatalogEntries from hub_api.greenery_catalog import GreeneryCatalogEntry from hub_api.greenery_catalog import GreeneryCatalogNames from hub_api.construction_catalog import ConstructionCatalogEntries from hub_api.construction_catalog import ConstructionCatalogEntry from hub_api.construction_catalog import ConstructionCatalogNames from hub_api.usage_catalog import UsageCatalogEntries from hub_api.usage_catalog import UsageCatalogEntry from hub_api.usage_catalog import UsageCatalogNames from hub_api.heat_pump import HeatPump from hub_api.lca import MaterialLCACatalog from hub_api.lca import MaterialLCACalculations from hub_api.construction import Construction from hub_api.usage import Usage from hub_api.energy_demand import EnergyDemand from hub_api.session import SessionStart, SessionEnd, KeepSessionAlive from hub_api.uptime import Uptime from hub_api.greenery import Greenery from hub_api.user import User, UserLogin app = flask.Flask('gamification') api = Api(app) api.add_resource(Uptime, '/v1.4/uptime') api.add_resource(Geometry, '/v1.4/geometry') api.add_resource(GreeneryCatalogEntry, '/v1.4/greenery-catalog/entry') api.add_resource(GreeneryCatalogEntries, '/v1.4/greenery-catalog/entries') api.add_resource(GreeneryCatalogNames, '/v1.4/greenery-catalog/names') api.add_resource(ConstructionCatalogEntry, '/v1.4/construction-catalog/entry') api.add_resource(ConstructionCatalogEntries, '/v1.4/construction-catalog/entries') api.add_resource(ConstructionCatalogNames, '/v1.4/construction-catalog/names') api.add_resource(Construction, '/v1.4/construction') api.add_resource(UsageCatalogEntry, '/v1.4/usage-catalog/entry') api.add_resource(UsageCatalogEntries, '/v1.4/usage-catalog/entries') api.add_resource(UsageCatalogNames, '/v1.4/usage-catalog/names') api.add_resource(Usage, '/v1.4/usage') api.add_resource(EnergyDemand, '/v1.4/energy-demand') # api.add_resource(LCA, '/v1.4/lca') api.add_resource(MaterialLCACatalog, '/v1.4/material_lca_catalog/entries') api.add_resource(MaterialLCACalculations, '/v1.4/material_lca_catalog/calculations') api.add_resource(HeatPump, '/v1.4/heat-pump') api.add_resource(User, '/v1.4/user') api.add_resource(UserLogin, '/v1.4/user/login') api.add_resource(SessionStart, '/v1.4/session/start') api.add_resource(SessionEnd, '/v1.4/session/end') api.add_resource(KeepSessionAlive, '/v1.4/session/keep_alive') api.add_resource(CityInfo, '/v1.4/city_info') api.add_resource(City, '/v1.4/city') api.add_resource(Greenery, '/v1.4/greenery') # Add api documentation app.config.update({ 'APISPEC_SPEC': APISpec( title='Gamification Service', version='v1.4', plugins=[MarshmallowPlugin()], openapi_version='2.0.0' ), 'APISPEC_SWAGGER_URL': '/swagger/', # URI to access API Doc JSON 'APISPEC_SWAGGER_UI_URL': '/api-docs/' # URI to access UI of API Doc }) docs = FlaskApiSpec(app) docs.register(HeatPump) docs.register(User) docs.register(UserLogin) docs.register(City)