UNPKG

@c8y/ngx-components

Version:

Angular modules for Cumulocity IoT applications

31 lines 4.88 kB
import { from } from 'rxjs'; import { HttpHandler } from './interceptor.model'; export class HttpInterceptHandler extends HttpHandler { constructor(interceptor, nextHandler) { super(); this.interceptor = interceptor; this.nextHandler = nextHandler; } handle(req) { return this.interceptor.intercept(req, this.nextHandler); } } export class HttpRequestHandler extends HttpHandler { constructor(fetch, apiService) { super(); this.fetch = fetch; this.apiService = apiService; } handle(req) { const { options, url } = req; const { method } = options; this.apiService?.onStart({ method, options, url }); let fetchPromise = this.fetch(url, options); if (typeof options.responseInterceptor === 'function') { fetchPromise = fetchPromise.then(options.responseInterceptor); } fetchPromise.then((response) => this.apiService?.onFinish({ method, options, url, response }), (response) => this.apiService?.onFinish({ method, options, url, response })); return from(fetchPromise); } } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHR0cC1oYW5kbGVyLm1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vYXBpL2h0dHAtaGFuZGxlci5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQWMsSUFBSSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRXhDLE9BQU8sRUFBRSxXQUFXLEVBQW1CLE1BQU0scUJBQXFCLENBQUM7QUFFbkUsTUFBTSxPQUFPLG9CQUFxQixTQUFRLFdBQVc7SUFDbkQsWUFBc0IsV0FBNEIsRUFBWSxXQUF3QjtRQUNwRixLQUFLLEVBQUUsQ0FBQztRQURZLGdCQUFXLEdBQVgsV0FBVyxDQUFpQjtRQUFZLGdCQUFXLEdBQVgsV0FBVyxDQUFhO0lBRXRGLENBQUM7SUFFRCxNQUFNLENBQUMsR0FBWTtRQUNqQixPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDM0QsQ0FBQztDQUNGO0FBT0QsTUFBTSxPQUFPLGtCQUFtQixTQUFRLFdBQVc7SUFDakQsWUFBc0IsS0FBMkIsRUFBWSxVQUFrQztRQUM3RixLQUFLLEVBQUUsQ0FBQztRQURZLFVBQUssR0FBTCxLQUFLLENBQXNCO1FBQVksZUFBVSxHQUFWLFVBQVUsQ0FBd0I7SUFFL0YsQ0FBQztJQUVELE1BQU0sQ0FBQyxHQUFZO1FBQ2pCLE1BQU0sRUFBRSxPQUFPLEVBQUUsR0FBRyxFQUFFLEdBQUcsR0FBRyxDQUFDO1FBQzdCLE1BQU0sRUFBRSxNQUFNLEVBQUUsR0FBRyxPQUFPLENBQUM7UUFDM0IsSUFBSSxDQUFDLFVBQVUsRUFBRSxPQUFPLENBQUMsRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUM7UUFDbkQsSUFBSSxZQUFZLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFDNUMsSUFBSSxPQUFPLE9BQU8sQ0FBQyxtQkFBbUIsS0FBSyxVQUFVLEVBQUUsQ0FBQztZQUN0RCxZQUFZLEdBQUcsWUFBWSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsbUJBQW1CLENBQUMsQ0FBQztRQUNoRSxDQUFDO1FBQ0QsWUFBWSxDQUFDLElBQUksQ0FDZixDQUFDLFFBQXdCLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsUUFBUSxDQUFDLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFFLENBQUMsRUFDM0YsQ0FBQyxRQUF3QixFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLFFBQVEsQ0FBQyxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsR0FBRyxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQzVGLENBQUM7UUFDRixPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUM1QixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBcGlDYWxsIH0gZnJvbSAnLi9hcGkubW9kZWwnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgZnJvbSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgRmV0Y2hDbGllbnQsIElGZXRjaFJlc3BvbnNlIH0gZnJvbSAnQGM4eS9jbGllbnQnO1xuaW1wb3J0IHsgSHR0cEhhbmRsZXIsIEh0dHBJbnRlcmNlcHRvciB9IGZyb20gJy4vaW50ZXJjZXB0b3IubW9kZWwnO1xuXG5leHBvcnQgY2xhc3MgSHR0cEludGVyY2VwdEhhbmRsZXIgZXh0ZW5kcyBIdHRwSGFuZGxlciB7XG4gIGNvbnN0cnVjdG9yKHByb3RlY3RlZCBpbnRlcmNlcHRvcjogSHR0cEludGVyY2VwdG9yLCBwcm90ZWN0ZWQgbmV4dEhhbmRsZXI6IEh0dHBIYW5kbGVyKSB7XG4gICAgc3VwZXIoKTtcbiAgfVxuXG4gIGhhbmRsZShyZXE6IEFwaUNhbGwpOiBPYnNlcnZhYmxlPElGZXRjaFJlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuaW50ZXJjZXB0b3IuaW50ZXJjZXB0KHJlcSwgdGhpcy5uZXh0SGFuZGxlcik7XG4gIH1cbn1cblxuZXhwb3J0IGludGVyZmFjZSBSZXF1ZXN0U3RhcnRBbmRGaW5pc2gge1xuICBvblN0YXJ0KHJlcTogQXBpQ2FsbCk6IHZvaWQ7XG4gIG9uRmluaXNoKHJlczogQXBpQ2FsbCk6IHZvaWQ7XG59XG5cbmV4cG9ydCBjbGFzcyBIdHRwUmVxdWVzdEhhbmRsZXIgZXh0ZW5kcyBIdHRwSGFuZGxlciB7XG4gIGNvbnN0cnVjdG9yKHByb3RlY3RlZCBmZXRjaDogRmV0Y2hDbGllbnRbJ2ZldGNoJ10sIHByb3RlY3RlZCBhcGlTZXJ2aWNlPzogUmVxdWVzdFN0YXJ0QW5kRmluaXNoKSB7XG4gICAgc3VwZXIoKTtcbiAgfVxuXG4gIGhhbmRsZShyZXE6IEFwaUNhbGwpOiBPYnNlcnZhYmxlPElGZXRjaFJlc3BvbnNlPiB7XG4gICAgY29uc3QgeyBvcHRpb25zLCB1cmwgfSA9IHJlcTtcbiAgICBjb25zdCB7IG1ldGhvZCB9ID0gb3B0aW9ucztcbiAgICB0aGlzLmFwaVNlcnZpY2U/Lm9uU3RhcnQoeyBtZXRob2QsIG9wdGlvbnMsIHVybCB9KTtcbiAgICBsZXQgZmV0Y2hQcm9taXNlID0gdGhpcy5mZXRjaCh1cmwsIG9wdGlvbnMpO1xuICAgIGlmICh0eXBlb2Ygb3B0aW9ucy5yZXNwb25zZUludGVyY2VwdG9yID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICBmZXRjaFByb21pc2UgPSBmZXRjaFByb21pc2UudGhlbihvcHRpb25zLnJlc3BvbnNlSW50ZXJjZXB0b3IpO1xuICAgIH1cbiAgICBmZXRjaFByb21pc2UudGhlbihcbiAgICAgIChyZXNwb25zZTogSUZldGNoUmVzcG9uc2UpID0+IHRoaXMuYXBpU2VydmljZT8ub25GaW5pc2goeyBtZXRob2QsIG9wdGlvbnMsIHVybCwgcmVzcG9uc2UgfSksXG4gICAgICAocmVzcG9uc2U6IElGZXRjaFJlc3BvbnNlKSA9PiB0aGlzLmFwaVNlcnZpY2U/Lm9uRmluaXNoKHsgbWV0aG9kLCBvcHRpb25zLCB1cmwsIHJlc3BvbnNlIH0pXG4gICAgKTtcbiAgICByZXR1cm4gZnJvbShmZXRjaFByb21pc2UpO1xuICB9XG59XG4iXX0=