44 lines
1.4 KiB
Python
44 lines
1.4 KiB
Python
import json
|
|
from flask import Flask, request
|
|
from flask_restful import Resource, Api
|
|
from config import etcd_client as client, logging, APP_PORT
|
|
|
|
app = Flask(__name__)
|
|
api = Api(app)
|
|
|
|
|
|
class ListProducts(Resource):
|
|
@staticmethod
|
|
def get():
|
|
products = client.get_prefix("/v1/products/", value_in_json=False)
|
|
prod_dict = {}
|
|
for p in products:
|
|
prod_dict[p.key] = json.loads(p.value)
|
|
logging.debug(f"Products = {prod_dict}")
|
|
return prod_dict, 200
|
|
|
|
class AddProduct(Resource):
|
|
@staticmethod
|
|
def post():
|
|
data = request.json
|
|
logging.debug(f"Got data: {str(data)}")
|
|
# TODO: Add validation
|
|
|
|
product_key = "/v1/products/"
|
|
product_value = {
|
|
"name": data["product_name"],
|
|
"description": data["product_description"],
|
|
"type": data["product_type"],
|
|
"price": data["product_price"],
|
|
"recurring_duration": data["product_recurring_duration"],
|
|
"recurring_duration_units": data["product_recurring_duration_units"]
|
|
}
|
|
logging.debug(f"Adding product data: {str(product_value)}")
|
|
client.put(product_key, product_value, value_in_json=True)
|
|
return {"message": f"Product {data['product_name']} created"}, 200
|
|
|
|
api.add_resource(ListProducts, "/product/list")
|
|
api.add_resource(AddProduct, "/product/add")
|
|
|
|
if __name__ == '__main__':
|
|
app.run(host="::", port=APP_PORT, debug=True)
|