www/api/order-get.js

26 lines
867 B
JavaScript

'use strict'
require('dotenv').config()
const fs = require('fs').promises
const ORDERS_DIR = `${__dirname}/../orders`
module.exports = async (req, res) => {
const ip = req.ip.slice(7)
const orderFile = `${ORDERS_DIR}/${req.params.orderid}.json`
let order; try {
order = await JSON.parse(await fs.readFile(orderFile))
} catch (err) {
console.error(`[${ip}] requested ${orderFile} but it couldn't be read:\n${err}`)
return res.status(500).send('Failed to read order from disk')
}
if (req.query.key.replace(/ /g,'+')===order.key) {
console.log(`[${ip}] Got order ${order.id}`)
return res.header('Content-Type','application/json')
.status(200).send(order)
}
else {
console.log(`[${ip}] sent wrong key:\n ${req.query.key.replace(/ /g,'+')}`)
console.log(`[${ip}] correct key:\n ${order.key}`)
return res.status(403).send('Incorrect key!')
}
}