UNPKG

ngx-http-client-service

Version:

<!-- ALL-CONTRIBUTORS-BADGE:START - Do not remove or modify this section --> [![All Contributors](https://img.shields.io/badge/all_contributors-1-orange.svg?style=flat-square)](#contributors-) <!-- ALL-CONTRIBUTORS-BADGE:END -->

137 lines 18.5 kB
import * as tslib_1 from "tslib"; import { Injectable } from '@angular/core'; import { HttpClient } from '@angular/common/http'; import { HttpOptionsService } from '../http-options/http-options.service'; import { ApiPathService } from '../api-path/api-path.service'; import * as i0 from "@angular/core"; import * as i1 from "@angular/common/http"; import * as i2 from "../http-options/http-options.service"; import * as i3 from "../api-path/api-path.service"; /** * @description Injectable Http Client Service */ let NgxHttpClientService = /** NgxHttpClientService Library where all reusable and repeated functionalities can be managed * It can contains common methods and common methods related params. */ class NgxHttpClientService { /** * @description Creates an instance of http client service. * @param httpClient - an instance of HttpClient * @param httpOptionsService - an instance of HttpOptionsService */ constructor(httpClient, httpOptionsService, apiPathService) { this.httpClient = httpClient; this.httpOptionsService = httpOptionsService; this.apiPathService = apiPathService; } /** * @description will expose get method of http client. * @param pathParams contains path parameters of type string array * @param HttpOptions contains parameter of type HttpOptions. */ get(pathParams, httpOptions) { const apiUrl = this.apiPathService.createApiPath(pathParams); const options = this.httpOptionsService.appendHttpOptions(httpOptions); return this.httpClient.get(apiUrl, options); } /** * @description will expose post method of http client. * @param pathParams contains path parameters of type string array * @param HttpOptions contains parameter of type HttpOptions. * @param body contains parameter for http post body */ post(pathParams, body, httpOptions) { const apiUrl = this.apiPathService.createApiPath(pathParams); const options = this.httpOptionsService.appendHttpOptions(httpOptions); return this.httpClient.post(apiUrl, body, options); } /** * @description will expose put method of http client. * @param pathParams contains path parameters of type string array * @param HttpOptions contains parameter of type HttpOptions. * @param body contains parameter for http put body */ put(pathParams, body, httpOptions) { const apiUrl = this.apiPathService.createApiPath(pathParams); const options = this.httpOptionsService.appendHttpOptions(httpOptions); return this.httpClient.put(apiUrl, body, options); } /** * @description will expose delete method of http client. * @param pathParams contains path parameters of type string array * @param HttpOptions contains parameter of type HttpOptions. */ delete(pathParams, httpOptions) { const apiUrl = this.apiPathService.createApiPath(pathParams); const options = this.httpOptionsService.appendHttpOptions(httpOptions); return this.httpClient.delete(apiUrl, options); } /** * @description will expose request method of http client. * @param method contains the method parameter of type string. * @param pathParams contains path parameters of type string array. * @param HttpOptions contains parameter of type HttpOptions. */ request(method, pathParams, httpOptions) { const apiUrl = this.apiPathService.createApiPath(pathParams); const options = this.httpOptionsService.appendHttpOptions(httpOptions); return this.httpClient.request(method, apiUrl, options); } /** * @description will expose head method of http client. * @param pathParams contains path parameters of type string array. * @param HttpOptions contains parameter of type HttpOptions. */ head(pathParams, httpOptions) { const apiUrl = this.apiPathService.createApiPath(pathParams); const options = this.httpOptionsService.appendHttpOptions(httpOptions); return this.httpClient.head(apiUrl, options); } /** * @description will expose jsonp method of http client. * @param pathParams contains path parameters of type string array. * @param callbackFn contains parameter of type string. */ jsonp(pathParams, callbackFn) { const apiUrl = this.apiPathService.createApiPath(pathParams); return this.httpClient.jsonp(apiUrl, callbackFn); } /** * @description will expose options method of http client. * @param pathParams contains path parameters of type string array. * @param HttpOptions contains parameter of type HttpOptions. */ options(pathParams, httpOptions) { const apiUrl = this.apiPathService.createApiPath(pathParams); const options = this.httpOptionsService.appendHttpOptions(httpOptions); return this.httpClient.options(apiUrl, options); } /** * @description will expose patch method of http client. * @param pathParams contains path parameters of type string array. * @param body of type any. * @param HttpOptions contains parameter of type HttpOptions. */ patch(pathParams, body, httpOptions) { const apiUrl = this.apiPathService.createApiPath(pathParams); const options = this.httpOptionsService.appendHttpOptions(httpOptions); return this.httpClient.patch(apiUrl, body, options); } }; NgxHttpClientService.ctorParameters = () => [ { type: HttpClient }, { type: HttpOptionsService }, { type: ApiPathService } ]; NgxHttpClientService.ngInjectableDef = i0.ɵɵdefineInjectable({ factory: function NgxHttpClientService_Factory() { return new NgxHttpClientService(i0.ɵɵinject(i1.HttpClient), i0.ɵɵinject(i2.HttpOptionsService), i0.ɵɵinject(i3.ApiPathService)); }, token: NgxHttpClientService, providedIn: "root" }); NgxHttpClientService = tslib_1.__decorate([ Injectable({ providedIn: 'root' }) /** NgxHttpClientService Library where all reusable and repeated functionalities can be managed * It can contains common methods and common methods related params. */ ], NgxHttpClientService); export { NgxHttpClientService }; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LWh0dHAtY2xpZW50LnNlcnZpY2UuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9uZ3gtaHR0cC1jbGllbnQtc2VydmljZS8iLCJzb3VyY2VzIjpbImxpYi9zZXJ2aWNlcy9uZ3gtaHR0cC1jbGllbnQvbmd4LWh0dHAtY2xpZW50LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBRTFFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQzs7Ozs7QUFHOUQ7O0dBRUc7QUFRSCxJQUFhLG9CQUFvQjtBQUhqQzs7R0FFRztBQUNILE1BQWEsb0JBQW9CO0lBRS9COzs7O09BSUc7SUFDSCxZQUNVLFVBQXNCLEVBQ3RCLGtCQUFzQyxFQUN0QyxjQUE4QjtRQUY5QixlQUFVLEdBQVYsVUFBVSxDQUFZO1FBQ3RCLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBb0I7UUFDdEMsbUJBQWMsR0FBZCxjQUFjLENBQWdCO0lBQ3BDLENBQUM7SUFFTDs7OztPQUlHO0lBQ0ksR0FBRyxDQUFDLFVBQW9CLEVBQUUsV0FBeUI7UUFDeEQsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxhQUFhLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDN0QsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLGlCQUFpQixDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ3ZFLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsTUFBTSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQzlDLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNJLElBQUksQ0FBQyxVQUFvQixFQUFFLElBQVMsRUFBRSxXQUF5QjtRQUNwRSxNQUFNLE1B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TSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsYUFBYSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQzdELE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxpQkFBaUIsQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUN2RSxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLE1BQU0sRUFBRSxJQUFJLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDdEQsQ0FBQztDQUNGLENBQUE7O1lBMUd1QixVQUFVO1lBQ0Ysa0JBQWtCO1lBQ3RCLGNBQWM7OztBQVY3QixvQkFBb0I7SUFQaEMsVUFBVSxDQUFDO1FBQ1YsVUFBVSxFQUFFLE1BQU07S0FDbkIsQ0FBQztJQUVGOztPQUVHO0dBQ1Usb0JBQW9CLENBa0hoQztTQWxIWSxvQkFBb0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEh0dHBDbGllbnQgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7IEh0dHBPcHRpb25zU2VydmljZSB9IGZyb20gJy4uL2h0dHAtb3B0aW9ucy9odHRwLW9wdGlvbnMuc2VydmljZSc7XHJcbmltcG9ydCB7IEh0dHBPcHRpb25zIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2h0dHAtb3B0aW9ucy5tb2RlbCc7XHJcbmltcG9ydCB7IEFwaVBhdGhTZXJ2aWNlIH0gZnJvbSAnLi4vYXBpLXBhdGgvYXBpLXBhdGguc2VydmljZSc7XHJcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcclxuXHJcbi8qKlxyXG4gKiBAZGVzY3JpcHRpb24gSW5qZWN0YWJsZSBIdHRwIENsaWVudCBTZXJ2aWNlXHJcbiAqL1xyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXHJcbn0pXHJcblxyXG4vKiogTmd4SHR0cENsaWVudFNlcnZpY2UgTGlicmFyeSB3aGVyZSBhbGwgcmV1c2FibGUgYW5kIHJlcGVhdGVkIGZ1bmN0aW9uYWxpdGllcyBjYW4gYmUgbWFuYWdlZFxyXG4gKiBJdCBjYW4gY29udGFpbnMgY29tbW9uIG1ldGhvZHMgYW5kIGNvbW1vbiBtZXRob2RzIHJlbGF0ZWQgcGFyYW1zLlxyXG4gKi9cclxuZXhwb3J0IGNsYXNzIE5neEh0dHBDbGllbnRTZXJ2aWNlIHtcclxuXHJcbiAgLyoqXHJcbiAgICogQGRlc2NyaXB0aW9uIENyZWF0ZXMgYW4gaW5zdGFuY2Ugb2YgaHR0cCBjbGllbnQgc2VydmljZS5cclxuICAgKiBAcGFyYW0gaHR0cENsaWVudCAtIGFuIGluc3RhbmNlIG9mIEh0dHBDbGllbnRcclxuICAgKiBAcGFyYW0gaHR0cE9wdGlvbnNTZXJ2aWNlIC0gYW4gaW5zdGFuY2Ugb2YgSHR0cE9wdGlvbnNTZXJ2aWNlXHJcbiAgICovXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIGh0dHBDbGllbnQ6IEh0dHBDbGllbnQsXHJcbiAgICBwcml2YXRlIGh0dHBPcHRpb25zU2VydmljZTogSHR0cE9wdGlvbnNTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBhcGlQYXRoU2VydmljZTogQXBpUGF0aFNlcnZpY2VcclxuICApIHsgfVxyXG5cclxuICAvKipcclxuICAgKiBAZGVzY3JpcHRpb24gd2lsbCBleHBvc2UgZ2V0IG1ldGhvZCBvZiBodHRwIGNsaWVudC5cclxuICAgKiBAcGFyYW0gcGF0aFBhcmFtcyBjb250YWlucyBwYXRoIHBhcmFtZXRlcnMgb2YgdHlwZSBzdHJpbmcgYXJyYXlcclxuICAgKiBAcGFyYW0gSHR0cE9wdGlvbnMgY29udGFpbnMgcGFyYW1ldGVyIG9mIHR5cGUgSHR0cE9wdGlvbnMuXHJcbiAgICovXHJcbiAgcHVibGljIGdldChwYXRoUGFyYW1zOiBzdHJpbmdbXSwgaHR0cE9wdGlvbnM/OiBIdHRwT3B0aW9ucyk6IE9ic2VydmFibGU8b2JqZWN0PiB7XHJcbiAgICBjb25zdCBhcGlVcmwgPSB0aGlzLmFwaVBhdGhTZXJ2aWNlLmNyZWF0ZUFwaVBhdGgocGF0aFBhcmFtcyk7XHJcbiAgICBjb25zdCBvcHRpb25zID0gdGhpcy5odHRwT3B0aW9uc1NlcnZpY2UuYXBwZW5kSHR0cE9wdGlvbnMoaHR0cE9wdGlvbnMpO1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cENsaWVudC5nZXQoYXBpVXJsLCBvcHRpb25zKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEBkZXNjcmlwdGlvbiB3aWxsIGV4cG9zZSBwb3N0IG1ldGhvZCBvZiBodHRwIGNsaWVudC5cclxuICAgKiBAcGFyYW0gcGF0aFBhcmFtcyBjb250YWlucyBwYXRoIHBhcmFtZXRlcnMgb2YgdHlwZSBzdHJpbmcgYXJyYXlcclxuICAgKiBAcGFyYW0gSHR0cE9wdGlvbnMgY29udGFpbnMgcGFyYW1ldGVyIG9mIHR5cGUgSHR0cE9wdGlvbnMuXHJcbiAgICogQHBhcmFtIGJvZHkgY29udGFpbnMgcGFyYW1ldGVyIGZvciBodHRwIHBvc3QgYm9keVxyXG4gICAqL1xyXG4gIHB1YmxpYyBwb3N0KHBhdGhQYXJhbXM6IHN0cmluZ1tdLCBib2R5OiBhbnksIGh0dHBPcHRpb25zPzogSHR0cE9wdGlvbnMpOiBPYnNlcnZhYmxlPG9iamVjdD4ge1xyXG4gICAgY29uc3QgYXBpVXJsID0gdGhpcy5hcGlQYXRoU2VydmljZS5jcmVhdGVBcGlQYXRoKHBhdGhQYXJhbXMpO1xyXG4gICAgY29uc3Qgb3B0aW9ucyA9IHRoaXMuaHR0cE9wdGlvbnNTZXJ2aWNlLmFwcGVuZEh0dHBPcHRpb25zKGh0dHBPcHRpb25zKTtcclxuICAgIHJldHVybiB0aGlzLmh0dHBDbGllbnQucG9zdChhcGlVcmwsIGJvZHksIG9wdGlvbnMpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQGRlc2NyaXB0aW9uIHdpbGwgZXhwb3NlIHB1dCBtZXRob2Qgb2YgaHR0cCBjbGllbnQuXHJcbiAgICogQHBhcmFtIHBhdGhQYXJhbXMgY29udGFpbnMgcGF0aCBwYXJhbWV0ZXJzIG9mIHR5cGUgc3RyaW5nIGFycmF5XHJcbiAgICogQHBhcmFtIEh0dHBPcHRpb25zIGNvbnRhaW5zIHBhcmFtZXRlciBvZiB0eXBlIEh0dHBPcHRpb25zLlxyXG4gICAqIEBwYXJhbSBib2R5IGNvbnRhaW5zIHBhcmFtZXRlciBmb3IgaHR0cCBwdXQgYm9keVxyXG4gICAqL1xyXG4gIHB1YmxpYyBwdXQocGF0aFBhcmFtczogc3RyaW5nW10sIGJvZHk6IGFueSwgaHR0cE9wdGlvbnM/OiBIdHRwT3B0aW9ucyk6IE9ic2VydmFibGU8b2JqZWN0PiB7XHJcbiAgICBjb25zdCBhcGlVcmwgPSB0aGlzLmFwaVBhdGhTZXJ2aWNlLmNyZWF0ZUFwaVBhdGgocGF0aFBhcmFtcyk7XHJcbiAgICBjb25zdCBvcHRpb25zID0gdGhpcy5odHRwT3B0aW9uc1NlcnZpY2UuYXBwZW5kSHR0cE9wdGlvbnMoaHR0cE9wdGlvbnMpO1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cENsaWVudC5wdXQoYXBpVXJsLCBib2R5LCBvcHRpb25zKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEBkZXNjcmlwdGlvbiB3aWxsIGV4cG9zZSBkZWxldGUgbWV0aG9kIG9mIGh0dHAgY2xpZW50LlxyXG4gICAqIEBwYXJhbSBwYXRoUGFyYW1zIGNvbnRhaW5zIHBhdGggcGFyYW1ldGVycyBvZiB0eXBlIHN0cmluZyBhcnJheVxyXG4gICAqIEBwYXJhbSBIdHRwT3B0aW9ucyBjb250YWlucyBwYXJhbWV0ZXIgb2YgdHlwZSBIdHRwT3B0aW9ucy5cclxuICAgKi9cclxuICBwdWJsaWMgZGVsZXRlKHBhdGhQYXJhbXM6IHN0cmluZ1tdLCBodHRwT3B0aW9ucz86IEh0dHBPcHRpb25zKTogT2JzZXJ2YWJsZTxvYmplY3Q+IHtcclxuICAgIGNvbnN0IGFwaVVybCA9IHRoaXMuYXBpUGF0aFNlcnZpY2UuY3JlYXRlQXBpUGF0aChwYXRoUGFyYW1zKTtcclxuICAgIGNvbnN0IG9wdGlvbnMgPSB0aGlzLmh0dHBPcHRpb25zU2VydmljZS5hcHBlbmRIdHRwT3B0aW9ucyhodHRwT3B0aW9ucyk7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwQ2xpZW50LmRlbGV0ZShhcGlVcmwsIG9wdGlvbnMpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQGRlc2NyaXB0aW9uIHdpbGwgZXhwb3NlIHJlcXVlc3QgbWV0aG9kIG9mIGh0dHAgY2xpZW50LlxyXG4gICAqIEBwYXJhbSBtZXRob2QgY29udGFpbnMgdGhlIG1ldGhvZCBwYXJhbWV0ZXIgb2YgdHlwZSBzdHJpbmcuXHJcbiAgICogQHBhcmFtIHBhdGhQYXJhbXMgY29udGFpbnMgcGF0aCBwYXJhbWV0ZXJzIG9mIHR5cGUgc3RyaW5nIGFycmF5LlxyXG4gICAqIEBwYXJhbSBIdHRwT3B0aW9ucyBjb250YWlucyBwYXJhbWV0ZXIgb2YgdHlwZSBIdHRwT3B0aW9ucy5cclxuICAgKi9cclxuICBwdWJsaWMgcmVxdWVzdChtZXRob2Q6IHN0cmluZywgcGF0aFBhcmFtczogc3RyaW5nW10sIGh0dHBPcHRpb25zPzogSHR0cE9wdGlvbnMpOiBPYnNlcnZhYmxlPG9iamVjdD4ge1xyXG4gICAgY29uc3QgYXBpVXJsID0gdGhpcy5hcGlQYXRoU2VydmljZS5jcmVhdGVBcGlQYXRoKHBhdGhQYXJhbXMpO1xyXG4gICAgY29uc3Qgb3B0aW9ucyA9IHRoaXMuaHR0cE9wdGlvbnNTZXJ2aWNlLmFwcGVuZEh0dHBPcHRpb25zKGh0dHBPcHRpb25zKTtcclxuICAgIHJldHVybiB0aGlzLmh0dHBDbGllbnQucmVxdWVzdChtZXRob2QsIGFwaVVybCwgb3B0aW9ucyk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBAZGVzY3JpcHRpb24gd2lsbCBleHBvc2UgaGVhZCBtZXRob2Qgb2YgaHR0cCBjbGllbnQuXHJcbiAgICogQHBhcmFtIHBhdGhQYXJhbXMgY29udGFpbnMgcGF0aCBwYXJhbWV0ZXJzIG9mIHR5cGUgc3RyaW5nIGFycmF5LlxyXG4gICAqIEBwYXJhbSBIdHRwT3B0aW9ucyBjb250YWlucyBwYXJhbWV0ZXIgb2YgdHlwZSBIdHRwT3B0aW9ucy5cclxuICAgKi9cclxuICBwdWJsaWMgaGVhZChwYXRoUGFyYW1zOiBzdHJpbmdbXSwgaHR0cE9wdGlvbnM/OiBIdHRwT3B0aW9ucyk6IE9ic2VydmFibGU8b2JqZWN0PiB7XHJcbiAgICBjb25zdCBhcGlVcmwgPSB0aGlzLmFwaVBhdGhTZXJ2aWNlLmNyZWF0ZUFwaVBhdGgocGF0aFBhcmFtcyk7XHJcbiAgICBjb25zdCBvcHRpb25zID0gdGhpcy5odHRwT3B0aW9uc1NlcnZpY2UuYXBwZW5kSHR0cE9wdGlvbnMoaHR0cE9wdGlvbnMpO1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cENsaWVudC5oZWFkKGFwaVVybCwgb3B0aW9ucyk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBAZGVzY3JpcHRpb24gd2lsbCBleHBvc2UganNvbnAgbWV0aG9kIG9mIGh0dHAgY2xpZW50LlxyXG4gICAqIEBwYXJhbSBwYXRoUGFyYW1zIGNvbnRhaW5zIHBhdGggcGFyYW1ldGVycyBvZiB0eXBlIHN0cmluZyBhcnJheS5cclxuICAgKiBAcGFyYW0gY2FsbGJhY2tGbiBjb250YWlucyBwYXJhbWV0ZXIgb2YgdHlwZSBzdHJpbmcuXHJcbiAgICovXHJcbiAgcHVibGljIGpzb25wKHBhdGhQYXJhbXM6IHN0cmluZ1tdLCBjYWxsYmFja0ZuOiBzdHJpbmcpOiBPYnNlcnZhYmxlPG9iamVjdD4ge1xyXG4gICAgY29uc3QgYXBpVXJsID0gdGhpcy5hcGlQYXRoU2VydmljZS5jcmVhdGVBcGlQYXRoKHBhdGhQYXJhbXMpO1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cENsaWVudC5qc29ucChhcGlVcmwsIGNhbGxiYWNrRm4pO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQGRlc2NyaXB0aW9uIHdpbGwgZXhwb3NlIG9wdGlvbnMgbWV0aG9kIG9mIGh0dHAgY2xpZW50LlxyXG4gICAqIEBwYXJhbSBwYXRoUGFyYW1zIGNvbnRhaW5zIHBhdGggcGFyYW1ldGVycyBvZiB0eXBlIHN0cmluZyBhcnJheS5cclxuICAgKiBAcGFyYW0gSHR0cE9wdGlvbnMgY29udGFpbnMgcGFyYW1ldGVyIG9mIHR5cGUgSHR0cE9wdGlvbnMuXHJcbiAgICovXHJcbiAgcHVibGljIG9wdGlvbnMocGF0aFBhcmFtczogc3RyaW5nW10sIGh0dHBPcHRpb25zPzogSHR0cE9wdGlvbnMpOiBPYnNlcnZhYmxlPG9iamVjdD4ge1xyXG4gICAgY29uc3QgYXBpVXJsID0gdGhpcy5hcGlQYXRoU2VydmljZS5jcmVhdGVBcGlQYXRoKHBhdGhQYXJhbXMpO1xyXG4gICAgY29uc3Qgb3B0aW9ucyA9IHRoaXMuaHR0cE9wdGlvbnNTZXJ2aWNlLmFwcGVuZEh0dHBPcHRpb25zKGh0dHBPcHRpb25zKTtcclxuICAgIHJldHVybiB0aGlzLmh0dHBDbGllbnQub3B0aW9ucyhhcGlVcmwsIG9wdGlvbnMpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQGRlc2NyaXB0aW9uIHdpbGwgZXhwb3NlIHBhdGNoIG1ldGhvZCBvZiBodHRwIGNsaWVudC5cclxuICAgKiBAcGFyYW0gcGF0aFBhcmFtcyBjb250YWlucyBwYXRoIHBhcmFtZXRlcnMgb2YgdHlwZSBzdHJpbmcgYXJyYXkuXHJcbiAgICogQHBhcmFtIGJvZHkgb2YgdHlwZSBhbnkuXHJcbiAgICogQHBhcmFtIEh0dHBPcHRpb25zIGNvbnRhaW5zIHBhcmFtZXRlciBvZiB0eXBlIEh0dHBPcHRpb25zLlxyXG4gICAqL1xyXG4gIHB1YmxpYyBwYXRjaChwYXRoUGFyYW1zOiBzdHJpbmdbXSwgYm9keTogYW55LCBodHRwT3B0aW9ucz86IEh0dHBPcHRpb25zKTogT2JzZXJ2YWJsZTxvYmplY3Q+IHtcclxuICAgIGNvbnN0IGFwaVVybCA9IHRoaXMuYXBpUGF0aFNlcnZpY2UuY3JlYXRlQXBpUGF0aChwYXRoUGFyYW1zKTtcclxuICAgIGNvbnN0IG9wdGlvbnMgPSB0aGlzLmh0dHBPcHRpb25zU2VydmljZS5hcHBlbmRIdHRwT3B0aW9ucyhodHRwT3B0aW9ucyk7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwQ2xpZW50LnBhdGNoKGFwaVVybCwgYm9keSwgb3B0aW9ucyk7XHJcbiAgfVxyXG59XHJcbiJdfQ==