const config = require('../config'); const { proxyRequest } = require('./websocket'); const { parseStoreNumber } = require('../utils/validate'); function getSiwAuthHeaders() { const { username, password } = config.siw; if (!username || !password) { throw new Error('SIW credentials are not configured (SIW_USERNAME / SIW_PASSWORD)'); } const authString = Buffer.from(`${username}:${password}`).toString('base64'); return { Authorization: `Basic ${authString}` }; } function buildSiwRequest(path) { if (!config.siw.baseUrl) { throw new Error('SIW_BASE_URL is not configured'); } return { method: 'GET', url: `${config.siw.baseUrl}${path}`, headers: getSiwAuthHeaders(), }; } async function getStoreLocation(storeNumber) { const normalized = parseStoreNumber(storeNumber); if (!normalized) throw new Error('Invalid store number'); const result = await proxyRequest(buildSiwRequest(`/StoreLocation/${normalized}`)); return result.data; } async function getStoreRegisters(storeNumber) { const normalized = parseStoreNumber(storeNumber); if (!normalized) throw new Error('Invalid store number'); const result = await proxyRequest(buildSiwRequest(`/StoreRegister/${normalized}`)); return result.data || []; } async function getStorePrinters(storeNumber) { const normalized = parseStoreNumber(storeNumber); if (!normalized) throw new Error('Invalid store number'); const result = await proxyRequest(buildSiwRequest(`/StorePrinter/${normalized}`)); return result.data || []; } async function getStorePaymentTerminals(storeNumber) { const normalized = parseStoreNumber(storeNumber); if (!normalized) throw new Error('Invalid store number'); const result = await proxyRequest(buildSiwRequest(`/StorePayment/${normalized}`)); return result.data || []; } module.exports = { getStoreLocation, getStoreRegisters, getStorePrinters, getStorePaymentTerminals, };