Pelias is a geocoder powered completely by open data, available freely to everyone.
Local Installation · Cloud Webservice · Documentation · Community Chat
Module that provides a convenience wrapper for calling Pelias microservices such as Placeholder or Point-in-Polygon Service over HTTP GET.
$ npm install pelias-microservice-wrapper
The pelias-microservice-wrapper
npm module can be found here:
https://npmjs.org/package/pelias-microservice-wrapper
This module is primarily used in the Pelias API to call microservices. To add support for a microservice in the API, define a class that derives from ServiceConfiguration, override any methods, and inject into a service instance.
The ServiceConfiguration constructor accepts a string service name (returned by getName()
and an object containing the three optional properties:
property | required | default | description |
---|---|---|---|
baseUrl |
no | none | the base URL used for contacting a service, causes isEnabled() to return false when an empty string |
timeout |
no | 1000 |
the number of milliseconds a request should wait for a server response before timing out |
retries |
no | 3 |
the number of retries to attempt before returning an error |
Requests are logged at the debug
level when enabled in pelias-config.
const DemoServiceConfig = class extends ServiceConfiguration {
constructor(configBlob) {
super('demo microservice', configBlob);
}
getUrl(req) {
return this.baseUrl + '/demo';
}
getParameters(req) {
return {
size: req.clean.size,
offset: 0
};
}
getHeaders(req) {
return {
'some-header': req.clean.some_header
};
}
};
const demoService = serviceWrapper(new DemoServiceConfig({
url: 'http://localhost:1234'
}));
const req = {
size: 15,
some_header: 'header value'
};
// pseudocode tests for illustration purposes
demoService.getUrl() === 'http://localhost:1234/demo';
demoService.isEnabled() === true
demoService.getParameters(req) === {
size: 15,
offset: 0
};
demoService.getHeaders(req) === {
some_header: 'header value'
};
method | override? | returns | description |
---|---|---|---|
getName |
not recommended | value passed to constructor | returns the name of the service |
getBaseUrl |
not recommended | url property of configuration passed to constructor |
base URL of microservice |
isEnabled |
not recommended | true if baseUrl is a non-empty string |
helper method for determining if the service should be considered enabled |
getUrl |
yes | value of getBaseUrl unless overridden |
used for appending other value to the baseUrl (but not request parameters) |
getParameters |
yes | {} unless overridden |
any request parameters to pass to the microservice |
getHeaders |
yes | {} unless overridden |
any request headers to pass to the microservice |
getTimeout |
not recommended | 1000 or value passed to constructor |
how long a request should wait for a server response before timing out |
getRetries |
not recommended | 3 or value passed to constructor |
how many attempts should be made before returning an error |
ServiceConfiguration
Method OverridesThe following methods can be overridden in an implementation of ServiceConfiguration
:
method | default return | description |
---|---|---|
getUrl |
value of getBaseUrl |
used for appending other value to the baseUrl (but not request parameters) |
getParameters |
{} |
any request parameters to pass to the microservice |
getHeaders |
{} |
any request headers to pass to the microservice |
It is not recommended to override any other methods.