You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
bandolier-website/api/product.js

32 lines
897 B

import logging from "../lib/logging.js";
import assert from "assert";
import { API } from "../lib/api.js";
import { Payment, Product } from "../lib/models.js";
const log = logging.create(import.meta.url);
export const get = async (req, res) => {
const api = new API(req, res);
const { product_id } = req.query;
assert(product_id != undefined, "product_id is required.");
try {
const product = await Product.first({id: product_id});
assert(product, `Product is not found ${product_id}`);
const [paid, payment] = await Payment.paid(api.user);
if(!paid) {
// TODO: We need to return the product to pay...is there
// a better way to do this maybe?
api.error(402, {payment, product});
} else {
api.reply(200, product);
}
} catch (error) {
log.error(error);
api.error(500, "Internal Server Error");
}
}
get.authenticated = true;