@roll-network/api-client
v3.0.1
Published
JavaScript-based API client for Roll
Downloads
5
Readme
@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.