wft-geodb-angular-client
Version:
Provides Angular client bindings to the GeoDB service.
601 lines (579 loc) • 22.7 kB
JavaScript
import * as i1 from '@angular/common/http';
import { HttpParams, HttpClientModule, HTTP_INTERCEPTORS } from '@angular/common/http';
import * as i0 from '@angular/core';
import { Injectable, NgModule } from '@angular/core';
class CountrySummary {
}
class CountryDetails extends CountrySummary {
}
class Currency {
}
class GeoError {
}
class GeoLocation {
}
class GeoResponse {
constructor() {
this.errors = new Array();
}
static buildForData(data, metadata) {
const response = new GeoResponse();
response.data = data;
response.metadata = metadata;
return response;
}
static buildForError(error) {
const response = new GeoResponse();
response.errors.push(error);
return response;
}
static buildForErrors(errors) {
const response = new GeoResponse();
for (const error of errors) {
response.errors.push(error);
}
return response;
}
}
class GeoDbConfig {
}
class Language {
}
class Locale {
}
class PlaceSummary {
get displayName() {
return this.region != null && this.region.trim().length > 0
? this.name + ', ' + this.region + ', ' + this.country
: this.name + ', ' + this.country;
}
}
class PlaceDetails extends PlaceSummary {
}
class RegionSummary {
}
class RegionDetails extends RegionSummary {
}
class TimeZone {
}
class GeoDbService {
constructor(httpClient, config) {
this.httpClient = httpClient;
this.config = config;
this.adminDivisionsEndpoint = config.serviceUri + '/v1/geo/adminDivisions';
this.countriesEndpoint = config.serviceUri + '/v1/geo/countries';
this.currenciesEndpoint = config.serviceUri + '/v1/locale/currencies';
this.languagesEndpoint = config.serviceUri + '/v1/locale/languages';
this.localesEndpoint = config.serviceUri + '/v1/locale/locales';
this.placesEndpoint = config.serviceUri + '/v1/geo/places';
this.timeZonesEndpoint = config.serviceUri + '/v1/locale/timezones';
}
static buildPagingParams(request) {
return new HttpParams()
.set('offset', '' + request.offset)
.set('limit', '' + request.limit)
.set('hateoasMode', 'false');
}
static toLocationString(nearLocation) {
let locationString = '';
if (nearLocation.latitude > 0) {
locationString += '+';
}
locationString += nearLocation.latitude;
if (nearLocation.longitude > 0) {
locationString += '+';
}
locationString += nearLocation.longitude;
return locationString;
}
findAdminDivisions(request) {
let params = GeoDbService.buildPagingParams(request);
if (request.countryIds) {
params = params.set('countryIds', request.countryIds.join(','));
}
if (request.excludedCountryIds) {
params = params.set('excludedCountryIds', request.excludedCountryIds.join(','));
}
if (request.namePrefix) {
params = params.set('namePrefix', request.namePrefix);
}
if (request.namePrefixDefaultLangResults) {
params = params.set('namePrefixDefaultLangResults', request.namePrefixDefaultLangResults);
}
if (request.minPopulation) {
params = params.set('minPopulation', '' + request.minPopulation);
}
if (request.maxPopulation) {
params = params.set('maxPopulation', '' + request.maxPopulation);
}
if (request.timeZoneIds) {
params = params.set('timeZoneIds', request.timeZoneIds.join(','));
}
if (request.asciiMode) {
params = params.set('asciiMode', '' + request.asciiMode);
}
if (request.languageCode) {
params = params.set('languageCode', request.languageCode);
}
if (request.sortDirectives) {
params = params.set('sort', request.sortDirectives.join(','));
}
if (request.includeDeleted) {
params = params.set('includeDeleted', request.includeDeleted);
}
return this.httpClient.get(this.adminDivisionsEndpoint, {
params: params
});
}
findCountries(request) {
let params = GeoDbService.buildPagingParams(request);
if (request.currencyCode) {
params = params.set('currencyCode', request.currencyCode);
}
if (request.namePrefix) {
params = params.set('namePrefix', request.namePrefix);
}
if (request.namePrefixDefaultLangResults) {
params = params.set('namePrefixDefaultLangResults', request.namePrefixDefaultLangResults);
}
if (request.asciiMode) {
params = params.set('asciiMode', '' + request.asciiMode);
}
if (request.languageCode) {
params = params.set('languageCode', request.languageCode);
}
return this.httpClient.get(this.countriesEndpoint, {
params: params
});
}
findCountryPlaces(request) {
const endpoint = this.buildCountryEndpoint(request.countryId) + '/places';
let params = GeoDbService.buildPagingParams(request);
if (request.namePrefix) {
params = params.set('namePrefix', request.namePrefix);
}
if (request.namePrefixDefaultLangResults) {
params = params.set('namePrefixDefaultLangResults', request.namePrefixDefaultLangResults);
}
if (request.minPopulation) {
params = params.set('minPopulation', '' + request.minPopulation);
}
if (request.maxPopulation) {
params = params.set('maxPopulation', '' + request.maxPopulation);
}
if (request.types) {
params = params.set('types', request.types.join(','));
}
if (request.asciiMode) {
params = params.set('asciiMode', '' + request.asciiMode);
}
if (request.languageCode) {
params = params.set('languageCode', request.languageCode);
}
if (request.sortDirectives) {
params = params.set('sort', request.sortDirectives.join(','));
}
return this.httpClient.get(endpoint, {
params: params
});
}
findCountry(request) {
const endpoint = this.countriesEndpoint + '/' + request.countryId;
let params = new HttpParams();
if (request.asciiMode) {
params = params.set('asciiMode', '' + request.asciiMode);
}
if (request.languageCode) {
params = params.set('languageCode', request.languageCode);
}
return this.httpClient.get(endpoint, {
params: params
});
}
findCurrencies(request) {
let params = GeoDbService.buildPagingParams(request);
if (request.countryId) {
params = params.set('countryId', request.countryId);
}
return this.httpClient.get(this.currenciesEndpoint, {
params: params
});
}
findLanguages(request) {
const params = GeoDbService.buildPagingParams(request);
return this.httpClient.get(this.languagesEndpoint, {
params: params
});
}
findLocales(request) {
const params = GeoDbService.buildPagingParams(request);
return this.httpClient.get(this.localesEndpoint, {
params: params
});
}
findPlaces(request) {
let params = GeoDbService.buildPagingParams(request);
if (request.countryIds) {
params = params.set('countryIds', request.countryIds.join(','));
}
if (request.excludedCountryIds) {
params = params.set('excludedCountryIds', request.excludedCountryIds.join(','));
}
if (request.namePrefix) {
params = params.set('namePrefix', request.namePrefix);
}
if (request.namePrefixDefaultLangResults) {
params = params.set('namePrefixDefaultLangResults', request.namePrefixDefaultLangResults);
}
if (request.minPopulation) {
params = params.set('minPopulation', '' + request.minPopulation);
}
if (request.maxPopulation) {
params = params.set('maxPopulation', '' + request.maxPopulation);
}
if (request.timeZoneIds) {
params = params.set('timeZoneIds', request.timeZoneIds.join(','));
}
if (request.types) {
params = params.set('types', request.types.join(','));
}
if (request.asciiMode) {
params = params.set('asciiMode', '' + request.asciiMode);
}
if (request.languageCode) {
params = params.set('languageCode', request.languageCode);
}
if (request.sortDirectives) {
params = params.set('sort', request.sortDirectives.join(','));
}
if (request.includeDeleted) {
params = params.set('includeDeleted', request.includeDeleted);
}
return this.httpClient.get(this.placesEndpoint, {
params: params
});
}
findPlacesNearLocation(request) {
let params = GeoDbService.buildPagingParams(request);
params = params
.set('radius', '' + request.location.radius)
.set('distanceUnit', request.location.distanceUnit);
if (request.namePrefix) {
params = params.set('namePrefix', request.namePrefix);
}
if (request.namePrefixDefaultLangResults) {
params = params.set('namePrefixDefaultLangResults', request.namePrefixDefaultLangResults);
}
if (request.minPopulation) {
params = params.set('minPopulation', '' + request.minPopulation);
}
if (request.maxPopulation) {
params = params.set('maxPopulation', '' + request.maxPopulation);
}
if (request.types) {
params = params.set('types', request.types.join(','));
}
if (request.asciiMode) {
params = params.set('asciiMode', '' + request.asciiMode);
}
if (request.languageCode) {
params = params.set('languageCode', request.languageCode);
}
if (request.sortDirectives) {
params = params.set('sort', request.sortDirectives.join(','));
}
if (request.includeDeleted) {
params = params.set('includeDeleted', request.includeDeleted);
}
// Workaround for HttpClient '+' encoding bug.
const locationId = GeoDbService
.toLocationString(request.location)
.replace(/\+/g, '%2B');
const endpoint = this.placesEndpoint + '?location=' + locationId;
return this.httpClient.get(endpoint, {
params: params
});
}
findPlacesNearPlace(request) {
let params = GeoDbService.buildPagingParams(request);
params = params
.set('radius', '' + request.radius)
.set('distanceUnit', request.distanceUnit);
if (request.namePrefix) {
params = params.set('namePrefix', request.namePrefix);
}
if (request.namePrefixDefaultLangResults) {
params = params.set('namePrefixDefaultLangResults', request.namePrefixDefaultLangResults);
}
if (request.minPopulation) {
params = params.set('minPopulation', '' + request.minPopulation);
}
if (request.maxPopulation) {
params = params.set('maxPopulation', '' + request.maxPopulation);
}
if (request.types) {
params = params.set('types', request.types.join(','));
}
if (request.asciiMode) {
params = params.set('asciiMode', '' + request.asciiMode);
}
if (request.languageCode) {
params = params.set('languageCode', request.languageCode);
}
if (request.sortDirectives) {
params = params.set('sort', request.sortDirectives.join(','));
}
if (request.includeDeleted) {
params = params.set('includeDeleted', request.includeDeleted);
}
const endpoint = this.placesEndpoint + '/' + request.placeId + '/nearbyPlaces';
return this.httpClient.get(endpoint, {
params: params
});
}
findRegion(request) {
const endpoint = this.buildRegionsEndpoint(request.countryId) + '/' + request.regionCode;
let params = new HttpParams();
if (request.asciiMode) {
params = params.set('asciiMode', '' + request.asciiMode);
}
if (request.languageCode) {
params = params.set('languageCode', request.languageCode);
}
return this.httpClient.get(endpoint, {
params: params
});
}
findRegionPlaces(request) {
const endpoint = this.buildRegionEndpoint(request.countryId, request.regionId) + '/places';
let params = GeoDbService.buildPagingParams(request);
if (request.namePrefix) {
params = params.set('namePrefix', request.namePrefix);
}
if (request.namePrefixDefaultLangResults) {
params = params.set('namePrefixDefaultLangResults', request.namePrefixDefaultLangResults);
}
if (request.minPopulation) {
params = params.set('minPopulation', '' + request.minPopulation);
}
if (request.maxPopulation) {
params = params.set('maxPopulation', '' + request.maxPopulation);
}
if (request.types) {
params = params.set('types', request.types.join(','));
}
if (request.asciiMode) {
params = params.set('asciiMode', '' + request.asciiMode);
}
if (request.languageCode) {
params = params.set('languageCode', request.languageCode);
}
if (request.sortDirectives) {
params = params.set('sort', request.sortDirectives.join(','));
}
return this.httpClient.get(endpoint, {
params: params
});
}
findRegions(request) {
const endpoint = this.buildRegionsEndpoint(request.countryId);
let params = GeoDbService.buildPagingParams(request);
if (request.namePrefix) {
params = params.set('namePrefix', request.namePrefix);
}
if (request.namePrefixDefaultLangResults) {
params = params.set('namePrefixDefaultLangResults', request.namePrefixDefaultLangResults);
}
if (request.asciiMode) {
params = params.set('asciiMode', '' + request.asciiMode);
}
if (request.languageCode) {
params = params.set('languageCode', request.languageCode);
}
return this.httpClient.get(endpoint, {
params: params
});
}
findTimeZones(request) {
const params = GeoDbService.buildPagingParams(request);
return this.httpClient.get(this.timeZonesEndpoint, {
params: params
});
}
get apiKey() {
return this.config.apiKey;
}
setApiKey(apiKey) {
this.config.apiKey = apiKey;
}
getPlace(request) {
const endpoint = this.buildPlaceEndpoint(request.placeId);
let params = new HttpParams();
if (request.asciiMode) {
params = params.set('asciiMode', '' + request.asciiMode);
}
if (request.languageCode) {
params = params.set('languageCode', request.languageCode);
}
return this.httpClient.get(endpoint, {
params: params
});
}
getPlaceAdminRegion(request) {
const endpoint = this.buildPlaceEndpoint(request.placeId) + '/locatedIn';
let params = new HttpParams();
if (request.asciiMode) {
params = params.set('asciiMode', '' + request.asciiMode);
}
if (request.languageCode) {
params = params.set('languageCode', request.languageCode);
}
return this.httpClient.get(endpoint, {
params: params
});
}
getPlaceDateTime(id) {
const endpoint = this.buildPlaceEndpoint(id) + '/dateTime';
return this.httpClient.get(endpoint);
}
getPlaceDistance(request) {
const endpoint = this.buildPlaceEndpoint(request.fromPlaceId) + '/distance';
const params = new HttpParams()
.set('toPlaceId', '' + request.toPlaceId)
.set('distanceUnit', '' + request.distanceUnit);
return this.httpClient.get(endpoint, {
params: params
});
}
getPlaceTime(placeId) {
const endpoint = this.buildPlaceEndpoint(placeId) + '/time';
return this.httpClient.get(endpoint);
}
getTimeZoneDateTime(zoneId) {
const endpoint = this.buildTimeZoneEndpoint(zoneId) + '/dateTime';
return this.httpClient.get(endpoint);
}
getTimeZoneTime(zoneId) {
const endpoint = this.buildTimeZoneEndpoint(zoneId) + '/time';
return this.httpClient.get(endpoint);
}
buildCountryEndpoint(countryId) {
return this.countriesEndpoint + '/' + countryId;
}
buildPlaceEndpoint(olaceId) {
return this.placesEndpoint + '/' + olaceId;
}
buildRegionEndpoint(countryId, regionId) {
return this.buildRegionsEndpoint(countryId) + '/' + regionId;
}
buildRegionsEndpoint(countryId) {
return this.buildCountryEndpoint(countryId) + '/regions';
}
buildTimeZoneEndpoint(zoneId) {
return this.timeZonesEndpoint + '/' + zoneId;
}
}
GeoDbService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.5", ngImport: i0, type: GeoDbService, deps: [{ token: i1.HttpClient }, { token: GeoDbConfig }], target: i0.ɵɵFactoryTarget.Injectable });
GeoDbService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.5", ngImport: i0, type: GeoDbService });
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.5", ngImport: i0, type: GeoDbService, decorators: [{
type: Injectable
}], ctorParameters: function () { return [{ type: i1.HttpClient }, { type: GeoDbConfig }]; } });
class GeoDbFreeModule {
static forRoot(config) {
return {
ngModule: GeoDbFreeModule,
providers: [
{
provide: GeoDbConfig,
useValue: config
}
]
};
}
constructor(config) {
}
}
GeoDbFreeModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.5", ngImport: i0, type: GeoDbFreeModule, deps: [{ token: GeoDbConfig }], target: i0.ɵɵFactoryTarget.NgModule });
GeoDbFreeModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.5", ngImport: i0, type: GeoDbFreeModule, imports: [HttpClientModule] });
GeoDbFreeModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.5", ngImport: i0, type: GeoDbFreeModule, providers: [
GeoDbService
], imports: [HttpClientModule] });
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.5", ngImport: i0, type: GeoDbFreeModule, decorators: [{
type: NgModule,
args: [{
providers: [
GeoDbService
],
imports: [
HttpClientModule
]
}]
}], ctorParameters: function () { return [{ type: GeoDbConfig }]; } });
class AuthInterceptor {
constructor(config) {
this.config = config;
}
intercept(request, next) {
if (request.url.startsWith(this.config.serviceUri)) {
const headers = request
.headers
.set('X-Mashape-Key', this.config.apiKey);
return next.handle(request.clone({ headers: headers }));
}
return next.handle(request);
}
}
AuthInterceptor.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.5", ngImport: i0, type: AuthInterceptor, deps: [{ token: GeoDbConfig }], target: i0.ɵɵFactoryTarget.Injectable });
AuthInterceptor.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.5", ngImport: i0, type: AuthInterceptor });
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.5", ngImport: i0, type: AuthInterceptor, decorators: [{
type: Injectable
}], ctorParameters: function () { return [{ type: GeoDbConfig }]; } });
class GeoDbProModule {
static forRoot(config) {
return {
ngModule: GeoDbProModule,
providers: [
{
provide: GeoDbConfig,
useValue: config
}
]
};
}
constructor(config) {
}
}
GeoDbProModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.5", ngImport: i0, type: GeoDbProModule, deps: [{ token: GeoDbConfig }], target: i0.ɵɵFactoryTarget.NgModule });
GeoDbProModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.5", ngImport: i0, type: GeoDbProModule, imports: [HttpClientModule] });
GeoDbProModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.5", ngImport: i0, type: GeoDbProModule, providers: [
GeoDbService,
{
provide: HTTP_INTERCEPTORS,
useClass: AuthInterceptor,
multi: true
}
], imports: [HttpClientModule] });
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.5", ngImport: i0, type: GeoDbProModule, decorators: [{
type: NgModule,
args: [{
providers: [
GeoDbService,
{
provide: HTTP_INTERCEPTORS,
useClass: AuthInterceptor,
multi: true
}
],
imports: [
HttpClientModule
]
}]
}], ctorParameters: function () { return [{ type: GeoDbConfig }]; } });
/*
* Public API Surface of wft-geodb-angular-client
*/
/**
* Generated bundle index. Do not edit.
*/
export { CountryDetails, CountrySummary, Currency, GeoDbConfig, GeoDbFreeModule, GeoDbProModule, GeoDbService, GeoError, GeoLocation, GeoResponse, Language, Locale, PlaceDetails, PlaceSummary, RegionDetails, RegionSummary, TimeZone };
//# sourceMappingURL=wft-geodb-angular-client.mjs.map