UNPKG

@opra/client

Version:

Opra Client package

19 lines (18 loc) 674 B
import { Observable } from 'rxjs'; import { HttpBackend } from './http-backend.js'; export class HttpInterceptorHandler { chain; finalHandler; constructor(interceptors, finalHandler) { this.chain = interceptors.reduceRight((chainTailFn, interceptor) => (initialRequest, handler) => interceptor.intercept(initialRequest, { handle: downstreamRequest => chainTailFn(downstreamRequest, handler), }), chainEnd); this.finalHandler = finalHandler; } handle(initialRequest) { return this.chain(initialRequest, req => this.finalHandler.handle(req)); } } function chainEnd(req, handler) { return handler(req); }