UNPKG

moh-common-lib

Version:

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

140 lines 11.2 kB
/** * @fileoverview added by tsickle * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ // Contains information licensed under the Open Government Licence – British Columbia. import { Injectable } from '@angular/core'; import { AbstractHttpService } from './abstract-api-service'; import { HttpClient, HttpHeaders, HttpParams } from '@angular/common/http'; import { map } from 'rxjs/operators'; import { throwError } from 'rxjs'; import { CANADA } from '../components/country/country.component'; import * as i0 from "@angular/core"; import * as i1 from "@angular/common/http"; /** * @record */ export function GeoAddressResult() { } if (false) { /** * String from the API that includes street, city, province, and country. * @type {?} */ GeoAddressResult.prototype.fullAddress; /** @type {?} */ GeoAddressResult.prototype.city; /** @type {?} */ GeoAddressResult.prototype.street; /** @type {?} */ GeoAddressResult.prototype.country; /** @type {?} */ GeoAddressResult.prototype.province; } export class GeocoderService extends AbstractHttpService { /** * @param {?} http */ constructor(http) { super(http); this.http = http; this._headers = new HttpHeaders(); this.BASE_URL = 'https://geocoder.api.gov.bc.ca'; this.ADDRESS_URL = `${this.BASE_URL}/addresses.json?`; } // https://github.com/bcgov/api-specs/blob/master/geocoder/geocoder-developer-guide.md /** * @param {?} address * @return {?} */ lookup(address) { /** @type {?} */ const params = new HttpParams() .set('minScore', '50') .set('maxResults', '10') .set('echo', 'true') .set('interpolation', 'adaptive') .set('addressString', address); return this.get(this.ADDRESS_URL, params).pipe(map(this.processResponse)); } /** * Formats the response from ADDRESS_URL, trimming irrelevant fields. * * This works for other requests for the same API too, however it may error * out on some items if matchPrecisionNot is not set. * * @protected * @param {?} obj The response from ADDRESS_URL * @return {?} */ processResponse(obj) { return obj.features.map((/** * @param {?} feature * @return {?} */ feature => { /** @type {?} */ const props = feature.properties; /** @type {?} */ const city = props.localityName; // We get street just by trimming everything before city, more // stable than looking for commas, etc. /** @type {?} */ const cityIndex = props.fullAddress.indexOf(`, ${city}`); /** @type {?} */ const street = props.fullAddress.slice(0, cityIndex); /** @type {?} */ const province = props.provinceCode; /** @type {?} */ const country = CANADA; return { fullAddress: props.fullAddress.replace('--', '-'), city, street: street.replace('--', '-'), province, country }; })); } /** * @protected * @param {?} error * @return {?} */ handleError(error) { console.error('GeoCoder network error', { error }); return throwError('Geocoder error'); } } GeocoderService.decorators = [ { type: Injectable, args: [{ providedIn: 'root' },] } ]; /** @nocollapse */ GeocoderService.ctorParameters = () => [ { type: HttpClient } ]; /** @nocollapse */ GeocoderService.ngInjectableDef = i0.defineInjectable({ factory: function GeocoderService_Factory() { return new GeocoderService(i0.inject(i1.HttpClient)); }, token: GeocoderService, providedIn: "root" }); if (false) { /** * @type {?} * @protected */ GeocoderService.prototype._headers; /** * @type {?} * @protected */ GeocoderService.prototype.BASE_URL; /** * @type {?} * @protected */ GeocoderService.prototype.ADDRESS_URL; /** * @type {?} * @protected */ GeocoderService.prototype.http; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VvY29kZXIuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL21vaC1jb21tb24tbGliLyIsInNvdXJjZXMiOlsibGliL3NlcnZpY2VzL2dlb2NvZGVyLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFDQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQzdELE9BQU8sRUFBRSxVQUFVLEVBQUUsV0FBVyxFQUFxQixVQUFVLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUM5RixPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDckMsT0FBTyxFQUFjLFVBQVUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUM5QyxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0seUNBQXlDLENBQUM7Ozs7OztBQUVqRSxzQ0FRQzs7Ozs7O0lBTkcsdUNBQW9COztJQUNwQixnQ0FBYTs7SUFDYixrQ0FBZTs7SUFFZixtQ0FBZ0I7O0lBQ2hCLG9DQUFpQjs7QUFNckIsTUFBTSxPQUFPLGVBQWdCLFNBQVEsbUJBQW1COzs7O0lBTXBELFlBQXNCLElBQWdCO1FBQ2xDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztRQURNLFNBQUksR0FBSixJQUFJLENBQVk7UUFKNUIsYUFBUSxHQUFnQixJQUFJLFdBQVcsRUFBRSxDQUFDO1FBQzFDLGFBQVEsR0FBRyxnQ0FBZ0MsQ0FBQztRQUMzQyxnQkFBVyxHQUFHLEdBQUcsSUFBSSxDQUFDLFFBQVEsa0JBQWtCLENBQUM7SUFJNUQsQ0FBQzs7Ozs7O0lBR0QsTUFBTSxDQUFDLE9BQWU7O2NBQ1osTUFBTSxHQUFHLElBQUksVUFBVSxFQUFFO2FBQzFCLEdBQUcsQ0FBQyxVQUFVLEVBQUUsSUFBSSxDQUFDO2FBQ3JCLEdBQUcsQ0FBQyxZQUFZLEVBQUUsSUFBSSxDQUFDO2FBQ3ZCLEdBQUcsQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDO2FBQ25CLEdBQUcsQ0FBQyxlQUFlLEVBQUUsVUFBVSxDQUFDO2FBQ2hDLEdBQUcsQ0FBQyxlQUFlLEVBQUUsT0FBTyxDQUFDO1FBRWxDLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLE1BQU0sQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUM7SUFDOUUsQ0FBQzs7Ozs7Ozs7Ozs7SUFVUyxlQUFlLENBQUMsR0FBRztRQUN6QixPQUFPLEdBQUcsQ0FBQyxRQUFRLENBQUMsR0FBRzs7OztRQUFDLE9BQU8sQ0FBQyxFQUFFOztrQkFDeEIsS0FBSyxHQUFHLE9BQU8sQ0FBQyxVQUFVOztrQkFDMUIsSUFBSSxHQUFHLEtBQUssQ0FBQyxZQUFZOzs7O2tCQUd6QixTQUFTLEdBQUcsS0FBSyxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsS0FBSyxJQUFJLEVBQUUsQ0FBQzs7a0JBQ2xELE1BQU0sR0FBRyxLQUFLLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsU0FBUyxDQUFDOztrQkFDOUMsUUFBUSxHQUFHLEtBQUssQ0FBQyxZQUFZOztrQkFDN0IsT0FBTyxHQUFHLE1BQU07WUFFdEIsT0FBTztnQkFDTCxXQUFXLEVBQUUsS0FBSyxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLEdBQUcsQ0FBQztnQkFDakQsSUFBSTtnQkFDSixNQUFNLEVBQUUsTUFBTSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsR0FBRyxDQUFDO2dCQUNqQyxRQUFRO2dCQUNSLE9BQU87YUFDUixDQUFDO1FBQ04sQ0FBQyxFQUFDLENBQUM7SUFDUCxDQUFDOzs7Ozs7SUFFUyxXQUFXLENBQUMsS0FBd0I7UUFDMUMsT0FBTyxDQUFDLEtBQUssQ0FBQyx3QkFBd0IsRUFBRSxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7UUFDbkQsT0FBTyxVQUFVLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztJQUN4QyxDQUFDOzs7WUF6REosVUFBVSxTQUFDO2dCQUNSLFVBQVUsRUFBRSxNQUFNO2FBQ3JCOzs7O1lBakJRLFVBQVU7Ozs7Ozs7O0lBb0JmLG1DQUFvRDs7Ozs7SUFDcEQsbUNBQXNEOzs7OztJQUN0RCxzQ0FBNEQ7Ozs7O0lBRWhELCtCQUEwQiIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvbnRhaW5zIGluZm9ybWF0aW9uIGxpY2Vuc2VkIHVuZGVyIHRoZSBPcGVuIEdvdmVybm1lbnQgTGljZW5jZSDCliBCcml0aXNoIENvbHVtYmlhLlxyXG5pbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEFic3RyYWN0SHR0cFNlcnZpY2UgfSBmcm9tICcuL2Fic3RyYWN0LWFwaS1zZXJ2aWNlJztcclxuaW1wb3J0IHsgSHR0cENsaWVudCwgSHR0cEhlYWRlcnMsIEh0dHBFcnJvclJlc3BvbnNlLCBIdHRwUGFyYW1zIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5pbXBvcnQgeyBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7IE9ic2VydmFibGUsIHRocm93RXJyb3IgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgQ0FOQURBIH0gZnJvbSAnLi4vY29tcG9uZW50cy9jb3VudHJ5L2NvdW50cnkuY29tcG9uZW50JztcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgR2VvQWRkcmVzc1Jlc3VsdCB7XHJcbiAgICAvKiogU3RyaW5nIGZyb20gdGhlIEFQSSB0aGF0IGluY2x1ZGVzIHN0cmVldCwgY2l0eSwgcHJvdmluY2UsIGFuZCBjb3VudHJ5LiAqL1xyXG4gICAgZnVsbEFkZHJlc3M6IHN0cmluZztcclxuICAgIGNpdHk6IHN0cmluZztcclxuICAgIHN0cmVldDogc3RyaW5nO1xyXG4gICAgLy8gU2V0IHRvIGRlZmF1bHRzIGluIHJlc3BvbnNlXHJcbiAgICBjb3VudHJ5OiBzdHJpbmc7XHJcbiAgICBwcm92aW5jZTogc3RyaW5nO1xyXG59XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgICBwcm92aWRlZEluOiAncm9vdCdcclxufSlcclxuZXhwb3J0IGNsYXNzIEdlb2NvZGVyU2VydmljZSBleHRlbmRzIEFic3RyYWN0SHR0cFNlcnZpY2Uge1xyXG5cclxuICAgIHByb3RlY3RlZCBfaGVhZGVyczogSHR0cEhlYWRlcnMgPSBuZXcgSHR0cEhlYWRlcnMoKTtcclxuICAgIHByb3RlY3RlZCBCQVNFX1VSTCA9ICdodHRwczovL2dlb2NvZGVyLmFwaS5nb3YuYmMuY2EnO1xyXG4gICAgcHJvdGVjdGVkICBBRERSRVNTX1VSTCA9IGAke3RoaXMuQkFTRV9VUkx9L2FkZHJlc3Nlcy5qc29uP2A7XHJcblxyXG4gICAgY29uc3RydWN0b3IocHJvdGVjdGVkIGh0dHA6IEh0dHBDbGllbnQpIHtcclxuICAgICAgICBzdXBlcihodHRwKTtcclxuICAgIH1cclxuXHJcbiAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vYmNnb3YvYXBpLXNwZWNzL2Jsb2IvbWFzdGVyL2dlb2NvZGVyL2dlb2NvZGVyLWRldmVsb3Blci1ndWlkZS5tZFxyXG4gICAgbG9va3VwKGFkZHJlc3M6IHN0cmluZyk6IE9ic2VydmFibGU8R2VvQWRkcmVzc1Jlc3VsdFtdPiB7XHJcbiAgICAgICAgY29uc3QgcGFyYW1zID0gbmV3IEh0dHBQYXJhbXMoKVxyXG4gICAgICAgICAgICAuc2V0KCdtaW5TY29yZScsICc1MCcpXHJcbiAgICAgICAgICAgIC5zZXQoJ21heFJlc3VsdHMnLCAnMTAnKVxyXG4gICAgICAgICAgICAuc2V0KCdlY2hvJywgJ3RydWUnKVxyXG4gICAgICAgICAgICAuc2V0KCdpbnRlcnBvbGF0aW9uJywgJ2FkYXB0aXZlJylcclxuICAgICAgICAgICAgLnNldCgnYWRkcmVzc1N0cmluZycsIGFkZHJlc3MpO1xyXG5cclxuICAgICAgICByZXR1cm4gdGhpcy5nZXQodGhpcy5BRERSRVNTX1VSTCwgcGFyYW1zKS5waXBlKG1hcCh0aGlzLnByb2Nlc3NSZXNwb25zZSkpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogRm9ybWF0cyB0aGUgcmVzcG9uc2UgZnJvbSBBRERSRVNTX1VSTCwgdHJpbW1pbmcgaXJyZWxldmFudCBmaWVsZHMuXHJcbiAgICAgKlxyXG4gICAgICogVGhpcyB3b3JrcyBmb3Igb3RoZXIgcmVxdWVzdHMgZm9yIHRoZSBzYW1lIEFQSSB0b28sIGhvd2V2ZXIgaXQgbWF5IGVycm9yXHJcbiAgICAgKiBvdXQgb24gc29tZSBpdGVtcyBpZiBtYXRjaFByZWNpc2lvbk5vdCBpcyBub3Qgc2V0LlxyXG4gICAgICpcclxuICAgICAqIEBwYXJhbSBvYmogVGhlIHJlc3BvbnNlIGZyb20gQUREUkVTU19VUkxcclxuICAgICAqL1xyXG4gICAgcHJvdGVjdGVkIHByb2Nlc3NSZXNwb25zZShvYmopOiBHZW9BZGRyZXNzUmVzdWx0W10ge1xyXG4gICAgICAgIHJldHVybiBvYmouZmVhdHVyZXMubWFwKGZlYXR1cmUgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCBwcm9wcyA9IGZlYXR1cmUucHJvcGVydGllcztcclxuICAgICAgICAgICAgY29uc3QgY2l0eSA9IHByb3BzLmxvY2FsaXR5TmFtZTtcclxuICAgICAgICAgICAgLy8gV2UgZ2V0IHN0cmVldCBqdXN0IGJ5IHRyaW1taW5nIGV2ZXJ5dGhpbmcgYmVmb3JlIGNpdHksIG1vcmVcclxuICAgICAgICAgICAgLy8gc3RhYmxlIHRoYW4gbG9va2luZyBmb3IgY29tbWFzLCBldGMuXHJcbiAgICAgICAgICAgIGNvbnN0IGNpdHlJbmRleCA9IHByb3BzLmZ1bGxBZGRyZXNzLmluZGV4T2YoYCwgJHtjaXR5fWApO1xyXG4gICAgICAgICAgICBjb25zdCBzdHJlZXQgPSBwcm9wcy5mdWxsQWRkcmVzcy5zbGljZSgwLCBjaXR5SW5kZXgpO1xyXG4gICAgICAgICAgICBjb25zdCBwcm92aW5jZSA9IHByb3BzLnByb3ZpbmNlQ29kZTtcclxuICAgICAgICAgICAgY29uc3QgY291bnRyeSA9IENBTkFEQTsgLy8gQUxXQVlTIHJldHVybiBDYW5hZGFcclxuXHJcbiAgICAgICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgICAgZnVsbEFkZHJlc3M6IHByb3BzLmZ1bGxBZGRyZXNzLnJlcGxhY2UoJy0tJywgJy0nKSxcclxuICAgICAgICAgICAgICBjaXR5LFxyXG4gICAgICAgICAgICAgIHN0cmVldDogc3RyZWV0LnJlcGxhY2UoJy0tJywgJy0nKSxcclxuICAgICAgICAgICAgICBwcm92aW5jZSxcclxuICAgICAgICAgICAgICBjb3VudHJ5XHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJvdGVjdGVkIGhhbmRsZUVycm9yKGVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSkge1xyXG4gICAgICAgIGNvbnNvbGUuZXJyb3IoJ0dlb0NvZGVyIG5ldHdvcmsgZXJyb3InLCB7IGVycm9yIH0pO1xyXG4gICAgICAgIHJldHVybiB0aHJvd0Vycm9yKCdHZW9jb2RlciBlcnJvcicpO1xyXG4gICAgfVxyXG59XHJcbiJdfQ==