-
Notifications
You must be signed in to change notification settings - Fork 7
/
Copy pathreusable-rest-client.ts
30 lines (28 loc) · 1.03 KB
/
reusable-rest-client.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
import RingCentral from "@rc-ex/core";
import { describe, expect, test } from "vitest";
class ReusableRestClient {
private static rc: RingCentral;
public static getInstance = async (): Promise<RingCentral> => {
if (!ReusableRestClient.rc) {
ReusableRestClient.rc = new RingCentral({
clientId: process.env.RINGCENTRAL_CLIENT_ID!,
clientSecret: process.env.RINGCENTRAL_CLIENT_SECRET!,
server: process.env.RINGCENTRAL_SERVER_URL!,
});
await ReusableRestClient.rc.authorize({
jwt: process.env.RINGCENTRAL_JWT_TOKEN!,
});
} else {
// create a new RestClient but reuse the token
const token = ReusableRestClient.rc.token;
ReusableRestClient.rc = new RingCentral({
clientId: process.env.RINGCENTRAL_CLIENT_ID!,
clientSecret: process.env.RINGCENTRAL_CLIENT_SECRET!,
server: process.env.RINGCENTRAL_SERVER_URL!,
});
ReusableRestClient.rc.token = token;
}
return ReusableRestClient.rc;
};
}
export default ReusableRestClient;