Files
pruebas-automatizacion-desa…/src/controllers/subscriptions.ts

44 lines
1.6 KiB
TypeScript

/**
* Simulacion de que clientes estan subscritos a que eventos
* */
import { Request, Response } from 'express';
import { config, webhooksConfig } from "#config/index.js";
import { SubscriptionData, Topic, SubscriptorData, ShopifyEvent } from "./subscriptions.types"
import { SubscriptionManager } from './subscription_manager';
/** Mapa topic -> subscriber */
export const subscribers = new Map<Topic, SubscriptionData>()
export function subscriptonHandlerBuilder(subscriptionManager: SubscriptionManager) {
const subsManager = subscriptionManager
return function (req: Request, res: Response) {
try {
const event = req.body;
const secretkey = req.body.secretkey || webhooksConfig.apiSecret || 1234
const subscriptorData: SubscriptorData = {
host: event.host,
endpoint: event.endpoint,
method: event.method,
open: new Date(),
port: event.port,
secretkey: secretkey // Es solo para mock no usar en prod
}
const topic = event.topic
subsManager.addSubscriber({
topic: topic,
subscriber: subscriptorData
})
console.log('Received webhook subscriber:',
JSON.stringify(event, null, 2));
res.status(200).json({ received: true, key: secretkey });
} catch (error) {
console.error('Error processing webhook:', error);
res.status(500).json({ error: 'Internal Server Error' });
}
}
}