transcription-cost-usage-re.../backend/app/routes/billing_routes.py

46 lines
1.5 KiB
Python

from flask_restx import Resource
from flask import request
import requests
from app.docs.biling_models import billing_ns, product_model, update_price_model
from app.config import Config
from app.utils.role_required import role_required
from flask_jwt_extended import jwt_required
BILLING_API_URL = Config.BILLING_API_URL
HEADERS = {
'Content-Type': 'application/json',
'Authorization': f'Bearer {Config.BILLING_API_TOKEN}'
}
@billing_ns.route('/product')
class CreateProduct(Resource):
@billing_ns.expect(product_model)
@jwt_required()
@role_required('admin', 'user')
def post(self):
data = request.get_json()
response = requests.post(url=f'{BILLING_API_URL}/billing/product', json=data, headers=HEADERS)
return response.json(), response.status_code
@billing_ns.route('/product/<string:product_id>')
class UpdateProduct(Resource):
@billing_ns.expect(update_price_model)
@jwt_required()
@role_required('admin', 'user')
def patch(self, product_id):
data = request.get_json()
response = requests.patch(url=f'{BILLING_API_URL}/billing/product/{product_id}', json=data, headers=HEADERS)
return response.json(), response.status_code
@billing_ns.route('/products')
class ListProducts(Resource):
@jwt_required()
@role_required('admin', 'user')
def get(self):
response = requests.get(url=f'{BILLING_API_URL}/billing/products', headers=HEADERS)
return response.json(), response.status_code