def __call__()

in src/main.py [0:0]


    def __call__(self):
        from lambdas.modular_api_handler.handler import HANDLER
        filename = self.deployment_resources
        if filename.is_file() and filename.exists():
            with open(filename, 'r') as file:
                data = json.load(file)
        else:
            data = {}
        api = data.setdefault(self.api_name, {
            'resource_type': 'api_gateway',
            'deploy_stage': 'dev',
            'resources': {},
            'dependencies': [],
            'models': {}
        })
        resources = api.setdefault('resources', {})
        for endpoint in HANDLER.iter_endpoint():
            method_data = resources.setdefault(endpoint.path, {
                'policy_statement_singleton': True,
                'enable_cors': True,
            }).setdefault(endpoint.method.value, {
                'enable_proxy': True,
                'integration_type': 'lambda',
                'lambda_alias': '${lambdas_alias_name}',
                'authorization_type': 'authorizer' if endpoint.auth else 'NONE',
                'lambda_name': self.lambda_name
            })
            method_data.pop('method_request_models', None)
            method_data.pop('responses', None)
            method_data.pop('method_request_parameters', None)
            if model := endpoint.request_model:
                match endpoint.method:
                    case HTTPMethod.GET:
                        params = {}
                        for name, info in model.model_fields.items():
                            params[f'method.request.querystring.{name}'] = info.is_required()
                        method_data['method_request_parameters'] = params
                    case _:
                        name = model.__name__
                        method_data['method_request_models'] = {
                            'application/json': name
                        }
                        schema = model.model_json_schema()
                        dereference_json(schema)
                        schema.pop('$defs', None)
                        api.setdefault('models', {})[name] = {
                            'content_type': 'application/json',
                            'schema': schema
                        }
            responses = []
            for st, m, _ in endpoint.responses:
                resp: dict[str, Any] = {'status_code': str(st.value)}
                if m:
                    resp['response_models'] = {'application/json': m.__name__}
                responses.append(resp)
            method_data['responses'] = responses

        with open(filename, 'w') as file:
            json.dump(data, file, indent=2)
        _LOG.info(f'{filename} has been updated')