fix: use correct request ID header in context
This commit is contained in:
parent
70e6e670f3
commit
1a37662502
4 changed files with 17 additions and 11 deletions
|
|
@ -2,7 +2,7 @@ import { Request, Response, Router } from 'express';
|
|||
import { ContentType } from 'stremio-addon-sdk';
|
||||
import winston from 'winston';
|
||||
import { Source } from '../source';
|
||||
import { contextFromRequest, envIsProd, ImdbId, StreamResolver } from '../utils';
|
||||
import { contextFromRequestAndResponse, envIsProd, ImdbId, StreamResolver } from '../utils';
|
||||
|
||||
export class StreamController {
|
||||
public readonly router: Router;
|
||||
|
|
@ -25,7 +25,7 @@ export class StreamController {
|
|||
const type: ContentType = (req.params['type'] || '') as ContentType;
|
||||
const id: string = req.params['id'] || '';
|
||||
|
||||
const ctx = contextFromRequest(req);
|
||||
const ctx = contextFromRequestAndResponse(req, res);
|
||||
|
||||
this.logger.info(`Search stream for type "${type}" and id "${id}" for ip ${ctx.ip}`, ctx);
|
||||
|
||||
|
|
|
|||
|
|
@ -6,7 +6,7 @@ import winston from 'winston';
|
|||
import { ConfigureController, ManifestController, StreamController } from './controller';
|
||||
import { createExtractors, ExtractorRegistry } from './extractor';
|
||||
import { CineHDPlus, Cuevana, Eurostreaming, Frembed, FrenchCloud, HomeCine, KinoGer, MegaKino, MeineCloud, MostraGuarda, Movix, PrimeWire, Soaper, Source, StreamKiste, VerHdLink, VidSrc, VixSrc } from './source';
|
||||
import { contextFromRequest, envGet, envIsProd, Fetcher, StreamResolver } from './utils';
|
||||
import { contextFromRequestAndResponse, envGet, envIsProd, Fetcher, StreamResolver } from './utils';
|
||||
|
||||
const logger = winston.createLogger({
|
||||
transports: [
|
||||
|
|
@ -83,7 +83,7 @@ addon.get('/', (_req: Request, res: Response) => {
|
|||
});
|
||||
|
||||
addon.get('/health', async (req: Request, res: Response) => {
|
||||
const ctx = contextFromRequest(req);
|
||||
const ctx = contextFromRequestAndResponse(req, res);
|
||||
|
||||
try {
|
||||
const ip = await fetcher.text(ctx, new URL('https://api.ipify.org'), { noCache: true, noProxyHeaders: true });
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
import { Request } from 'express';
|
||||
import { contextFromRequest } from './context';
|
||||
import { Request, Response } from 'express';
|
||||
import { contextFromRequestAndResponse } from './context';
|
||||
|
||||
describe('contextFromRequest', () => {
|
||||
test('with config and ip', () => {
|
||||
|
|
@ -12,8 +12,11 @@ describe('contextFromRequest', () => {
|
|||
ip: '127.0.0.1',
|
||||
params: { config: '{"de":"on"}' },
|
||||
};
|
||||
const res = {
|
||||
getHeader: (name: string) => ({ 'X-Request-ID': 'fake-id' })[name],
|
||||
};
|
||||
|
||||
expect(contextFromRequest(req as unknown as Request)).toMatchSnapshot();
|
||||
expect(contextFromRequestAndResponse(req as unknown as Request, res as unknown as Response)).toMatchSnapshot();
|
||||
});
|
||||
|
||||
test('without config', () => {
|
||||
|
|
@ -25,7 +28,10 @@ describe('contextFromRequest', () => {
|
|||
},
|
||||
params: { },
|
||||
};
|
||||
const res = {
|
||||
getHeader: (name: string) => ({ 'X-Request-ID': 'fake-id' })[name],
|
||||
};
|
||||
|
||||
expect(contextFromRequest(req as unknown as Request)).toMatchSnapshot();
|
||||
expect(contextFromRequestAndResponse(req as unknown as Request, res as unknown as Response)).toMatchSnapshot();
|
||||
});
|
||||
});
|
||||
|
|
|
|||
|
|
@ -1,11 +1,11 @@
|
|||
import { Request } from 'express';
|
||||
import { Request, Response } from 'express';
|
||||
import { Context } from '../types';
|
||||
import { getDefaultConfig } from './config';
|
||||
|
||||
export const contextFromRequest = (req: Request): Context => {
|
||||
export const contextFromRequestAndResponse = (req: Request, res: Response): Context => {
|
||||
return {
|
||||
hostUrl: new URL(`${req.protocol}://${req.host}`),
|
||||
id: req.headers['X-Request-ID'] as string,
|
||||
id: res.getHeader('X-Request-ID') as string,
|
||||
...(req.ip && { ip: req.ip }),
|
||||
config: req.params['config'] ? JSON.parse(req.params['config']) : getDefaultConfig(),
|
||||
};
|
||||
|
|
|
|||
Loading…
Reference in a new issue