0.10.0 • Published 4 years ago

ringcentral-typescript v0.10.0

Weekly downloads
2
License
MIT
Repository
github
Last release
4 years ago

RingCentral TypeScript SDK

Build Status

This SDK is modelled after the RingCentral.NET SDK which is the most popular RingCentral SDK for static compiled languages.

Installation

yarn add ringcentral-typescript

Setup

Make a copy of .env.example and rename it to .env, then fill in the data appropriately.

In your project, require the sdk, then initialize and login

const RestClient = require('ringcentral-typescript').default

const rc = new RestClient({
    clientId: process.env.RINGCENTRAL_CLIENT_ID,
    clientSecret: process.env.RINGCENTRAL_CLIENT_SECRET,
    server: process.env.RINGCENTRAL_SERVER_URL,
    appName: "", //optional, if specified, it will be included in X-User-Agent header
    appVersion: "", //optional, if specified, it will be included in X-User-Agent header
    httpClient: "", //optional
    token: "", //optional
    handleRateLimit: false, //optional
    debugMode: false // optional
})

Sample code

Sample code for all the endpoints

You can also find lots of useful code snippets from the test cases.

Since this library is model after the RingCentral.NET SDK, you can also reference the samples in C#. It should be straightforward to translate C# code into TypeScript or JavaScript since this two SDKs are very similar.

Binary content downloading

Some sample code for binary content downloading may not work.

Because RingCentral is gradually migrating binary content to CDN such as media.ringcentral.com.

For example, to download the attachment of a fax:

// `message` is the fax message object
const r = await rc.get(message.attachments[0].uri, undefined, { responseType: 'arraybuffer' })
const content = r.data

The following does NOT work:

// `message` is the fax message object
const content = await rc.restapi().account().extension().messageStore(message.id).content(message.attachments[0].id).get()

Rule of thumb

But not all binary content has been migrated to CDN. If the resource to download provides you with a CDN uri, use that CDN uri. If there is no CDN uri provided, contruct the uri as the sample code shows.

Rate Limiting

The RingCentral Platform enforces rate limits to reduce network traffic and avoid DOS issues.

Here's a blog article discussing it in detail.

This SDK has the option of handling rate limits automatically by passing handleRateLimit: (boolean | number) into the constructor.

Options:

  • boolean
    • When set to true, this will pause requests for however many seconds are indicated in the rate-limit-window header (defaulting to 60 is there header is somehow missing)
  • number
    • When set to a number, this overrides using the header, or the default, and instead pauses for x seconds (where x is your number in the constructor)

For maintainers

Regenerate code using latest swagger spec

Get the latest swagger spec here and run:

yarn generate

Compile

yarn tsc

Test

yarn test

Todo

  • no more any type and {} type
  • convert code generator to TS
  • compare it with C# sdk and see what are missing
  • Create a WSG version of this SDK
  • Replace axios with @ringcentral/sdk ?
  • Make it an RingCentral official project
  • PubNub
    • if use @ringcentral/sdk, then no need to implement
  • Support events
    • if use @ringcentral/sdk, then no need to implement
0.10.0

4 years ago

0.9.0

4 years ago

0.8.0

4 years ago

0.7.0

4 years ago

0.6.0

4 years ago

0.5.0

4 years ago

0.4.0

4 years ago

0.3.5

4 years ago

0.3.4

4 years ago

0.3.2

4 years ago

0.3.3

4 years ago

0.3.1

4 years ago

0.3.0

4 years ago

0.2.0

4 years ago

0.1.0

4 years ago