UNPKG

moh-common-lib

Version:

A library of Angular components, services, and styles for B.C. Government Ministry of Health (MoH).

203 lines 14.6 kB
/** * @fileoverview added by tsickle * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ import { catchError, tap } from 'rxjs/operators'; import { UUID } from 'angular2-uuid'; /** * Abstract class for HTTP Service * @abstract */ var /** * Abstract class for HTTP Service * @abstract */ AbstractHttpService = /** @class */ (function () { function AbstractHttpService(http) { this.http = http; this.logHTTPRequestsToConsole = false; } /** * Makes a GET request to the specified URL, using headers and HTTP options specified in their respective methods. * @param url Target URL to make the GET request */ /** * Makes a GET request to the specified URL, using headers and HTTP options specified in their respective methods. * @protected * @template T * @param {?} url Target URL to make the GET request * @param {?=} queryParams * @return {?} */ AbstractHttpService.prototype.get = /** * Makes a GET request to the specified URL, using headers and HTTP options specified in their respective methods. * @protected * @template T * @param {?} url Target URL to make the GET request * @param {?=} queryParams * @return {?} */ function (url, queryParams) { /** * The HTTP request observer with always on error handling * @type {?} */ var httpOpts = this.httpOptions; httpOpts.params = queryParams ? queryParams : undefined; /** @type {?} */ var observable = this.http.get(url, httpOpts); return this.setupRequest(observable); }; /** * @protected * @template T * @param {?} url * @param {?} body * @return {?} */ AbstractHttpService.prototype.post = /** * @protected * @template T * @param {?} url * @param {?} body * @return {?} */ function (url, body) { if (this.logHTTPRequestsToConsole) { console.log('Post Request: ', body); } /** @type {?} */ var observable = this.http.post(url, body, this.httpOptions); return this.setupRequest(observable); }; /** * @protected * @template T * @param {?} observable * @return {?} */ AbstractHttpService.prototype.setupRequest = /** * @protected * @template T * @param {?} observable * @return {?} */ function (observable) { // All failed requests should trigger the abstract method handleError observable = observable.pipe(catchError(this.handleError.bind(this))); // Optionally add console logging if (this.logHTTPRequestsToConsole) { observable = observable.pipe(tap((/** * @param {?} data * @return {?} */ function (data) { return console.log('HTTP Success: ', data); }), (/** * @param {?} error * @return {?} */ function (error) { return console.log('HTTP Error: ', error); }))); } return observable; }; Object.defineProperty(AbstractHttpService.prototype, "httpOptions", { /** The HttpOptions object that Angular takes for GET and POST requests. Used in every HTTP request from this service. */ get: /** * The HttpOptions object that Angular takes for GET and POST requests. Used in every HTTP request from this service. * @protected * @return {?} */ function () { return { headers: this._headers }; }, enumerable: true, configurable: true }); /* Helper function for generating a unique UUID per request for logging. */ /* Helper function for generating a unique UUID per request for logging. */ /** * @protected * @return {?} */ AbstractHttpService.prototype.generateUUID = /* Helper function for generating a unique UUID per request for logging. */ /** * @protected * @return {?} */ function () { return UUID.UUID(); }; /** * Uploads an individual attachment. All you need to do is set the url. * Note: urls often include UUIDs, so this must be an application decision. * * @param relativeUrl URL to hit, must include UUIDs of application and CommonImage * @param attachment CommonImage to upload */ /** * Uploads an individual attachment. All you need to do is set the url. * Note: urls often include UUIDs, so this must be an application decision. * * @protected * @param {?} relativeUrl URL to hit, must include UUIDs of application and CommonImage * @param {?} attachment CommonImage to upload * @return {?} */ AbstractHttpService.prototype.uploadAttachment = /** * Uploads an individual attachment. All you need to do is set the url. * Note: urls often include UUIDs, so this must be an application decision. * * @protected * @param {?} relativeUrl URL to hit, must include UUIDs of application and CommonImage * @param {?} attachment CommonImage to upload * @return {?} */ function (relativeUrl, attachment) { /** @type {?} */ var options = { headers: this._headers, responseType: (/** @type {?} */ ('text')) }; /** @type {?} */ var binary = atob(attachment.fileContent.split(',')[1]); /** @type {?} */ var array = []; for (var i = 0; i < binary.length; i++) { array.push(binary.charCodeAt(i)); } /** @type {?} */ var blob = new Blob([new Uint8Array(array)], { type: attachment.contentType }); return this.http.post(relativeUrl, blob, options); }; return AbstractHttpService; }()); /** * Abstract class for HTTP Service * @abstract */ export { AbstractHttpService }; if (false) { /** * @type {?} * @protected */ AbstractHttpService.prototype.logHTTPRequestsToConsole; /** * The headers to send along with every GET and POST. * @type {?} * @protected */ AbstractHttpService.prototype._headers; /** * @type {?} * @protected */ AbstractHttpService.prototype.http; /** * Handles all failed requests that throw either a server error (400/500) or a client error (e.g. lost internet). * @abstract * @protected * @param {?} error * @return {?} */ AbstractHttpService.prototype.handleError = function (error) { }; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWJzdHJhY3QtYXBpLXNlcnZpY2UuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9tb2gtY29tbW9uLWxpYi8iLCJzb3VyY2VzIjpbImxpYi9zZXJ2aWNlcy9hYnN0cmFjdC1hcGktc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBRUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNqRCxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7OztBQU9yQzs7Ozs7SUFJRSw2QkFBc0IsSUFBZ0I7UUFBaEIsU0FBSSxHQUFKLElBQUksQ0FBWTtRQUY1Qiw2QkFBd0IsR0FBWSxLQUFLLENBQUM7SUFFWCxDQUFDO0lBSzFDOzs7T0FHRzs7Ozs7Ozs7O0lBQ08saUNBQUc7Ozs7Ozs7O0lBQWIsVUFBaUIsR0FBRyxFQUFFLFdBQXdCOzs7OztZQUV0QyxRQUFRLEdBQUcsSUFBSSxDQUFDLFdBQVc7UUFDakMsUUFBUSxDQUFDLE1BQU0sR0FBRyxXQUFXLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDOztZQUNsRCxVQUFVLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLFFBQVEsQ0FBQztRQUMvQyxPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDdkMsQ0FBQzs7Ozs7Ozs7SUFFUyxrQ0FBSTs7Ozs7OztJQUFkLFVBQWtCLEdBQUcsRUFBRSxJQUFJO1FBQ3pCLElBQUksSUFBSSxDQUFDLHdCQUF3QixFQUFFO1lBQ2pDLE9BQU8sQ0FBQyxHQUFHLENBQUUsZ0JBQWdCLEVBQUUsSUFBSSxDQUFFLENBQUM7U0FDdkM7O1lBQ0ssVUFBVSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQztRQUM5RCxPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDdkMsQ0FBQzs7Ozs7OztJQUVTLDBDQUFZOzs7Ozs7SUFBdEIsVUFBMEIsVUFBMkI7UUFDbkQscUVBQXFFO1FBQ3JFLFVBQVUsR0FBRyxVQUFVLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDdEUsaUNBQWlDO1FBQ2pDLElBQUksSUFBSSxDQUFDLHdCQUF3QixFQUFFO1lBQ2pDLFVBQVUsR0FBRyxVQUFVLENBQUMsSUFBSSxDQUFDLEdBQUc7Ozs7WUFDOUIsVUFBQSxJQUFJLElBQUksT0FBQSxPQUFPLENBQUMsR0FBRyxDQUFDLGdCQUFnQixFQUFFLElBQUksQ0FBQyxFQUFuQyxDQUFtQzs7OztZQUMzQyxVQUFBLEtBQUssSUFBSSxPQUFBLE9BQU8sQ0FBQyxHQUFHLENBQUMsY0FBYyxFQUFFLEtBQUssQ0FBQyxFQUFsQyxDQUFrQyxFQUM1QyxDQUFDLENBQUM7U0FDSjtRQUNELE9BQU8sVUFBVSxDQUFDO0lBQ3BCLENBQUM7SUFHRCxzQkFBYyw0Q0FBVztRQUR6Qix5SEFBeUg7Ozs7OztRQUN6SDtZQUNFLE9BQU87Z0JBQ0wsT0FBTyxFQUFFLElBQUksQ0FBQyxRQUFRO2FBQ3ZCLENBQUM7UUFDSixDQUFDOzs7T0FBQTtJQUtELDJFQUEyRTs7Ozs7O0lBQ2pFLDBDQUFZOzs7OztJQUF0QjtRQUNFLE9BQU8sSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ3JCLENBQUM7SUFFRDs7Ozs7O09BTUc7Ozs7Ozs7Ozs7SUFDTyw4Q0FBZ0I7Ozs7Ozs7OztJQUExQixVQUEyQixXQUFtQixFQUFFLFVBQXVCOztZQUMvRCxPQUFPLEdBQUcsRUFBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLFFBQVEsRUFBRSxZQUFZLEVBQUUsbUJBQUEsTUFBTSxFQUFVLEVBQUM7O1lBRWxFLE1BQU0sR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7O1lBQ25ELEtBQUssR0FBRyxFQUFFO1FBQ2hCLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxNQUFNLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO1lBQ3BDLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQ3BDOztZQUNLLElBQUksR0FBRyxJQUFJLElBQUksQ0FBQyxDQUFDLElBQUksVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsRUFBQyxJQUFJLEVBQUUsVUFBVSxDQUFDLFdBQVcsRUFBQyxDQUFDO1FBRTlFLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLElBQUksRUFBRSxPQUFPLENBQUMsQ0FBQztJQUNwRCxDQUFDO0lBRUgsMEJBQUM7QUFBRCxDQUFDLEFBN0VELElBNkVDOzs7Ozs7Ozs7OztJQTNFQyx1REFBb0Q7Ozs7OztJQUtwRCx1Q0FBeUM7Ozs7O0lBSDdCLG1DQUEwQjs7Ozs7Ozs7SUE4Q3RDLGlFQUF5RCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEh0dHBDbGllbnQsIEh0dHBFcnJvclJlc3BvbnNlLCBIdHRwSGVhZGVycywgSHR0cFBhcmFtcyB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBjYXRjaEVycm9yLCB0YXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7IFVVSUQgfSBmcm9tICdhbmd1bGFyMi11dWlkJztcclxuaW1wb3J0IHsgQ29tbW9uSW1hZ2UgfSBmcm9tICcuLi9tb2RlbHMvaW1hZ2VzLm1vZGVsJztcclxuXHJcblxyXG4vKipcclxuICogQWJzdHJhY3QgY2xhc3MgZm9yIEhUVFAgU2VydmljZVxyXG4gKi9cclxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEFic3RyYWN0SHR0cFNlcnZpY2Uge1xyXG5cclxuICBwcm90ZWN0ZWQgbG9nSFRUUFJlcXVlc3RzVG9Db25zb2xlOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByb3RlY3RlZCBodHRwOiBIdHRwQ2xpZW50KSB7fVxyXG5cclxuICAvKiogVGhlIGhlYWRlcnMgdG8gc2VuZCBhbG9uZyB3aXRoIGV2ZXJ5IEdFVCBhbmQgUE9TVC4gKi9cclxuICBwcm90ZWN0ZWQgYWJzdHJhY3QgX2hlYWRlcnM6IEh0dHBIZWFkZXJzO1xyXG5cclxuICAvKipcclxuICAgKiBNYWtlcyBhIEdFVCByZXF1ZXN0IHRvIHRoZSBzcGVjaWZpZWQgVVJMLCB1c2luZyBoZWFkZXJzIGFuZCBIVFRQIG9wdGlvbnMgc3BlY2lmaWVkIGluIHRoZWlyIHJlc3BlY3RpdmUgbWV0aG9kcy5cclxuICAgKiBAcGFyYW0gdXJsIFRhcmdldCBVUkwgdG8gbWFrZSB0aGUgR0VUIHJlcXVlc3RcclxuICAgKi9cclxuICBwcm90ZWN0ZWQgZ2V0PFQ+KHVybCwgcXVlcnlQYXJhbXM/OiBIdHRwUGFyYW1zKTogT2JzZXJ2YWJsZTxUPiB7XHJcbiAgICAvKiogVGhlIEhUVFAgcmVxdWVzdCBvYnNlcnZlciB3aXRoIGFsd2F5cyBvbiBlcnJvciBoYW5kbGluZyAqL1xyXG4gICAgY29uc3QgaHR0cE9wdHMgPSB0aGlzLmh0dHBPcHRpb25zO1xyXG4gICAgaHR0cE9wdHMucGFyYW1zID0gcXVlcnlQYXJhbXMgPyBxdWVyeVBhcmFtcyA6IHVuZGVmaW5lZDtcclxuICAgIGNvbnN0IG9ic2VydmFibGUgPSB0aGlzLmh0dHAuZ2V0KHVybCwgaHR0cE9wdHMpO1xyXG4gICAgcmV0dXJuIHRoaXMuc2V0dXBSZXF1ZXN0KG9ic2VydmFibGUpO1xyXG4gIH1cclxuXHJcbiAgcHJvdGVjdGVkIHBvc3Q8VD4odXJsLCBib2R5KTogT2JzZXJ2YWJsZTxUPiB7XHJcbiAgICBpZiAodGhpcy5sb2dIVFRQUmVxdWVzdHNUb0NvbnNvbGUpIHtcclxuICAgICAgY29uc29sZS5sb2coICdQb3N0IFJlcXVlc3Q6ICcsIGJvZHkgKTtcclxuICAgIH1cclxuICAgIGNvbnN0IG9ic2VydmFibGUgPSB0aGlzLmh0dHAucG9zdCh1cmwsIGJvZHksIHRoaXMuaHR0cE9wdGlvbnMpO1xyXG4gICAgcmV0dXJuIHRoaXMuc2V0dXBSZXF1ZXN0KG9ic2VydmFibGUpO1xyXG4gIH1cclxuXHJcbiAgcHJvdGVjdGVkIHNldHVwUmVxdWVzdDxUPihvYnNlcnZhYmxlOiBPYnNlcnZhYmxlPGFueT4gKTogT2JzZXJ2YWJsZTxUPiB7XHJcbiAgICAvLyBBbGwgZmFpbGVkIHJlcXVlc3RzIHNob3VsZCB0cmlnZ2VyIHRoZSBhYnN0cmFjdCBtZXRob2QgaGFuZGxlRXJyb3JcclxuICAgIG9ic2VydmFibGUgPSBvYnNlcnZhYmxlLnBpcGUoY2F0Y2hFcnJvcih0aGlzLmhhbmRsZUVycm9yLmJpbmQodGhpcykpKTtcclxuICAgIC8vIE9wdGlvbmFsbHkgYWRkIGNvbnNvbGUgbG9nZ2luZ1xyXG4gICAgaWYgKHRoaXMubG9nSFRUUFJlcXVlc3RzVG9Db25zb2xlKSB7XHJcbiAgICAgIG9ic2VydmFibGUgPSBvYnNlcnZhYmxlLnBpcGUodGFwKFxyXG4gICAgICAgIGRhdGEgPT4gY29uc29sZS5sb2coJ0hUVFAgU3VjY2VzczogJywgZGF0YSksXHJcbiAgICAgICAgZXJyb3IgPT4gY29uc29sZS5sb2coJ0hUVFAgRXJyb3I6ICcsIGVycm9yKVxyXG4gICAgICApKTtcclxuICAgIH1cclxuICAgIHJldHVybiBvYnNlcnZhYmxlO1xyXG4gIH1cclxuXHJcbiAgLyoqIFRoZSBIdHRwT3B0aW9ucyBvYmplY3QgdGhhdCBBbmd1bGFyIHRha2VzIGZvciBHRVQgYW5kIFBPU1QgcmVxdWVzdHMuIFVzZWQgaW4gZXZlcnkgSFRUUCByZXF1ZXN0IGZyb20gdGhpcyBzZXJ2aWNlLiAqL1xyXG4gIHByb3RlY3RlZCBnZXQgaHR0cE9wdGlvbnMoKToge2hlYWRlcnM6IEh0dHBIZWFkZXJzLCBwYXJhbXM/OiBIdHRwUGFyYW1zfSB7XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICBoZWFkZXJzOiB0aGlzLl9oZWFkZXJzXHJcbiAgICB9O1xyXG4gIH1cclxuXHJcbiAgLyoqIEhhbmRsZXMgYWxsIGZhaWxlZCByZXF1ZXN0cyB0aGF0IHRocm93IGVpdGhlciBhIHNlcnZlciBlcnJvciAoNDAwLzUwMCkgb3IgYSBjbGllbnQgZXJyb3IgKGUuZy4gbG9zdCBpbnRlcm5ldCkuICovXHJcbiAgcHJvdGVjdGVkIGFic3RyYWN0IGhhbmRsZUVycm9yKGVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSk7XHJcblxyXG4gIC8qIEhlbHBlciBmdW5jdGlvbiBmb3IgZ2VuZXJhdGluZyBhIHVuaXF1ZSBVVUlEIHBlciByZXF1ZXN0IGZvciBsb2dnaW5nLiAqL1xyXG4gIHByb3RlY3RlZCBnZW5lcmF0ZVVVSUQoKSB7XHJcbiAgICByZXR1cm4gVVVJRC5VVUlEKCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBVcGxvYWRzIGFuIGluZGl2aWR1YWwgYXR0YWNobWVudC4gIEFsbCB5b3UgbmVlZCB0byBkbyBpcyBzZXQgdGhlIHVybC5cclxuICAgKiBOb3RlOiB1cmxzIG9mdGVuIGluY2x1ZGUgVVVJRHMsIHNvIHRoaXMgbXVzdCBiZSBhbiBhcHBsaWNhdGlvbiBkZWNpc2lvbi5cclxuICAgKlxyXG4gICAqIEBwYXJhbSByZWxhdGl2ZVVybCBVUkwgdG8gaGl0LCBtdXN0IGluY2x1ZGUgVVVJRHMgb2YgYXBwbGljYXRpb24gYW5kIENvbW1vbkltYWdlXHJcbiAgICogQHBhcmFtIGF0dGFjaG1lbnQgQ29tbW9uSW1hZ2UgdG8gdXBsb2FkXHJcbiAgICovXHJcbiAgcHJvdGVjdGVkIHVwbG9hZEF0dGFjaG1lbnQocmVsYXRpdmVVcmw6IHN0cmluZywgYXR0YWNobWVudDogQ29tbW9uSW1hZ2UpIHtcclxuICAgIGNvbnN0IG9wdGlvbnMgPSB7aGVhZGVyczogdGhpcy5faGVhZGVycywgcmVzcG9uc2VUeXBlOiAndGV4dCcgYXMgJ3RleHQnfTtcclxuXHJcbiAgICBjb25zdCBiaW5hcnkgPSBhdG9iKGF0dGFjaG1lbnQuZmlsZUNvbnRlbnQuc3BsaXQoJywnKVsxXSk7XHJcbiAgICBjb25zdCBhcnJheSA9IFtdO1xyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBiaW5hcnkubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICBhcnJheS5wdXNoKGJpbmFyeS5jaGFyQ29kZUF0KGkpKTtcclxuICAgIH1cclxuICAgIGNvbnN0IGJsb2IgPSBuZXcgQmxvYihbbmV3IFVpbnQ4QXJyYXkoYXJyYXkpXSwge3R5cGU6IGF0dGFjaG1lbnQuY29udGVudFR5cGV9KTtcclxuXHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QocmVsYXRpdmVVcmwsIGJsb2IsIG9wdGlvbnMpO1xyXG4gIH1cclxuXHJcbn1cclxuIl19