Skip to content

Commit 0ee71bd

Browse files
hgiasacofrobots
authored andcommitted
fix: use originalUrl for Express middleware's request url (#476)
Fixes: #472
1 parent afe89de commit 0ee71bd

File tree

3 files changed

+17
-14
lines changed

3 files changed

+17
-14
lines changed

src/middleware/express/make-http-request.ts

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,14 +18,18 @@ import * as http from 'http';
1818

1919
import {StackdriverHttpRequest} from '../../http-request';
2020

21+
export interface ServerRequest extends http.IncomingMessage {
22+
originalUrl: string;
23+
}
24+
2125
export function makeHttpRequestData(
22-
req: http.IncomingMessage,
26+
req: ServerRequest,
2327
res: http.ServerResponse,
2428
latencyMilliseconds: number
2529
): StackdriverHttpRequest {
2630
return {
2731
status: res.statusCode,
28-
requestUrl: req.url,
32+
requestUrl: req.originalUrl,
2933
requestMethod: req.method,
3034
userAgent: req.headers['user-agent'],
3135
responseSize:

src/middleware/express/make-middleware.ts

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -18,10 +18,10 @@ import * as http from 'http';
1818
import onFinished = require('on-finished');
1919
import {getOrInjectContext, makeHeaderWrapper} from '../context';
2020

21-
import {makeHttpRequestData} from './make-http-request';
21+
import {makeHttpRequestData, ServerRequest} from './make-http-request';
2222
import {StackdriverHttpRequest} from '../../http-request';
2323

24-
interface AnnotatedRequestType<LoggerType> extends http.IncomingMessage {
24+
interface AnnotatedRequestType<LoggerType> extends ServerRequest {
2525
log: LoggerType;
2626
}
2727

@@ -46,11 +46,7 @@ export function makeMiddleware<LoggerType>(
4646
makeChildLogger: (trace: string) => LoggerType,
4747
emitRequestLog?: (httpRequest: StackdriverHttpRequest, trace: string) => void
4848
) {
49-
return (
50-
req: http.IncomingMessage,
51-
res: http.ServerResponse,
52-
next: Function
53-
) => {
49+
return (req: ServerRequest, res: http.ServerResponse, next: Function) => {
5450
// TODO(ofrobots): use high-resolution timer.
5551
const requestStartMs = Date.now();
5652

test/middleware/express/test-make-http-request.ts

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -15,31 +15,34 @@
1515
*/
1616

1717
import * as assert from 'assert';
18-
import {IncomingMessage, ServerResponse} from 'http';
19-
import {makeHttpRequestData} from '../../../src/middleware/express/make-http-request';
18+
import {ServerResponse} from 'http';
19+
import {
20+
makeHttpRequestData,
21+
ServerRequest,
22+
} from '../../../src/middleware/express/make-http-request';
2023

2124
describe('middleware/express/make-http-request', () => {
2225
it('should convert latency to proto Duration', () => {
2326
const fakeRequest = {headers: {}};
2427
const fakeResponse = {};
2528

2629
const h1 = makeHttpRequestData(
27-
fakeRequest as IncomingMessage,
30+
fakeRequest as ServerRequest,
2831
fakeResponse as ServerResponse,
2932
1003
3033
);
3134
assert.deepStrictEqual(h1.latency, {seconds: 1, nanos: 3e6});
3235

3336
const h2 = makeHttpRequestData(
34-
fakeRequest as IncomingMessage,
37+
fakeRequest as ServerRequest,
3538
fakeResponse as ServerResponse,
3639
9003.1
3740
);
3841
assert.deepStrictEqual(h2.latency, {seconds: 9, nanos: 3.1e6});
3942

4043
// Make sure we nanos is uint32.
4144
const h3 = makeHttpRequestData(
42-
fakeRequest as IncomingMessage,
45+
fakeRequest as ServerRequest,
4346
fakeResponse as ServerResponse,
4447
1.0000000001
4548
);

0 commit comments

Comments
 (0)