1.0.24 • Published 2 years ago

@unloc/integrator-client-library v1.0.24

Weekly downloads
155
License
ISC
Repository
github
Last release
2 years ago

Integrator wrapper

This is a client library for the Unloc Integrator API. It contains functions that wrap the api endpoints and can be used both in the browser and in a node environment. This library does not help you with authentication, which is handled by the Auth API The Unloc API does not currently support front-end authentication, but an example backend can be found here

Init

To initialize the package use the init function

// If using typescript import * as unloc from '../integrator-client-library'
const unloc = require('@unloc/integrator-client-library')
unloc.init("https://api-sandbox.unloc.app")

https://api-sandbox.unloc.app for the sandbox environment https://api.unloc.app for the production environment

Access tokens

For security reasons you should never include your client id or secret in client code. Tokens can be scoped or unscoped. First we need to get an unscoped token for getting lockholders. Then we can get a scoped token for a lockholder and then we can get data for that lockholder.

In this example I assume there is a function getToken which handles getting a token from the auth backend. If it is called with no arguments it returns an unscoped token, if it is called with a scope it gives a scoped token. There is a helper function called lockHolderScope which takes a lockholder and gives you the correct scope string to send to the auth api. The getToken function could be implemented like this

const getToken = async (scope) => {
  let body = {
    grant_type: "client_credentials",
    client_id: "YOUR_CLIENT_ID",
    client_secret: "YOUR_CLIENT_SECRET",
  };
  if (scope) {
    body["scope"] = scope;
  }
  const response = await fetch(`https://api-sandbox.unloc.app/auth/v1/token`, {
    method: "post",
    headers: {
      "Content-Type": "application/json",
    },
    body: JSON.stringify(body),
  });
  const json = await response.json();
  return json
}

Example

This example gets all data from a lockholder

// In a node environment import it like this
const unloc = require('@unloc/integrator-client-library')

unloc.init("https://api-sandbox.unloc.app")

const main = async () => {
  const token = await getToken()

  let lockHolderResponse = await unloc.getLockHolders(token.access_token)

  const lockHolders = lockHolderResponse.data

  const scopedToken = await getToken(unloc.lockHolderScope(lockHolders[0]))
  const scopedAccessToken = scopedToken.access_token
  const lockHolderId = scopedToken.lock_holder_id

  const getAllData = async (lockHolder) => {
      const [keysResponse, locksResponse, rolesResponse] = await Promise.all([
          await unloc.getKeys(scopedAccessToken, {lockHolderId}),
          await unloc.getLocks(scopedAccessToken, {lockHolderId}),
          await unloc.getRoles(scopedAccessToken, {lockHolderId})
      ])
      return { keys: keysResponse.data, locks: locksResponse.data, roles: rolesResponse.data }
  }

  const { keys, locks, roles } = await getAllData(lockHolders[0])
  console.log("Keys: ", keys, "Locks ", locks, "Roles ", roles)
}

main()
1.0.24

2 years ago

1.0.22

2 years ago

1.0.23

2 years ago

1.0.19

3 years ago

1.0.21

3 years ago

1.0.20

3 years ago

1.0.18

3 years ago

1.0.17

3 years ago

1.0.16

3 years ago

1.0.15

3 years ago

1.0.14

3 years ago

1.0.13

3 years ago

1.0.12

3 years ago

1.0.11

3 years ago

1.0.10

3 years ago

1.0.9

3 years ago

1.0.8

3 years ago

1.0.7

3 years ago

1.0.6

3 years ago

1.0.5

3 years ago

1.0.4

3 years ago

1.0.3

3 years ago

1.0.2

3 years ago

1.0.1

3 years ago

1.0.0

3 years ago