Issue
I have this request that while hasProcessado == true
performs 10 more requests and issues the last, if it fails 3 more requests are made.
But when I make the last request I need to notify the backend with a different header
My request:
public getProfitability(): Observable<Profitability> {
let result = this.http.get<Profitability>(this.configService.generateNewUrl(`${environment.api.newEndpoints.profitability}`), {headers: this.configService.concatenateHeaders()})
return result
.pipe(
concatMap(res => iif(() => res.hasProcessed,
of(res),
interval(500).pipe(
take(10),
concatMap(() => result),
tap(result => console.log(result)),
)
)),
retryWhen(
error =>
error.pipe(
tap(() => console.log("error occurred getProfitability() ")),
delay(500),
take(3),
)
),
shareReplay(1),
last()
);
}
I would like to notify the backend with a parameter in the header pullingOk = true
Something like that:
private pullingPerfilInvestidor(): Observable<PerfilInvestidor> {
let result = this.http.get<PerfilInvestidor>(this.configService.gerarUrlNovo(`${environment.api.endpointsNovos.obterPerfil}`), {headers: this.configService.concatenarHeaders()})
return result
.pipe(
concatMap(res => iif(() => !res.hasProcessado,
of(res),
interval(500).pipe(
take(10),
concatMap(() => result),
// tap(result => console.log(result)),
)
)),
retryWhen(
error =>
error.pipe(
tap(() => console.log("error occurred ")),
delay(500),
take(3),
)
),
shareReplay(1),
last()
return this.http.get<Profitability>(this.configService.generateNewUrl(`${environment.api.newEndpoints.profitability}`), {headers: this.configService.paramOk())})
);
}
Solution
Create an interceptor to resolve this issue
export class PullingInterceptor implements HttpInterceptor {
constructor() { }
public countRequest: number = 0;
intercept(request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
if (request.url.includes('yourURL')) {
this.countRequest = this.countRequest + 1;
if (this.countRequest == 10) {
const newRequest = request.clone({
setHeaders: {
'your-header': 'abc'
}
});
return next.handle(newRequest);
}
return next.handle(request);
}
return next.handle(request);
}
}
Answered By - chewie
0 comments:
Post a Comment
Note: Only a member of this blog may post a comment.