from starlette.responses import JSONResponse from cpl import api from cpl.api.application.web_app import WebApp from cpl.application import ApplicationBuilder from cpl.auth.permission.permissions import Permissions from cpl.core.configuration import Configuration from cpl.core.environment import Environment from service import PingService def main(): builder = ApplicationBuilder[WebApp](WebApp) Configuration.add_json_file(f"appsettings.json") Configuration.add_json_file(f"appsettings.{Environment.get_environment()}.json") Configuration.add_json_file(f"appsettings.{Environment.get_host_name()}.json", optional=True) builder.services.add_structured_logging() builder.services.add_wrapped_logging() builder.services.add_transient(PingService) builder.services.add_module(api) app = builder.build() app.with_logging() app.with_database() app.with_authentication() app.with_authorization() app.with_route(path="/route1", fn=lambda r: JSONResponse("route1"), method="GET", authentication=True, permissions=[Permissions.administrator]) app.with_routes_directory("routes") app.run() if __name__ == "__main__": main()