Client
Clients for Email, SMS, Submitter, User Data Store, User File Store, and JWT.
JSON Web Token client
Base client for requests to endpoints which require a JSON Web Token for authentication.
Using a client
const FBJWTClient = require('@ministryofjustice/fb-client/user/jwt/client')
const jwtClient = new FBJWTClient(serviceSecret, serviceSlug, microserviceUrl, [errorClass])
Service Secret
A serviceSecret
is required.
The constructor will throw an error if no serviceSecret
is provided.
Service Slug
A serviceSlug
is required.
The constructor will throw an error if no serviceSlug
is provided.
Microservice URL
A microserviceUrl
is required.
The constructor will throw an error if no microserviceUrl
is provided.
Error Class
An errorClass
is optional.
Extending
class FBMyClient extends FBJWTClient {
constructor (serviceSecret, serviceSlug, microserviceUrl, [myVar]) {
super(serviceSecret, serviceSlug, microserviceUrl)
this.myVar = myVar
}
}
const myClient = new FBMyClient('service_secret', 'myservice', 'http://myservice', ['my var'])
class FBAnotherClientError extends FBJWTClient.prototype.ErrorClass {}
class FBAnotherClient extends FBJWTClient {
constructor (serviceSecret, serviceSlug, microserviceUrl) {
super(serviceSecret, serviceSlug, microserviceUrl, FBAnotherClientError)
}
}
Methods
-
generateAccessToken
Generate a JWT access token
-
createEndpointUrl
Create the URL for an endpoint
-
sendGet
Dispatch GET
requests to an endpoint
-
sendPost
Dispatch POST
requests to an endpoint
-
encrypt
Encrypt data with AES 256
-
decrypt
Decrypt data
-
encryptUserIdAndToken
Encrypt the user ID and token using the service secret
-
decryptUserIdAndToken
Decrypt the user ID and token using the service secret
-
handleRequestError
This function will be invoked with an error an argument when the transaction fails
-
createRequestOptions
Create request options, whether GET
or POST
-
throwRequestError
This function can be invoked to throw request errors
JSON Web Token client implementations
Data Store client
Client for requests to datastore endpoints.
Using a client
const FBUserDataStoreClient = require('@ministryofjustice/fb-client/user/datastore/client')
const userDataStoreClient = new FBUserDataStoreClient(serviceSecret, serviceSlug, userDataStoreUrl)
Fetching and storing
const userData = await userDataStoreClient.getData(userId, userToken)
await userDataStoreClient.setData(userId, userToken, userData)
File Store client
Client for requests to filestore endpoints.
Using a client
const FBUserFileStoreClient = require('@ministryofjustice/fb-client/user/filestore/client')
const userFileStoreClient = new FBUserFileStoreClient(serviceSecret, serviceSlug, userFileStoreUrl)
Fetching and storing
Fetching
const userFile = await userFileStoreClient.fetch(userId, userToken, fingerprint)
Storing
Define a policy:
const policy = { [max_size], [expires], [allowed_types] }
Either:
const uploadDetails = await userFileStoreClient.store(userId, userToken, file, policy)
Or:
const uploadDetails = await userFileStoreClient.storeFromPath(userId, userToken, filePath, policy)