95 lines
2.8 KiB
Python
95 lines
2.8 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'),
|
|
'status': request.args.get('status'),
|
|
'offer_id': request.args.get('offer_id'),
|
|
'product_id': request.args.get('product_id'),
|
|
'start_date': request.args.get('start_date'),
|
|
'end_date': request.args.get('end_date'),
|
|
'due_before': request.args.get('due_before'),
|
|
'due_after': request.args.get('due_after')
|
|
}
|
|
|
|
# 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 |