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.
32 lines
897 B
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;
|
|
|