Skip to content

Commit 9a9d724

Browse files
committed
✨ add on-connected route
1 parent db726ff commit 9a9d724

File tree

3 files changed

+39
-0
lines changed

3 files changed

+39
-0
lines changed

src/index.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import { TokenCacheStorage } from './cache';
77
import { errorHandlerMiddleware, extractHeaderMiddleware } from './middlewares';
88
import {
99
Adapter,
10+
BridgeRequest,
1011
BridgeRequestWithTimestamp,
1112
ContactCache,
1213
Controller,
@@ -137,6 +138,10 @@ export function start(
137138
controller.handleWebhook(req, res, next),
138139
);
139140

141+
app.post('/on-connected', (req: BridgeRequest<unknown>, res, next) =>
142+
controller.handleConnectedEvent(req, res, next),
143+
);
144+
140145
app.use(errorHandlerMiddleware);
141146

142147
customRouters.forEach(({ path, router }) => app.use(path, router));

src/models/adapter.model.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -88,6 +88,7 @@ export interface Adapter {
8888
req: Request,
8989
res?: Response,
9090
) => Promise<{ apiKey: string; apiUrl: string }>;
91+
onConnected?: (config: Config) => Promise<void>;
9192
handleWebhook?: (req: Request) => Promise<IntegrationsEvent[]>;
9293
verifyWebhookRequest?: (req: Request) => Promise<boolean>;
9394
}

src/models/controller.model.ts

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1462,4 +1462,37 @@ export class Controller {
14621462
next(error);
14631463
}
14641464
}
1465+
1466+
public async onConnected(
1467+
req: BridgeRequest<unknown>,
1468+
res: Response,
1469+
next: NextFunction,
1470+
) {
1471+
const { providerConfig } = req;
1472+
1473+
try {
1474+
if (!providerConfig) {
1475+
throw new ServerError(400, 'Missing parameters');
1476+
}
1477+
1478+
if (!this.adapter.onConnected) {
1479+
infoLogger(
1480+
'onConnected',
1481+
'No onConnected handler defined',
1482+
providerConfig.apiKey,
1483+
);
1484+
return;
1485+
}
1486+
1487+
await this.adapter.onConnected(providerConfig);
1488+
} catch (error) {
1489+
errorLogger(
1490+
'onConnected',
1491+
'Could not handle onConnected event',
1492+
'',
1493+
error || 'Unknown',
1494+
);
1495+
next(error);
1496+
}
1497+
}
14651498
}

0 commit comments

Comments
 (0)