Files
FirstCore/app/api/routes/routes.py
T
Azeez Muibi e7243434a4 update
2025-04-11 16:43:32 +01:00

92 lines
2.7 KiB
Python

from flask import Blueprint, request, jsonify, send_from_directory
from app.api.services import (
AuthorizationService,
TransactionService, LoanService,
)
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/<path:filename>")
def serve_paths(filename):
swagger_dir = os.path.join("swagger")
return send_from_directory(swagger_dir, filename)
# Get All Transactions Endpoint
@api.route("/transactions", methods=["GET"])
# @jwt_required()
def get_transactions():
# Extract query parameters for filtering
filters = {
'account_id': request.args.get('account_id'),
'type': request.args.get('type'),
'channel': request.args.get('channel'),
'start_date': request.args.get('start_date'),
'end_date': request.args.get('end_date')
}
# logger.info(f"Get transactions request received with filters: {filters}")
response = TransactionService.process_request(filters)
return response
# Get All Loans Endpoint
@api.route("/loans", methods=["GET"])
# @jwt_required()
def get_loans():
# Extract query parameters for filtering
filters = {
'customer_id': request.args.get('customer_id'),
'account_id': request.args.get('account_id'),
'offer_id': request.args.get('offer_id'),
'status': request.args.get('status'),
'start_date': request.args.get('start_date'),
'end_date': request.args.get('end_date')
}
# logger.info(f"Get loans request received with filters: {filters}")
response = LoanService.process_request(filters)
return response
# 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