UNPKG

fh-instance-url

Version:

Get a FeedHenry/RHMAP Cloud or MBaaS Service URL.

128 lines (95 loc) 3.76 kB
FeedHenry Instance URL ====================== Retrieves the URL of an MBaaS Service or Cloud Application in the FeedHenry platform. ## Usage In the example below we get a URL for our MBaaS, then make a request to get some data it exposes. ```javascript var fhurl = require('fh-instance-url'); fhurl.getUrl({ guid: '48fhsf6mxzlyqi3ffbpkfh38' }, function onUrl (err, serviceUrl) { if (err) { // Something went wrong, perhaps a bad guid? } else { // Can make a request to the URL! } }); ``` ## Behaviours #### Environment The target environment is determined by matching it with the current env, so a DEV Node.js Cloud Application will get the DEV Service URL if making a call using this module. This uses *process.env.FH_ENV* under the hood. #### Local Development Developing locally is defined as running your application with the FH_USE_LOCAL_DB environment variable set to "true", or **not** having FH_MILLICORE or FH_ENV set since these are always set in RHMAP containers. When developing locally this module will first check for the existence of an *fhconfig.json* file in the root of your project directory to resolve the provided guid for the lookup to a URL of your choosing. More details for this _fhconfig_ JSON file are provided below. If you'd rather use *FH_SERVICE_MAP* which is the default for _$fh.service_ lookups that will work so long as you do not have an *fhconfig.json* file in your project root. If no mappings are provided i.e *FH_SERVICE_MAP* is not defined and _fhconfig.json_ is not present, we will attempt to use the Red Hat Mobile APIs to resolve the URL (this is what happens when code is deployed on RHAMP). To do this you must set the following environment variables locally: * FH_MILLICORE * FH_ENV * FH_WIDGET These variables can be found in a the Environment Variables tab of your Cloud Application. ## API #### getUrl(params, callback) Get the URL for a service based on the passed GUID or params. Params can be a String (the GUID), or an object with the properties _guid_ and _domain_. #### getServiceCallHeaders() Returns an object containing headers required to make a service request. You can merge this with another Object to make a finalised headers Object with your headers plus RHMAP headers. ## fhconfig.json The fhconfig.json is a general configuration file we can use to manage local development when using _fh-instance-url_. Here's a sample: ```json { "domain": "your-domain.feedhenry.com", "appId": "the id of this app from the app details screen", "apiKey": "the api key from the app details screen", "services": { "48fhsf6mxzlyqi3ffbpkfh38": { "devUrl": "http://127.0.0.1:8001/", "name": "MY_AUTH_SERVICE" } } } ``` And a description of the keys: #### domain The domain your application is/will run on. #### services Contains keys (guids of apps) that manage MBaaS Service interaction. #### services[GUID] Contains information related to specific MBaaS components identified by their, AppID or GUID. #### services[GUID].name A name you might assign to identify an MBaaS. Does not have to match the name in the RHMAP Studio. #### services[GUID].devUrl Used to point MBaaS requests to a custom host during local development. ## CHANGELOG * 1.1.0 - Add improved trace logging for debugging support. Reduce install size by limiting files included in package. * 1.0.0 - Introduce fhconfig.json support. Rewrite module and improve testing. * 0.X.Y - Here be dragons ## Contributing No strict guidelines. Just run the tests before making a pull request, and add new ones if required. You can run tests by cloning locally and running _npm test_ in the project directory. ## Contributors * evanshortiss * TinyExplosions * jimdillon * Crosbie