Skip to content

Commit 2757d23

Browse files
committed
fix(functionality): Corrected a minor bug
1 parent e82ff16 commit 2757d23

File tree

2 files changed

+18
-22
lines changed

2 files changed

+18
-22
lines changed

src/interceptor-service.ts

Lines changed: 12 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -223,27 +223,27 @@ export class InterceptorService extends Http {
223223
private runBeforeInterceptors(params: InterceptorRequest): Observable<InterceptorRequest> {
224224
let request$: Observable<InterceptorRequest> = Observable.of(params);
225225

226-
for (let i = 0; i < this.interceptors.length; i++) {
227-
const interceptor: Interceptor = this.interceptors[i];
226+
for (let index = 0; index < this.interceptors.length; index++) {
227+
const interceptor: Interceptor = this.interceptors[index];
228228
if (!interceptor.beforeRequest) {
229229
continue;
230230
}
231231

232232
request$ = request$
233-
.flatMap<InterceptorRequest, InterceptorRequest>((request: InterceptorRequest, index: number) => {
233+
.flatMap<InterceptorRequest, InterceptorRequest>((request: InterceptorRequest, currentInterceptorIndex: number) => {
234234
const requestInternalBuilder = InterceptorRequestBuilderInternal.new(request);
235235

236236
if (requestInternalBuilder.getErr() || requestInternalBuilder.getAlreadyShortCircuited()) {
237237
return Observable.of(request);
238238
} else if (requestInternalBuilder.getShortCircuitAtCurrentStep()) {
239239
const requestBuilder = InterceptorRequestBuilderInternal.new(request)
240240
.shortCircuitAtCurrentStep(false)
241-
.shortCircuitTriggeredBy(this.interceptors.length - 1) // since the last interceptor in the chain asked for short circuiting
241+
.shortCircuitTriggeredBy(currentInterceptorIndex - 1) // since the last interceptor requested for short circuit
242242
.alreadyShortCircuited(true);
243243
return Observable.of(requestBuilder.build());
244244
}
245245

246-
const processedRequest = interceptor.beforeRequest(request, index);
246+
const processedRequest = interceptor.beforeRequest(request, currentInterceptorIndex);
247247
let processedRequest$: Observable<InterceptorRequest>;
248248

249249
if (!processedRequest) { // if no request is returned; just proceed with the original request
@@ -257,7 +257,7 @@ export class InterceptorService extends Http {
257257
.catch((err: any, caught: Observable<InterceptorRequest>) => {
258258
const responseBuilder = InterceptorRequestBuilderInternal.new(request)
259259
.err(err)
260-
.errEncounteredAt(i);
260+
.errEncounteredAt(currentInterceptorIndex);
261261
return Observable.of(responseBuilder.build());
262262
});
263263
});
@@ -296,9 +296,9 @@ export class InterceptorService extends Http {
296296
if (interceptor.onForceCompleteOrForceReturn !== undefined) {
297297
interceptor.onForceCompleteOrForceReturn(transformedResponseWrapper, index);
298298
}
299-
if (index === 0) {
299+
if (index === 0) { // complete the observable, since this is the first interceptor (last in the response chain)
300300
return Observable.empty();
301-
} else {
301+
} else { // let `onForceCompleteOrForceReturn` on the interceptors be run
302302
return Observable.of(transformedResponseWrapper);
303303
}
304304
} else if (transformedResponseWrapper.forceReturnResponse) {
@@ -308,14 +308,11 @@ export class InterceptorService extends Http {
308308
return Observable.of(transformedResponseWrapper);
309309
}
310310

311-
let processedResponse: void | InterceptorResponseWrapper | Observable<InterceptorResponseWrapper>;
312-
313-
const invokeErrHandler = transformedResponseWrapper.err && !transformedResponseWrapper.response;
314-
const invokeShortCircuitHandler = transformedResponseWrapper.isShortCircuited() && !transformedResponseWrapper.response;
311+
let processedResponse;
315312

316-
if (invokeErrHandler) {
317-
processedResponse = interceptor.onErr(transformedResponseWrapper);
318-
} else if (invokeShortCircuitHandler) {
313+
if (transformedResponseWrapper.err) {
314+
processedResponse = interceptor.onErr(transformedResponseWrapper, index);
315+
} else if (transformedResponseWrapper.isShortCircuited()) {
319316
processedResponse = interceptor.onShortCircuit(transformedResponseWrapper, index);
320317
} else {
321318
processedResponse = interceptor.onResponse(transformedResponseWrapper, index);
@@ -334,7 +331,6 @@ export class InterceptorService extends Http {
334331
return procesedResponseWrapper$
335332
.catch((err: any, __: Observable<InterceptorResponseWrapper>) => {
336333
const responseBuilder = InterceptorResponseWrapperBuilderInternal.newInternal(index, transformedResponseWrapper)
337-
.response(undefined)
338334
.err(err)
339335
.errEncounteredAt(index)
340336
.errEncounteredInRequestCycle(false);

src/interceptor.ts

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ export interface Interceptor {
2727
*
2828
* Gives the ability to transform the request
2929
*/
30-
beforeRequest?(request: InterceptorRequest, interceptorStep?: number): Observable<InterceptorRequest> | InterceptorRequest | void;
30+
beforeRequest?(request: InterceptorRequest, interceptorStep: number): Observable<InterceptorRequest> | InterceptorRequest | void;
3131

3232
/**
3333
* Invoked once for each of the interceptors in the chain; in the reverse order of chain,\
@@ -48,7 +48,7 @@ export interface Interceptor {
4848
* by looking at the `responseGeneratedByShortCircuitHandler` & `responseGeneratedByErrHandler` flags
4949
*/
5050
onResponse?(response: InterceptorResponseWrapper,
51-
interceptorStep?: number): Observable<InterceptorResponseWrapper> | InterceptorResponseWrapper | void;
51+
interceptorStep: number): Observable<InterceptorResponseWrapper> | InterceptorResponseWrapper | void;
5252

5353
/**
5454
* Invoked once for each of the interceptors in the chain; in the reverse order of chain,\
@@ -61,7 +61,7 @@ export interface Interceptor {
6161
* If no `onShortCircuit(..)` handlers before this handler returns any response, an error will be thrown back to the subscriber
6262
*/
6363
onShortCircuit?(response: InterceptorResponseWrapper,
64-
interceptorStep?: number): Observable<InterceptorResponseWrapper> | InterceptorResponseWrapper | void;
64+
interceptorStep: number): Observable<InterceptorResponseWrapper> | InterceptorResponseWrapper | void;
6565

6666
/**
6767
* Invoked when the flow encounters any error along the interceptor chain.
@@ -72,14 +72,14 @@ export interface Interceptor {
7272
* & the final result would be sent to the subscriber via next(..) callback
7373
* If no `onErr(..)` handlers before this handler returns any response, the error will be thrown back to the subscriber
7474
*/
75-
onErr?(err: any): Observable<InterceptorResponseWrapper> | InterceptorResponseWrapper | void;
75+
onErr?(err: any, interceptorStep: number): Observable<InterceptorResponseWrapper> | InterceptorResponseWrapper | void;
7676

7777
/**
7878
* Invoked when any one in the interceptor chain forces request completion/return response/error
7979
* Use this method to perform opeations that should be performed irrespective of what the interceptors in the chain want
8080
* such as stopping progress bar/logging
8181
*/
82-
onForceCompleteOrForceReturn?(response?: InterceptorResponseWrapper,
83-
interceptorStep?: number): void;
82+
onForceCompleteOrForceReturn?(response: InterceptorResponseWrapper,
83+
interceptorStep: number): void;
8484

8585
}

0 commit comments

Comments
 (0)