3.0.1 • Published 8 months ago

@roll-network/api-client v3.0.1

Weekly downloads
-
License
MIT
Repository
github
Last release
8 months ago

@roll-network/api-client

The @roll-network/api-client is a JavaScript package that offers an easy and efficient way to interact with the Roll Network's API services. It provides a convenient and maintainable method to make HTTP requests and manage API tokens.

The package primarily exports two classes: Client and ClientPool.

Prerequisites

The library uses better-queue, a browser-compatible Node package. When used in a browser environment, it requires the util package to be installed.

You can install these packages using npm:

Using npm:

npm install util

Using yarn:

yarn add util

Installation

Use the package manager npm to install @roll-network/api-client.

Using npm:

npm install @roll-network/api-client

Using yarn:

yarn add @roll-network/api-client

Importing

You can import the package in your project using:

import Client, { ClientPool } from '@roll-network/api-client'

Usage

Client

The Client class is designed to interact with the Roll Network's API services using a given configuration and SDK.

import SDK from '@roll-network/auth-sdk'
import Client from '@roll-network/api-client'
import { user as userAPI } from '@roll-network/api'

const authSdk = new SDK(
  {
    clientId: config.clientID,
    issuerUrl: config.issuerURL,
    redirectUrl: config.redirectURL,
    logoutRedirectUrl: config.redirectURL,
    scopes: config.scopes,
  },
  window.localStorage,
)

const apiClient = new Client({ baseUrl: config.apiURL }, authSdk)
const user = await userAPI.getMe(apiClient.call)

Multiple users

The Client's call method is able to make requests for a specific user (from authSdk).

import SDK from '@roll-network/auth-sdk'
import Client from '@roll-network/api-client'
import { user as userAPI } from '@roll-network/api'

const authSdk = new SDK(
  {
    clientId: config.clientID,
    issuerUrl: config.issuerURL,
    redirectUrl: config.redirectURL,
    logoutRedirectUrl: config.redirectURL,
    scopes: config.scopes,
  },
  window.localStorage,
)

const apiClient = new Client({ baseUrl: config.apiURL }, authSdk)
const specificUserId = '12345'
const user = await userAPI.getMe(apiClient.getCall(specificUserId))

ClientPool

The ClientPool class creates a set of clients with different SDKs injected. This allows you to switch between different interaction types depending on your requirements.

import { SDKPool, InteractionType } from '@roll-network/auth-sdk'
import { ClientPool } from '@roll-network/api-client'

const sdkPool = new SDKPool(config)

await sdkPool.getSDK(InteractionType.ClientCredentials).generateToken()
const clientPool = new ClientPool({ baseUrl: process.env.API_URL }, sdkPool)
const response = await token.getTokens(
  clientPool.getClient(InteractionType.ClientCredentials).call,
  answers,
)

const oauthCode = 'foo' // Use a real oauth code here
await sdkPool.getSDK(InteractionType.Code).generateToken(oauthCode)
const response = await token.getTokens(
  clientPool.getClient(InteractionType.Code).call,
  answers,
)

Errors

The library has custom errors which can be used for precise error handling:

  • CouldntRefreshTokensError: Thrown when the client fails to refresh the tokens.
2.3.0

10 months ago

2.3.2

9 months ago

3.0.1

8 months ago

2.3.1

10 months ago

3.0.0

9 months ago

2.2.0

11 months ago

2.1.0

11 months ago

2.0.0

11 months ago

1.1.0

11 months ago

1.0.0

11 months ago