40 lines
1.2 KiB
JavaScript
40 lines
1.2 KiB
JavaScript
const express = require('express');
|
|
const router = express.Router();
|
|
const { fetchJSON, uploadJSON } = require('../services/pixelbin');
|
|
|
|
// GET /api/providers
|
|
router.get('/', async (req, res) => {
|
|
try {
|
|
const data = await fetchJSON(`brands/${process.env.MERCHANT_ID}`, 'providers');
|
|
res.json(data || {});
|
|
} catch (err) {
|
|
res.status(500).json({ error: err.message });
|
|
}
|
|
});
|
|
|
|
// POST /api/providers
|
|
router.post('/', async (req, res) => {
|
|
try {
|
|
const { providerName, senderId, dltEntityId } = req.body;
|
|
if (!providerName || !senderId || !dltEntityId) {
|
|
return res.status(400).json({ error: 'providerName, senderId, and dltEntityId are required' });
|
|
}
|
|
if (senderId.length !== 6 || !/^[A-Za-z]+$/.test(senderId)) {
|
|
return res.status(400).json({ error: 'Sender ID must be exactly 6 alphabetic characters' });
|
|
}
|
|
|
|
const config = {
|
|
providerName,
|
|
senderId: senderId.toUpperCase(),
|
|
dltEntityId,
|
|
updatedAt: new Date().toISOString(),
|
|
};
|
|
await uploadJSON(`brands/${process.env.MERCHANT_ID}`, 'providers', config);
|
|
res.json(config);
|
|
} catch (err) {
|
|
res.status(500).json({ error: err.message });
|
|
}
|
|
});
|
|
|
|
module.exports = router;
|