dbc-node-serviceprovider
Abstraction layer for the DBC webservices. Handles the communication between the application- and the service layer providing optional transforms for transforming the data received from the services before returning it to the client.
Transforms
A transform is a form of event that takes a request and calls one or more services.
When service calls are resolved the Transform transforms the response into the desired format.
A transform is created with provider.registerTransform
ServiceClients
A ServiceClient is an implementation of a client that handles communication with a service
API 1.0
Provider
The provider needs to be initialized with a config file before usage.
const Provider = ; const provider = ;
Provider.registerServiceClient(client):ServiceClient
Method for registering serviceclients. Serviceclients need a name that refers to a config namespace, and an init() that provides the configurations and should return the client methods.
; provider;
Provider#registerTransform(client):Transform
Method for registering transform classes. Transforms need events, requestTransform, responseTransform
provider;
Transform#callServiceClient:Promise
On a transform it is possible to make calls to registered clients in the following format
const promise = this;
callServiceClient returns a promise that should be returned from the requestTransform
Provider#trigger(event, params):Promise
Triggers an event on the provider. If the event does not exists an error is thrown.
A transform with the corresponding event needs to be registered first.
the trigger method returns a Promise
const recommendations = Provider; recommendations ;
Provider#bootstrap
activates the bundled transforms and clients
provider;
Provider#setupSockets
Setup socket api
const app = ; const server = ; const socket = ; provider;
Events
The provider inherits the Events API which is used to register events from the registered transforms
Events#addEvent
add an event object
Events;
Events#getEvent
Retrieve a single event object
const event = Events;
Events#getEventsOfType
Returns a map of events of a specified type
const map = Events; map;
Bundled clients
- MoreInfo.client.js
- OpenSearch.client.js
- OpenSuggest.client.js
- PopSuggest.client.js
- Recommendations.client.js
Bundled transforms
- CoverImage.transform.js
- ResultList.transform.js
- Work.transform.js
- OpenSuggest.transform.js
- PopSuggest.transform.js
- Recommendations.transform.js
API 2.0
Provider
The provider needs to be initialized with a config file before usage.
const Provider = ; const provider = ;
Provider.registerServiceClient(name, client):ServiceClient
Method for registering serviceclients. Serviceclients need a name that refers to a config namespace, and an initialized client
; const recommendations = ; provider;
Provider#registerTransform(object):Transform
Method for registering transform classes. Transforms need events, requestTransform, responseTransform
provider;
Transform#callServiceClient:Promise (DEPRICATED)
Call serviceClients through the clients object on the transform
const promise = thisclientsnameSpacemethodparams;
Client calls always returns a promise that should be returned from the requestTransform
Provider#trigger(event, params):Promise
Triggers an event on the provider. If the event does not exists an error is thrown.
A transform with the corresponding event needs to be registered first.
the trigger method returns a Promise
const recommendations = Provider; recommendations ;
Provider#dispatcher
Setup socket api
const app = ; const server = ; const socket = ; provider;
API 3.0
The new 3.0 api is almost identical to the 2.0 api, except it requires a socketcluster worker or something with an identical api.
Provider.dispatcher
moduleexports { const app = ; const server = workerhttpServer; const scServer = worker; server; ... provider; }