from flask import Blueprint, request, jsonify, send_from_directory from app.api.services import ( EligibilityCheckService, SelectOfferService, ProvideLoanService, LoanStatusService, RepaymentService, CustomerConsentService, NotificationCallbackService, AuthorizationService, ) from app.utils.logger import logger from app.api.middlewares import enforce_json, require_auth import os from flask_jwt_extended import ( JWTManager, jwt_required, create_access_token, get_jwt_identity, create_refresh_token, ) api = Blueprint("api", __name__) @api.before_request def cors_middleware(): """Middleware applied globally to all API routes in this blueprint""" return enforce_json() # Swagger JSON file @api.route("/swagger.json", methods=["GET"]) def swagger_json(): swagger_dir = os.path.join("swagger") return send_from_directory(swagger_dir, "digifi_swagger.json") @api.route("/swagger/") def serve_paths(filename): swagger_dir = os.path.join("swagger") return send_from_directory(swagger_dir, filename) # EligibilityCheck Endpoint @api.route("/EligibilityCheck", methods=["POST"]) @jwt_required() def eligibility_check(): data = request.get_json() # logger.info(f"EligibilityCheck request received: {data}") response = EligibilityCheckService.process_request(data) return response # SelectOffer Endpoint @api.route("/SelectOffer", methods=["POST"]) @jwt_required() def select_offer(): data = request.get_json() # logger.info(f"SelectOffer request received: {data}") response = SelectOfferService.process_request(data) return response # ProvideLoan Endpoint @api.route("/ProvideLoan", methods=["POST"]) @jwt_required() def provide_loan(): data = request.get_json() # logger.info(f"ProvideLoan request received: {data}") response = ProvideLoanService.process_request(data) return response # LoanStatus Endpoint @api.route("/LoanStatus", methods=["POST"]) @jwt_required() def loan_status(): data = request.get_json() # logger.info(f"LoanStatus request received: {data}") response = LoanStatusService.process_request(data) return response # Repayment Endpoint @api.route("/Repayment", methods=["POST"]) @jwt_required() def repayment(): data = request.get_json() # logger.info(f"Repayment request received: {data}") response = RepaymentService.process_request(data) return response # CustomerConsent Endpoint @api.route("/CustomerConsent", methods=["POST"]) @jwt_required() def customer_consent(): data = request.get_json() # logger.info(f"CustomerConsent request received: {data}") response = CustomerConsentService.process_request(data) return response # NotificationCallback Endpoint @api.route("/NotificationCallback", methods=["POST"]) @jwt_required() def notification_callback(): data = request.get_json() # logger.info(f"NotificationCallback request received: {data}") response = NotificationCallbackService.process_request(data) return response # Health Check Endpoint @api.route("/health", methods=["GET"]) def health_check(): return {"status": "ok"}, 200 # Authorize endpoint @api.route("/Authorize", methods=["POST"]) def authorize(): data = request.get_json() # logger.info(f"Authorize request received: {data}") response = AuthorizationService.process_request(data) return response # Authorize refresh endpoint @api.route("/AuthorizeRefresh", methods=["POST"]) @jwt_required(refresh=True) def refresh(): data = request.get_json() # logger.info(f"Authorize refresh request received: {data}") response = AuthorizationService.process_refresh_request() return response