@mimik/public-helper
v3.1.1
Published
Public IP helper for mimik microservices
Downloads
327
Readme
public-helper
The following environment variables are required for custom locations:
| Env variable name | Description | Default | Comments | | ----------------- | ----------- | ------- | -------- | | SERVER_LOCATION_LON | longitude of the IP address | | | | SERVER_LOCATION_LAT | latitude of the IP address | | | | SERVER_PUBLIC_IPV4 | public IP address | | |
Example
import publicHelper from '@mimik/public-helper';Example
import { PROPERTIES, getLocation, getPublic, setSettings } from '@mimik/public-helper';- public-helper
- module.exports ⏏
- static
- inner
- module.exports ⏏
module.exports ⏏
To note
The following environment variables are required for custom locations: SERVER_PUBLIC_IPV4 with 52.84.158.59, SERVER_LOCATION_LON with -122.676, SERVER_LOCATION_LAT with 45.5235, LOCATION_PROVIDER with "environment".
Kind: Exported member
module.exports.PROPERTIES
The list of properties copied from the location provider response into the location object.
The following environment variables are set by the AWS metadata lookup (the names are
resolved at runtime from the query/publicQuery tables in aws()):
| Env variable name | Description | Default | Comments | | ----------------- | ----------- | ------- | -------- | | query[URL_ENV] | local properties filled from AWS metadata (SERVER_LOCAL_IPV4, INSTANCE_ID, LOCAL_HOSTNAME) | | | | publicQuery[URL_ENV] | public IP address (SERVER_PUBLIC_IPV4) filled from AWS metadata | | |
The following environment variables are used:
| Env variable name | Description | Default | Comments | | ----------------- | ----------- | ------- | -------- | | AWS_LOCAL_PROPERTIES | IP address to access instance properties on AWS | 169.254.169.254 | |
Kind: static constant of module.exports
module.exports~getLocation(locationProvider, [ip], [correlationId], [options]) ⇒ Promise
The location object has the following structure:
{
"type": "Point",
"coordinates": [ lon, lat],
.....
}The result object has the following structure:
{
"status": (describing where the data come from),
"ip": (the public IP address of the server),
"location": (the location object)
}When ip is not present, SERVER_LOCATION_LON, SERVER_LOCATION_LAT, SERVER_PUBLIC_IPV4 environment variables will be updated.
Kind: inner method of module.exports
Category: async
Fulfil: object The location object encapsulated in the result.
| Param | Type | Description |
| --- | --- | --- |
| locationProvider | object | location provider information to use for getting the location { url, key } (key is optional). |
| [ip] | string | IP address to locate. When a private IP is passed it is silently ignored: the provider is queried without the ip and returns the server's own location, with result.ip set to the provider-reported public IP (loc.query). |
| [correlationId] | string | Correlation Id to add to the request. |
| [options] | object | Options associated with the call. Use to pass metrics to rpRetry. |
module.exports~getPublic(locationProvider, [cloudProvider], [correlationId], [options]) ⇒ Promise
The location data has the following structure:
{
"status": (describing where the data come from),
"ip": (the public IP address of the server),
"localIp": (`in case of AWS` local address),
"instanceId": (`in case of AWS` id of the instance running the service),
"location": (the location object)
}When provided, the locationProvider information has the following structure:
{
"url": (URL of the provider),
"key": (security key associated with the request)
}on top of SERVER_PUBLIC_IPV4, SERVER_LOCATION_LON and SERVER_LOCATION_LAT the following environment variables will be used:
| Env variable name | Description | Default | Comments | | ----------------- | ----------- | ------- | -------- | | SERVER_LOCAL_IPV4 | AWS local IP address | | | | INSTANCE_ID | id of the instance | | |
and in order to set these properties process.env.AWS_LOCAL_PROPERTIES is used and defaults to 169.254.169.254.
Kind: inner method of module.exports
Category: async
Fulfil: object The location data.
| Param | Type | Description |
| --- | --- | --- |
| locationProvider | string | object | The location provider or noPublic when no locationProvider is used or environment when the environment variables have the information. |
| [cloudProvider] | string | Cloud Provider used to run the service (currently limited to AWS). The sentinel noCloud (or a missing value) means no cloud provider. |
| [correlationId] | string | Correlation Id to add to the request. |
| [options] | object | Options associated with the call. Use to pass metrics to rpRetry. |
module.exports~setSettings(settings, newConfig) ⇒ object
Set config.serverSettings with location data.
Kind: inner method of module.exports
Returns: object - The updated config.serverSettings.
Category: sync
| Param | Type | Description |
| --- | --- | --- |
| settings | object | The config.serverSettings to update. Expected shape: { ip: { public, local }, public: { location } }. |
| newConfig | object | The location configuration. Expected shape: { ip, localIp, location, instanceId }. |
