46 lines
1.5 KiB
Python
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 |