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
JavaScript
/**
* @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