Files
Azeez Muibi a66fea65ee simulator
2025-05-06 11:11:34 +01:00

167 lines
4.6 KiB
Python

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/<path:filename>')
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