// Utilidades para comunicación con impresoras Epson ePOS import axios from 'axios' import https from 'https' export interface PrinterResponse { status: number headers: any data: string } export function buildSoapEnvelope(inner: string): string { return ( '' + '' + '' + '' + inner + '' + '' + '' ) } export async function sendToPrinter( xml: string, printerHost: string, printerDeviceId: string, printerTimeoutMs: number ): Promise { const url = `https://${printerHost}/cgi-bin/epos/service.cgi?devid=${encodeURIComponent(printerDeviceId)}&timeout=${printerTimeoutMs}` // Agente HTTPS que acepta certificados auto-firmados const httpsAgent = new https.Agent({ rejectUnauthorized: false }) const res = await axios.post(url, xml, { headers: { 'Content-Type': 'text/xml; charset=utf-8' }, httpsAgent, timeout: printerTimeoutMs + 5000, validateStatus: () => true, // Aceptar cualquier status code }) return { status: res.status, headers: res.headers, data: typeof res.data === 'string' ? res.data : String(res.data) } } export function parsePrinterResponse(responseData: string): { success: boolean code: string } { const success = /success\s*=\s*"true"/.test(responseData) const codeMatch = responseData.match(/code="([^"]*)"/) const code = codeMatch ? codeMatch[1] : '' return { success, code } }