Package Exports
- @roll-network/api-client
- @roll-network/api-client/dist/cjs/index.js
- @roll-network/api-client/dist/esm/index.js
This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (@roll-network/api-client) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.
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 utilUsing yarn:
yarn add utilInstallation
Use the package manager npm to install @roll-network/api-client.
Using npm:
npm install @roll-network/api-clientUsing yarn:
yarn add @roll-network/api-clientImporting
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.