moh-common-lib
Version:
A library of Angular components, services, and styles for B.C. Government Ministry of Health (MoH).
172 lines • 12.7 kB
JavaScript
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
import * as tslib_1 from "tslib";
// 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;
}
var GeocoderService = /** @class */ (function (_super) {
tslib_1.__extends(GeocoderService, _super);
function GeocoderService(http) {
var _this = _super.call(this, http) || this;
_this.http = http;
_this._headers = new HttpHeaders();
_this.BASE_URL = 'https://geocoder.api.gov.bc.ca';
_this.ADDRESS_URL = _this.BASE_URL + "/addresses.json?";
return _this;
}
// https://github.com/bcgov/api-specs/blob/master/geocoder/geocoder-developer-guide.md
// https://github.com/bcgov/api-specs/blob/master/geocoder/geocoder-developer-guide.md
/**
* @param {?} address
* @return {?}
*/
GeocoderService.prototype.lookup =
// https://github.com/bcgov/api-specs/blob/master/geocoder/geocoder-developer-guide.md
/**
* @param {?} address
* @return {?}
*/
function (address) {
/** @type {?} */
var 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.
*
* @param obj The response from ADDRESS_URL
*/
/**
* 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 {?}
*/
GeocoderService.prototype.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 {?}
*/
function (obj) {
return obj.features.map((/**
* @param {?} feature
* @return {?}
*/
function (feature) {
/** @type {?} */
var props = feature.properties;
/** @type {?} */
var city = props.localityName;
// We get street just by trimming everything before city, more
// stable than looking for commas, etc.
/** @type {?} */
var cityIndex = props.fullAddress.indexOf(", " + city);
/** @type {?} */
var street = props.fullAddress.slice(0, cityIndex);
/** @type {?} */
var province = props.provinceCode;
/** @type {?} */
var country = CANADA;
return {
fullAddress: props.fullAddress.replace('--', '-'),
city: city,
street: street.replace('--', '-'),
province: province,
country: country
};
}));
};
/**
* @protected
* @param {?} error
* @return {?}
*/
GeocoderService.prototype.handleError = /**
* @protected
* @param {?} error
* @return {?}
*/
function (error) {
console.error('GeoCoder network error', { error: error });
return throwError('Geocoder error');
};
GeocoderService.decorators = [
{ type: Injectable, args: [{
providedIn: 'root'
},] }
];
/** @nocollapse */
GeocoderService.ctorParameters = function () { return [
{ type: HttpClient }
]; };
/** @nocollapse */ GeocoderService.ngInjectableDef = i0.defineInjectable({ factory: function GeocoderService_Factory() { return new GeocoderService(i0.inject(i1.HttpClient)); }, token: GeocoderService, providedIn: "root" });
return GeocoderService;
}(AbstractHttpService));
export { GeocoderService };
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VvY29kZXIuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL21vaC1jb21tb24tbGliLyIsInNvdXJjZXMiOlsibGliL3NlcnZpY2VzL2dlb2NvZGVyLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQ0EsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUM3RCxPQUFPLEVBQUUsVUFBVSxFQUFFLFdBQVcsRUFBcUIsVUFBVSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDOUYsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3JDLE9BQU8sRUFBYyxVQUFVLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDOUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLHlDQUF5QyxDQUFDOzs7Ozs7QUFFakUsc0NBUUM7Ozs7OztJQU5HLHVDQUFvQjs7SUFDcEIsZ0NBQWE7O0lBQ2Isa0NBQWU7O0lBRWYsbUNBQWdCOztJQUNoQixvQ0FBaUI7O0FBR3JCO0lBR3FDLDJDQUFtQjtJQU1wRCx5QkFBc0IsSUFBZ0I7UUFBdEMsWUFDSSxrQkFBTSxJQUFJLENBQUMsU0FDZDtRQUZxQixVQUFJLEdBQUosSUFBSSxDQUFZO1FBSjVCLGNBQVEsR0FBZ0IsSUFBSSxXQUFXLEVBQUUsQ0FBQztRQUMxQyxjQUFRLEdBQUcsZ0NBQWdDLENBQUM7UUFDM0MsaUJBQVcsR0FBTSxLQUFJLENBQUMsUUFBUSxxQkFBa0IsQ0FBQzs7SUFJNUQsQ0FBQztJQUVELHNGQUFzRjs7Ozs7O0lBQ3RGLGdDQUFNOzs7Ozs7SUFBTixVQUFPLE9BQWU7O1lBQ1osTUFBTSxHQUFHLElBQUksVUFBVSxFQUFFO2FBQzFCLEdBQUcsQ0FBQyxVQUFVLEVBQUUsSUFBSSxDQUFDO2FBQ3JCLEdBQUcsQ0FBQyxZQUFZLEVBQUUsSUFBSSxDQUFDO2FBQ3ZCLEdBQUcsQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDO2FBQ25CLEdBQUcsQ0FBQyxlQUFlLEVBQUUsVUFBVSxDQUFDO2FBQ2hDLEdBQUcsQ0FBQyxlQUFlLEVBQUUsT0FBTyxDQUFDO1FBRWxDLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLE1BQU0sQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUM7SUFDOUUsQ0FBQztJQUVEOzs7Ozs7O09BT0c7Ozs7Ozs7Ozs7O0lBQ08seUNBQWU7Ozs7Ozs7Ozs7SUFBekIsVUFBMEIsR0FBRztRQUN6QixPQUFPLEdBQUcsQ0FBQyxRQUFRLENBQUMsR0FBRzs7OztRQUFDLFVBQUEsT0FBTzs7Z0JBQ3JCLEtBQUssR0FBRyxPQUFPLENBQUMsVUFBVTs7Z0JBQzFCLElBQUksR0FBRyxLQUFLLENBQUMsWUFBWTs7OztnQkFHekIsU0FBUyxHQUFHLEtBQUssQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLE9BQUssSUFBTSxDQUFDOztnQkFDbEQsTUFBTSxHQUFHLEtBQUssQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxTQUFTLENBQUM7O2dCQUM5QyxRQUFRLEdBQUcsS0FBSyxDQUFDLFlBQVk7O2dCQUM3QixPQUFPLEdBQUcsTUFBTTtZQUV0QixPQUFPO2dCQUNMLFdBQVcsRUFBRSxLQUFLLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsR0FBRyxDQUFDO2dCQUNqRCxJQUFJLE1BQUE7Z0JBQ0osTUFBTSxFQUFFLE1BQU0sQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLEdBQUcsQ0FBQztnQkFDakMsUUFBUSxVQUFBO2dCQUNSLE9BQU8sU0FBQTthQUNSLENBQUM7UUFDTixDQUFDLEVBQUMsQ0FBQztJQUNQLENBQUM7Ozs7OztJQUVTLHFDQUFXOzs7OztJQUFyQixVQUFzQixLQUF3QjtRQUMxQyxPQUFPLENBQUMsS0FBSyxDQUFDLHdCQUF3QixFQUFFLEVBQUUsS0FBSyxPQUFBLEVBQUUsQ0FBQyxDQUFDO1FBQ25ELE9BQU8sVUFBVSxDQUFDLGdCQUFnQixDQUFDLENBQUM7SUFDeEMsQ0FBQzs7Z0JBekRKLFVBQVUsU0FBQztvQkFDUixVQUFVLEVBQUUsTUFBTTtpQkFDckI7Ozs7Z0JBakJRLFVBQVU7OzswQkFIbkI7Q0E0RUMsQUExREQsQ0FHcUMsbUJBQW1CLEdBdUR2RDtTQXZEWSxlQUFlOzs7Ozs7SUFFeEIsbUNBQW9EOzs7OztJQUNwRCxtQ0FBc0Q7Ozs7O0lBQ3RELHNDQUE0RDs7Ozs7SUFFaEQsK0JBQTBCIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29udGFpbnMgaW5mb3JtYXRpb24gbGljZW5zZWQgdW5kZXIgdGhlIE9wZW4gR292ZXJubWVudCBMaWNlbmNlIMKWIEJyaXRpc2ggQ29sdW1iaWEuXHJcbmltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQWJzdHJhY3RIdHRwU2VydmljZSB9IGZyb20gJy4vYWJzdHJhY3QtYXBpLXNlcnZpY2UnO1xyXG5pbXBvcnQgeyBIdHRwQ2xpZW50LCBIdHRwSGVhZGVycywgSHR0cEVycm9yUmVzcG9uc2UsIEh0dHBQYXJhbXMgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7IG1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgdGhyb3dFcnJvciB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBDQU5BREEgfSBmcm9tICcuLi9jb21wb25lbnRzL2NvdW50cnkvY291bnRyeS5jb21wb25lbnQnO1xyXG5cclxuZXhwb3J0IGludGVyZmFjZSBHZW9BZGRyZXNzUmVzdWx0IHtcclxuICAgIC8qKiBTdHJpbmcgZnJvbSB0aGUgQVBJIHRoYXQgaW5jbHVkZXMgc3RyZWV0LCBjaXR5LCBwcm92aW5jZSwgYW5kIGNvdW50cnkuICovXHJcbiAgICBmdWxsQWRkcmVzczogc3RyaW5nO1xyXG4gICAgY2l0eTogc3RyaW5nO1xyXG4gICAgc3RyZWV0OiBzdHJpbmc7XHJcbiAgICAvLyBTZXQgdG8gZGVmYXVsdHMgaW4gcmVzcG9uc2VcclxuICAgIGNvdW50cnk6IHN0cmluZztcclxuICAgIHByb3ZpbmNlOiBzdHJpbmc7XHJcbn1cclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICAgIHByb3ZpZGVkSW46ICdyb290J1xyXG59KVxyXG5leHBvcnQgY2xhc3MgR2VvY29kZXJTZXJ2aWNlIGV4dGVuZHMgQWJzdHJhY3RIdHRwU2VydmljZSB7XHJcblxyXG4gICAgcHJvdGVjdGVkIF9oZWFkZXJzOiBIdHRwSGVhZGVycyA9IG5ldyBIdHRwSGVhZGVycygpO1xyXG4gICAgcHJvdGVjdGVkIEJBU0VfVVJMID0gJ2h0dHBzOi8vZ2VvY29kZXIuYXBpLmdvdi5iYy5jYSc7XHJcbiAgICBwcm90ZWN0ZWQgIEFERFJFU1NfVVJMID0gYCR7dGhpcy5CQVNFX1VSTH0vYWRkcmVzc2VzLmpzb24/YDtcclxuXHJcbiAgICBjb25zdHJ1Y3Rvcihwcm90ZWN0ZWQgaHR0cDogSHR0cENsaWVudCkge1xyXG4gICAgICAgIHN1cGVyKGh0dHApO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9iY2dvdi9hcGktc3BlY3MvYmxvYi9tYXN0ZXIvZ2VvY29kZXIvZ2VvY29kZXItZGV2ZWxvcGVyLWd1aWRlLm1kXHJcbiAgICBsb29rdXAoYWRkcmVzczogc3RyaW5nKTogT2JzZXJ2YWJsZTxHZW9BZGRyZXNzUmVzdWx0W10+IHtcclxuICAgICAgICBjb25zdCBwYXJhbXMgPSBuZXcgSHR0cFBhcmFtcygpXHJcbiAgICAgICAgICAgIC5zZXQoJ21pblNjb3JlJywgJzUwJylcclxuICAgICAgICAgICAgLnNldCgnbWF4UmVzdWx0cycsICcxMCcpXHJcbiAgICAgICAgICAgIC5zZXQoJ2VjaG8nLCAndHJ1ZScpXHJcbiAgICAgICAgICAgIC5zZXQoJ2ludGVycG9sYXRpb24nLCAnYWRhcHRpdmUnKVxyXG4gICAgICAgICAgICAuc2V0KCdhZGRyZXNzU3RyaW5nJywgYWRkcmVzcyk7XHJcblxyXG4gICAgICAgIHJldHVybiB0aGlzLmdldCh0aGlzLkFERFJFU1NfVVJMLCBwYXJhbXMpLnBpcGUobWFwKHRoaXMucHJvY2Vzc1Jlc3BvbnNlKSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBGb3JtYXRzIHRoZSByZXNwb25zZSBmcm9tIEFERFJFU1NfVVJMLCB0cmltbWluZyBpcnJlbGV2YW50IGZpZWxkcy5cclxuICAgICAqXHJcbiAgICAgKiBUaGlzIHdvcmtzIGZvciBvdGhlciByZXF1ZXN0cyBmb3IgdGhlIHNhbWUgQVBJIHRvbywgaG93ZXZlciBpdCBtYXkgZXJyb3JcclxuICAgICAqIG91dCBvbiBzb21lIGl0ZW1zIGlmIG1hdGNoUHJlY2lzaW9uTm90IGlzIG5vdCBzZXQuXHJcbiAgICAgKlxyXG4gICAgICogQHBhcmFtIG9iaiBUaGUgcmVzcG9uc2UgZnJvbSBBRERSRVNTX1VSTFxyXG4gICAgICovXHJcbiAgICBwcm90ZWN0ZWQgcHJvY2Vzc1Jlc3BvbnNlKG9iaik6IEdlb0FkZHJlc3NSZXN1bHRbXSB7XHJcbiAgICAgICAgcmV0dXJuIG9iai5mZWF0dXJlcy5tYXAoZmVhdHVyZSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IHByb3BzID0gZmVhdHVyZS5wcm9wZXJ0aWVzO1xyXG4gICAgICAgICAgICBjb25zdCBjaXR5ID0gcHJvcHMubG9jYWxpdHlOYW1lO1xyXG4gICAgICAgICAgICAvLyBXZSBnZXQgc3RyZWV0IGp1c3QgYnkgdHJpbW1pbmcgZXZlcnl0aGluZyBiZWZvcmUgY2l0eSwgbW9yZVxyXG4gICAgICAgICAgICAvLyBzdGFibGUgdGhhbiBsb29raW5nIGZvciBjb21tYXMsIGV0Yy5cclxuICAgICAgICAgICAgY29uc3QgY2l0eUluZGV4ID0gcHJvcHMuZnVsbEFkZHJlc3MuaW5kZXhPZihgLCAke2NpdHl9YCk7XHJcbiAgICAgICAgICAgIGNvbnN0IHN0cmVldCA9IHByb3BzLmZ1bGxBZGRyZXNzLnNsaWNlKDAsIGNpdHlJbmRleCk7XHJcbiAgICAgICAgICAgIGNvbnN0IHByb3ZpbmNlID0gcHJvcHMucHJvdmluY2VDb2RlO1xyXG4gICAgICAgICAgICBjb25zdCBjb3VudHJ5ID0gQ0FOQURBOyAvLyBBTFdBWVMgcmV0dXJuIENhbmFkYVxyXG5cclxuICAgICAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgICBmdWxsQWRkcmVzczogcHJvcHMuZnVsbEFkZHJlc3MucmVwbGFjZSgnLS0nLCAnLScpLFxyXG4gICAgICAgICAgICAgIGNpdHksXHJcbiAgICAgICAgICAgICAgc3RyZWV0OiBzdHJlZXQucmVwbGFjZSgnLS0nLCAnLScpLFxyXG4gICAgICAgICAgICAgIHByb3ZpbmNlLFxyXG4gICAgICAgICAgICAgIGNvdW50cnlcclxuICAgICAgICAgICAgfTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBwcm90ZWN0ZWQgaGFuZGxlRXJyb3IoZXJyb3I6IEh0dHBFcnJvclJlc3BvbnNlKSB7XHJcbiAgICAgICAgY29uc29sZS5lcnJvcignR2VvQ29kZXIgbmV0d29yayBlcnJvcicsIHsgZXJyb3IgfSk7XHJcbiAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoJ0dlb2NvZGVyIGVycm9yJyk7XHJcbiAgICB9XHJcbn1cclxuIl19