(options: OpenpanelOptions)
| 20 | }; |
| 21 | |
| 22 | export default function createMiddleware(options: OpenpanelOptions) { |
| 23 | return function middleware(req: Request, res: Response, next: NextFunction) { |
| 24 | const sdk = new OpenPanel(options); |
| 25 | const { ip } = getClientIpFromHeaders(req.headers); |
| 26 | if (ip) { |
| 27 | sdk.api.addHeader('openpanel-client-ip', ip); |
| 28 | } |
| 29 | if (req.headers['user-agent']) { |
| 30 | sdk.api.addHeader('user-agent', req.headers['user-agent'] as string); |
| 31 | } |
| 32 | |
| 33 | if (options.trackRequest?.(req.url)) { |
| 34 | const profileId = options.getProfileId |
| 35 | ? options.getProfileId(req) |
| 36 | : undefined; |
| 37 | sdk.track('request', { |
| 38 | url: req.url, |
| 39 | method: req.method, |
| 40 | query: req.query, |
| 41 | profileId, |
| 42 | }); |
| 43 | } |
| 44 | |
| 45 | req.op = sdk; |
| 46 | |
| 47 | return next(); |
| 48 | }; |
| 49 | } |
nothing calls this directly
no test coverage detected