from flask import Flask, Blueprint, request, jsonify, send_from_directory import os from app.api.services import ( RACCheckService, DisbursementService, CollectLoanService, TransactionVerifyService, PenalChargeService, LienCheckService, RepaymentService, StatusCallService, LoanStatusService, SMSService, BulkSMSService, CompleteRACcheckService ) from app.utils.logger import logger from app.api.middlewares import require_api_key, require_app_id, enforce_json api = Blueprint("api", __name__) # Enforce json @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) # RACCheck Endpoint @api.route('/RACCheck', methods=['POST']) @require_api_key @require_app_id def rac_check(): data = request.get_json() # logger.info(f"RACCheck request received: {data}") response = RACCheckService.process_request(data) return response # CompleteRACcheck Endpoint @api.route('/CompleteRACcheck', methods=['POST']) @require_api_key @require_app_id def complete_rac_check(): data = request.get_json() # logger.info(f"CompleteRACcheck request received: {data}") response = CompleteRACcheckService.process_request(data) return response # Disbursement Endpoint @api.route('/Disbursement', methods=['POST']) @require_api_key @require_app_id def disbursement(): data = request.get_json() # logger.info(f"Disbursement request received: {data}") response = DisbursementService.process_request(data) return response # LoanStatus Endpoint @api.route('/LoanStatus', methods=['POST']) @require_api_key @require_app_id def loan_status(): data = request.get_json() # logger.info(f"LoanStatus request received: {data}") response = LoanStatusService.process_request(data) return response # CollectLoan Endpoint @api.route('/CollectLoan', methods=['POST']) @require_api_key @require_app_id def collect_loan(): data = request.get_json() # logger.info(f"CollectLoan request received: {data}") response = CollectLoanService.process_request(data) return response # TransactionVerify Endpoint @api.route('/TransactionVerify', methods=['POST']) @require_api_key @require_app_id def transaction_verify(): data = request.get_json() # logger.info(f"TransactionVerify request received: {data}") response = TransactionVerifyService.process_request(data) return response # PenalCharge Endpoint @api.route('/PenalCharge', methods=['POST']) @require_api_key @require_app_id def penal_charge(): data = request.get_json() # logger.info(f"PenalCharge request received: {data}") response = PenalChargeService.process_request(data) return response # LienCheck Endpoint @api.route('/LienCheck', methods=['POST']) @require_api_key @require_app_id def lien_check(): data = request.get_json() # logger.info(f"LienCheck request received: {data}") response = LienCheckService.process_request(data) return response # Repayment Endpoint - Added based on updated Repayment.json @api.route('/Repayment', methods=['POST']) @require_api_key @require_app_id def repayment(): data = request.get_json() # logger.info(f"Repayment request received: {data}") response = RepaymentService.process_request(data) return response # StatusCall Endpoint - Added based on updated StatusCall.json @api.route('/StatusCall', methods=['POST']) @require_api_key @require_app_id def status_call(): data = request.get_json() # logger.info(f"StatusCall request received: {data}") response = StatusCallService.process_request(data) return response # SMS Endpoint - Added based on Swagger JSON @api.route('/SMS', methods=['POST']) @require_api_key @require_app_id def sms(): data = request.get_json() # logger.info(f"SMS request received: {data}") response = SMSService.process_request(data) return response # BulkSMS Endpoint - Added based on Swagger JSON @api.route('/BulkSMS', methods=['POST']) @require_api_key @require_app_id def bulk_sms(): data = request.get_json() # logger.info(f"BulkSMS request received: {data}") response = BulkSMSService.process_request(data) return response # Health Check Endpoint @api.route('/health', methods=['GET']) def health_check(): return {"status": "ok"}, 200