Skip to content

Commit 20c79fd

Browse files
committed
fix(interceptor): Fixed issue with incorrect request numbers
1 parent 538bd4a commit 20c79fd

File tree

1 file changed

+14
-13
lines changed

1 file changed

+14
-13
lines changed

src/interceptor-service.ts

Lines changed: 14 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -81,7 +81,8 @@ export class InterceptorService extends Http {
8181
.build();
8282

8383
return Observable.create((observer: Subscriber<Response>) => {
84-
const subscription = this.httpRequest(request).subscribe(
84+
const requestNum = this.requestNum;
85+
const subscription = this.httpRequest(request, requestNum).subscribe(
8586
(response: Response) => observer.next(response),
8687
(e: Error) => observer.error(e),
8788
() => observer.complete()
@@ -91,7 +92,7 @@ export class InterceptorService extends Http {
9192
for (let index = this.interceptors.length - 1; index >= 0; index--) {
9293
const interceptor = this.interceptors[index];
9394
if (interceptor.onUnsubscribe !== undefined) {
94-
interceptor.onUnsubscribe(index, url, options, this.requestNum);
95+
interceptor.onUnsubscribe(index, url, options, requestNum);
9596
}
9697
}
9798
});
@@ -187,8 +188,8 @@ export class InterceptorService extends Http {
187188
}
188189

189190
/** Private functions **/
190-
private httpRequest(request: InterceptorRequest): Observable<Response> {
191-
return this.runBeforeInterceptors(request)
191+
private httpRequest(request: InterceptorRequest, requestNum: number): Observable<Response> {
192+
return this.runBeforeInterceptors(request, requestNum)
192193
.flatMap<InterceptorRequest, InterceptorResponseWrapper>((transformedRequest: InterceptorRequest, _: number) => {
193194
console.log(`Received request`, transformedRequest);
194195
const transformedRequestInternal = <InterceptorRequestInternal>transformedRequest;
@@ -230,7 +231,7 @@ export class InterceptorService extends Http {
230231
});
231232
})
232233
.flatMap((responseWrapper: InterceptorResponseWrapper, index: number) => {
233-
return this.runAfterInterceptors(responseWrapper);
234+
return this.runAfterInterceptors(responseWrapper, requestNum);
234235
})
235236
.flatMap((responseWrapper: InterceptorResponseWrapper, index: number) => {
236237
if (!responseWrapper.response) {
@@ -246,7 +247,7 @@ export class InterceptorService extends Http {
246247
});
247248
}
248249

249-
private runBeforeInterceptors(params: InterceptorRequest): Observable<InterceptorRequest> {
250+
private runBeforeInterceptors(params: InterceptorRequest, requestNum: number): Observable<InterceptorRequest> {
250251
let request$: Observable<InterceptorRequest> = Observable.of(params);
251252

252253
for (let index = 0; index < this.interceptors.length; index++) {
@@ -269,7 +270,7 @@ export class InterceptorService extends Http {
269270
if (interceptor.beforeRequest !== undefined) {
270271
try {
271272
console.log('Invoking beforeRequest on', interceptor);
272-
const processedRequest = interceptor.beforeRequest(request, index, this.requestNum);
273+
const processedRequest = interceptor.beforeRequest(request, index, requestNum);
273274
let processedRequest$: Observable<InterceptorRequest>;
274275

275276
if (!processedRequest) { // if no request is returned; just proceed with the original request
@@ -300,7 +301,7 @@ export class InterceptorService extends Http {
300301
return request$;
301302
}
302303

303-
private runAfterInterceptors(responseWrapper: InterceptorResponseWrapper): Observable<InterceptorResponseWrapper> {
304+
private runAfterInterceptors(responseWrapper: InterceptorResponseWrapper, requestNum: number): Observable<InterceptorResponseWrapper> {
304305
let responseWrapper$: Observable<InterceptorResponseWrapper> = Observable.of(responseWrapper);
305306

306307
let startFrom: number;
@@ -327,7 +328,7 @@ export class InterceptorService extends Http {
327328
if (transformedResponseWrapper.forceRequestCompletion) {
328329
if (interceptor.onForceCompleteOrForceReturn !== undefined) {
329330
console.log('Invoking onForceCompleteOrForceReturn on', interceptor);
330-
interceptor.onForceCompleteOrForceReturn(transformedResponseWrapper, index, this.requestNum);
331+
interceptor.onForceCompleteOrForceReturn(transformedResponseWrapper, index, requestNum);
331332
}
332333
if (index === 0) { // complete the observable, since this is the first interceptor (last in the response chain)
333334
return Observable.empty();
@@ -337,7 +338,7 @@ export class InterceptorService extends Http {
337338
} else if (transformedResponseWrapper.forceReturnResponse) {
338339
if (interceptor.onForceCompleteOrForceReturn !== undefined) {
339340
console.log('Invoking onForceCompleteOrForceReturn on', interceptor);
340-
interceptor.onForceCompleteOrForceReturn(transformedResponseWrapper, index, this.requestNum);
341+
interceptor.onForceCompleteOrForceReturn(transformedResponseWrapper, index, requestNum);
341342
}
342343
return Observable.of(transformedResponseWrapper);
343344
}
@@ -347,16 +348,16 @@ export class InterceptorService extends Http {
347348
if (transformedResponseWrapper.err) {
348349
if (interceptor.onErr !== undefined) {
349350
console.log('Invoking onErr on', interceptor);
350-
processedResponse = interceptor.onErr(transformedResponseWrapper, index, this.requestNum);
351+
processedResponse = interceptor.onErr(transformedResponseWrapper, index, requestNum);
351352
}
352353
} else if (transformedResponseWrapper.isShortCircuited()) {
353354
if (interceptor.onShortCircuit !== undefined) {
354355
console.log('Invoking onShortCircuit on', interceptor);
355-
processedResponse = interceptor.onShortCircuit(transformedResponseWrapper, index, this.requestNum);
356+
processedResponse = interceptor.onShortCircuit(transformedResponseWrapper, index, requestNum);
356357
}
357358
} else if (interceptor.onResponse !== undefined) {
358359
console.log('Invoking onResponse on', interceptor);
359-
processedResponse = interceptor.onResponse(transformedResponseWrapper, index, this.requestNum);
360+
processedResponse = interceptor.onResponse(transformedResponseWrapper, index, requestNum);
360361
}
361362

362363
let procesedResponseWrapper$: Observable<InterceptorResponseWrapper>;

0 commit comments

Comments
 (0)