@rc-ex/rcsdk 1.2.0 → 1.2.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +21 -12
- package/lib/index.d.ts +3 -3
- package/lib/index.js +3 -4
- package/lib/index.js.map +1 -1
- package/lib/index.ts +68 -0
- package/package.json +5 -5
- package/src/index.d.ts +13 -0
- package/src/index.js +51 -0
- package/src/index.js.map +1 -0
- package/src/index.ts +10 -8
- package/tsconfig.json +0 -3
package/README.md
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
# RingCentral SDK extension
|
|
2
2
|
|
|
3
|
-
This extension makes
|
|
3
|
+
This extension makes
|
|
4
|
+
[@ringcentral/sdk](https://www.npmjs.com/package/@ringcentral/sdk) the HTTP
|
|
5
|
+
engine.
|
|
4
6
|
|
|
5
7
|
## Install
|
|
6
8
|
|
|
@@ -11,9 +13,9 @@ yarn add @rc-ex/rcsdk
|
|
|
11
13
|
## Usage
|
|
12
14
|
|
|
13
15
|
```ts
|
|
14
|
-
import SDK from
|
|
15
|
-
import RingCentral from
|
|
16
|
-
import RcSdkExtension from
|
|
16
|
+
import SDK from "@ringcentral/sdk";
|
|
17
|
+
import RingCentral from "@rc-ex/core";
|
|
18
|
+
import RcSdkExtension from "@rc-ex/rcsdk";
|
|
17
19
|
|
|
18
20
|
// @ringcentral/sdk
|
|
19
21
|
const sdk = new SDK({ clientId, clientSecret, server });
|
|
@@ -28,19 +30,25 @@ await rc.installExtension(rcSdkExtension);
|
|
|
28
30
|
const extensionInfo = await rc.restapi().account().extension().get();
|
|
29
31
|
```
|
|
30
32
|
|
|
31
|
-
For a working sample, please check this
|
|
33
|
+
For a working sample, please check this
|
|
34
|
+
[test case](../../../test/rcsdk-extension.spec.ts).
|
|
32
35
|
|
|
33
36
|
## Known issues
|
|
34
37
|
|
|
35
|
-
`multipart/form-data` does not work, because `@rc-ex/core` is originally
|
|
36
|
-
For such cases, please use
|
|
38
|
+
`multipart/form-data` does not work, because `@rc-ex/core` is originally
|
|
39
|
+
designed for [axios](https://github.com/axios/axios). For such cases, please use
|
|
40
|
+
`@ringcentral/sdk` directly, such as
|
|
41
|
+
`await sdk.post('/restapi/v1.0/account/~/extension/~/fax', ...);`
|
|
37
42
|
|
|
38
|
-
Some extensions don't work with this extension. For example, the Retry Extension
|
|
43
|
+
Some extensions don't work with this extension. For example, the Retry Extension
|
|
44
|
+
and RateLimit Extension because they rely on RestException object which
|
|
45
|
+
`@ringcentral/sdk` doesn't throw.
|
|
39
46
|
|
|
40
47
|
## Switch between @ringcentral/sdk and axios
|
|
41
48
|
|
|
42
|
-
[axios][https://github.com/axios/axios] is the default HTTP engine.
|
|
43
|
-
|
|
49
|
+
[axios][https://github.com/axios/axios] is the default HTTP engine. This
|
|
50
|
+
extension makes `@ringcentral/sdk` as HTTP engine. to switch back to `axios`,
|
|
51
|
+
just disable this extension:
|
|
44
52
|
|
|
45
53
|
```ts
|
|
46
54
|
// ringcentral-extensible + rcsdk extension
|
|
@@ -56,5 +64,6 @@ rcSdkExtension.disable();
|
|
|
56
64
|
const extensionInfo2 = await rc.restapi().account().extension().get();
|
|
57
65
|
```
|
|
58
66
|
|
|
59
|
-
Please note that by default `@ringcentral/sdk` and `axios` doesn't share tokens.
|
|
60
|
-
|
|
67
|
+
Please note that by default `@ringcentral/sdk` and `axios` doesn't share tokens.
|
|
68
|
+
You may need to manage tokens separately. Or you can make them share tokens
|
|
69
|
+
explicitly by getting token from one and setting to the other.
|
package/lib/index.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import type RingCentral from
|
|
2
|
-
import SdkExtension from
|
|
3
|
-
import type SDK from
|
|
1
|
+
import type RingCentral from "@rc-ex/core";
|
|
2
|
+
import SdkExtension from "@rc-ex/core/src/SdkExtension";
|
|
3
|
+
import type SDK from "@ringcentral/sdk";
|
|
4
4
|
export interface RcSdkOptions {
|
|
5
5
|
rcSdk: SDK;
|
|
6
6
|
}
|
package/lib/index.js
CHANGED
|
@@ -3,15 +3,15 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
const SdkExtension_1 = __importDefault(require("@rc-ex/core/
|
|
7
|
-
const RestException_1 = __importDefault(require("@rc-ex/core/
|
|
6
|
+
const SdkExtension_1 = __importDefault(require("@rc-ex/core/src/SdkExtension"));
|
|
7
|
+
const RestException_1 = __importDefault(require("@rc-ex/core/src/RestException"));
|
|
8
8
|
class RcSdkExtension extends SdkExtension_1.default {
|
|
9
9
|
constructor(options) {
|
|
10
10
|
super();
|
|
11
11
|
this.options = options;
|
|
12
12
|
}
|
|
13
13
|
async install(rc) {
|
|
14
|
-
Object.defineProperty(rc,
|
|
14
|
+
Object.defineProperty(rc, "token", {
|
|
15
15
|
get: async () => this.options.rcSdk.platform().auth().data(),
|
|
16
16
|
});
|
|
17
17
|
const request = rc.request.bind(rc);
|
|
@@ -45,7 +45,6 @@ class RcSdkExtension extends SdkExtension_1.default {
|
|
|
45
45
|
throw new RestException_1.default(response);
|
|
46
46
|
};
|
|
47
47
|
}
|
|
48
|
-
// eslint-disable-next-line class-methods-use-this, @typescript-eslint/no-empty-function
|
|
49
48
|
async revoke() { }
|
|
50
49
|
}
|
|
51
50
|
exports.default = RcSdkExtension;
|
package/lib/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":";;;;;AAMA,gFAAwD;AACxD,kFAA0D;AAO1D,MAAM,cAAe,SAAQ,sBAAY;IAGvC,YAAmB,OAAqB;QACtC,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACzB,CAAC;IAEM,KAAK,CAAC,OAAO,CAAC,EAAe;QAClC,MAAM,CAAC,cAAc,CAAC,EAAE,EAAE,OAAO,EAAE;YACjC,GAAG,EAAE,KAAK,IAAI,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE;SAC7D,CAAC,CAAC;QACH,MAAM,OAAO,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACpC,EAAE,CAAC,OAAO,GAAG,KAAK,EAChB,MAAkB,EAClB,QAAgB,EAChB,OAAY,EACZ,WAAgB,EAChB,MAA0B,EACA,EAAE;YAC5B,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;gBAClB,OAAO,OAAO,CAAC,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,CAAC,CAAC;YACjE,CAAC;YACD,MAAM,CAAC,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC;gBACtC,MAAM;gBACN,GAAG,EAAE,QAAQ;gBACb,IAAI,EAAE,OAAO;gBACb,KAAK,EAAE,WAAW;gBAClB,OAAO,EAAE,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,OAAO;aACzB,CAAC,CAAC;YACH,MAAM,QAAQ,GAAiB;gBAC7B,IAAI,EAAE,MAAM,CAAC,CAAC,IAAI,EAAE;gBACpB,MAAM,EAAE,CAAC,CAAC,MAAM;gBAChB,UAAU,EAAE,CAAC,CAAC,UAAU;gBACxB,OAAO,EAAE,CAAC,CAAC,OAA4C;gBACvD,MAAM,EAAE;oBACN,MAAM;oBACN,OAAO,EAAE,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;oBACjC,GAAG,EAAE,QAAQ;oBACb,IAAI,EAAE,OAAO;oBACb,MAAM,EAAE,WAAW;iBACb;aACT,CAAC;YACF,IAAI,CAAC,CAAC,EAAE,EAAE,CAAC;gBACT,OAAO,QAAQ,CAAC;YAClB,CAAC;YACD,MAAM,IAAI,uBAAa,CAAC,QAAQ,CAAC,CAAC;QACpC,CAAC,CAAC;IACJ,CAAC;IAEM,KAAK,CAAC,MAAM,KAAmB,CAAC;CACxC;AAED,kBAAe,cAAc,CAAC"}
|
package/lib/index.ts
ADDED
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
import type RingCentral from "@rc-ex/core";
|
|
2
|
+
import type {
|
|
3
|
+
RestMethod,
|
|
4
|
+
RestRequestConfig,
|
|
5
|
+
RestResponse,
|
|
6
|
+
} from "@rc-ex/core/src/types";
|
|
7
|
+
import SdkExtension from "@rc-ex/core/src/SdkExtension";
|
|
8
|
+
import RestException from "@rc-ex/core/src/RestException";
|
|
9
|
+
import type SDK from "@ringcentral/sdk";
|
|
10
|
+
|
|
11
|
+
export interface RcSdkOptions {
|
|
12
|
+
rcSdk: SDK;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
class RcSdkExtension extends SdkExtension {
|
|
16
|
+
public options: RcSdkOptions;
|
|
17
|
+
|
|
18
|
+
public constructor(options: RcSdkOptions) {
|
|
19
|
+
super();
|
|
20
|
+
this.options = options;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
public async install(rc: RingCentral) {
|
|
24
|
+
Object.defineProperty(rc, "token", {
|
|
25
|
+
get: async () => this.options.rcSdk.platform().auth().data(),
|
|
26
|
+
});
|
|
27
|
+
const request = rc.request.bind(rc);
|
|
28
|
+
rc.request = async <T>(
|
|
29
|
+
method: RestMethod,
|
|
30
|
+
endpoint: string,
|
|
31
|
+
content?: {},
|
|
32
|
+
queryParams?: {},
|
|
33
|
+
config?: RestRequestConfig,
|
|
34
|
+
): Promise<RestResponse<T>> => {
|
|
35
|
+
if (!this.enabled) {
|
|
36
|
+
return request(method, endpoint, content, queryParams, config);
|
|
37
|
+
}
|
|
38
|
+
const r = await this.options.rcSdk.send({
|
|
39
|
+
method,
|
|
40
|
+
url: endpoint,
|
|
41
|
+
body: content,
|
|
42
|
+
query: queryParams,
|
|
43
|
+
headers: config?.headers,
|
|
44
|
+
});
|
|
45
|
+
const response: RestResponse = {
|
|
46
|
+
data: await r.json(),
|
|
47
|
+
status: r.status,
|
|
48
|
+
statusText: r.statusText,
|
|
49
|
+
headers: r.headers as unknown as Record<string, string>,
|
|
50
|
+
config: {
|
|
51
|
+
method,
|
|
52
|
+
baseURL: r.url.split(endpoint)[0],
|
|
53
|
+
url: endpoint,
|
|
54
|
+
data: content,
|
|
55
|
+
params: queryParams,
|
|
56
|
+
} as any,
|
|
57
|
+
};
|
|
58
|
+
if (r.ok) {
|
|
59
|
+
return response;
|
|
60
|
+
}
|
|
61
|
+
throw new RestException(response);
|
|
62
|
+
};
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
public async revoke(): Promise<void> {}
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
export default RcSdkExtension;
|
package/package.json
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@rc-ex/rcsdk",
|
|
3
|
-
"version": "1.2.
|
|
3
|
+
"version": "1.2.2",
|
|
4
4
|
"description": "@ringcentral/sdk extension for ringcentral-extensible project",
|
|
5
5
|
"author": "Tyler Liu <tyler.liu@ringcentral.com>",
|
|
6
6
|
"homepage": "https://github.com/ringcentral/ringcentral-extensible/tree/master/packages/extensions/rcsdk",
|
|
7
7
|
"license": "MIT",
|
|
8
|
-
"main": "
|
|
9
|
-
"types": "
|
|
8
|
+
"main": "src/index.js",
|
|
9
|
+
"types": "src/index.d.ts",
|
|
10
10
|
"repository": {
|
|
11
11
|
"type": "git",
|
|
12
12
|
"url": "git+https://github.com/ringcentral/ringcentral-extensible.git"
|
|
@@ -18,8 +18,8 @@
|
|
|
18
18
|
"access": "public"
|
|
19
19
|
},
|
|
20
20
|
"devDependencies": {
|
|
21
|
-
"@rc-ex/core": "^1.5.
|
|
21
|
+
"@rc-ex/core": "^1.5.2",
|
|
22
22
|
"@ringcentral/sdk": "^5.0.3"
|
|
23
23
|
},
|
|
24
|
-
"gitHead": "
|
|
24
|
+
"gitHead": "a0e465fd1f5d4b0758e6c3641635d5d2ee6c9a3a"
|
|
25
25
|
}
|
package/src/index.d.ts
ADDED
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type RingCentral from "@rc-ex/core";
|
|
2
|
+
import SdkExtension from "@rc-ex/core/src/SdkExtension";
|
|
3
|
+
import type SDK from "@ringcentral/sdk";
|
|
4
|
+
export interface RcSdkOptions {
|
|
5
|
+
rcSdk: SDK;
|
|
6
|
+
}
|
|
7
|
+
declare class RcSdkExtension extends SdkExtension {
|
|
8
|
+
options: RcSdkOptions;
|
|
9
|
+
constructor(options: RcSdkOptions);
|
|
10
|
+
install(rc: RingCentral): Promise<void>;
|
|
11
|
+
revoke(): Promise<void>;
|
|
12
|
+
}
|
|
13
|
+
export default RcSdkExtension;
|
package/src/index.js
ADDED
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const SdkExtension_1 = __importDefault(require("@rc-ex/core/src/SdkExtension"));
|
|
7
|
+
const RestException_1 = __importDefault(require("@rc-ex/core/src/RestException"));
|
|
8
|
+
class RcSdkExtension extends SdkExtension_1.default {
|
|
9
|
+
constructor(options) {
|
|
10
|
+
super();
|
|
11
|
+
this.options = options;
|
|
12
|
+
}
|
|
13
|
+
async install(rc) {
|
|
14
|
+
Object.defineProperty(rc, "token", {
|
|
15
|
+
get: async () => this.options.rcSdk.platform().auth().data(),
|
|
16
|
+
});
|
|
17
|
+
const request = rc.request.bind(rc);
|
|
18
|
+
rc.request = async (method, endpoint, content, queryParams, config) => {
|
|
19
|
+
if (!this.enabled) {
|
|
20
|
+
return request(method, endpoint, content, queryParams, config);
|
|
21
|
+
}
|
|
22
|
+
const r = await this.options.rcSdk.send({
|
|
23
|
+
method,
|
|
24
|
+
url: endpoint,
|
|
25
|
+
body: content,
|
|
26
|
+
query: queryParams,
|
|
27
|
+
headers: config === null || config === void 0 ? void 0 : config.headers,
|
|
28
|
+
});
|
|
29
|
+
const response = {
|
|
30
|
+
data: await r.json(),
|
|
31
|
+
status: r.status,
|
|
32
|
+
statusText: r.statusText,
|
|
33
|
+
headers: r.headers,
|
|
34
|
+
config: {
|
|
35
|
+
method,
|
|
36
|
+
baseURL: r.url.split(endpoint)[0],
|
|
37
|
+
url: endpoint,
|
|
38
|
+
data: content,
|
|
39
|
+
params: queryParams,
|
|
40
|
+
},
|
|
41
|
+
};
|
|
42
|
+
if (r.ok) {
|
|
43
|
+
return response;
|
|
44
|
+
}
|
|
45
|
+
throw new RestException_1.default(response);
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
async revoke() { }
|
|
49
|
+
}
|
|
50
|
+
exports.default = RcSdkExtension;
|
|
51
|
+
//# sourceMappingURL=index.js.map
|
package/src/index.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":";;;;;AAMA,gFAAwD;AACxD,kFAA0D;AAO1D,MAAM,cAAe,SAAQ,sBAAY;IAGvC,YAAmB,OAAqB;QACtC,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACzB,CAAC;IAEM,KAAK,CAAC,OAAO,CAAC,EAAe;QAClC,MAAM,CAAC,cAAc,CAAC,EAAE,EAAE,OAAO,EAAE;YACjC,GAAG,EAAE,KAAK,IAAI,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE;SAC7D,CAAC,CAAC;QACH,MAAM,OAAO,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACpC,EAAE,CAAC,OAAO,GAAG,KAAK,EAChB,MAAkB,EAClB,QAAgB,EAChB,OAAY,EACZ,WAAgB,EAChB,MAA0B,EACA,EAAE;YAC5B,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;gBAClB,OAAO,OAAO,CAAC,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,CAAC,CAAC;YACjE,CAAC;YACD,MAAM,CAAC,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC;gBACtC,MAAM;gBACN,GAAG,EAAE,QAAQ;gBACb,IAAI,EAAE,OAAO;gBACb,KAAK,EAAE,WAAW;gBAClB,OAAO,EAAE,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,OAAO;aACzB,CAAC,CAAC;YACH,MAAM,QAAQ,GAAiB;gBAC7B,IAAI,EAAE,MAAM,CAAC,CAAC,IAAI,EAAE;gBACpB,MAAM,EAAE,CAAC,CAAC,MAAM;gBAChB,UAAU,EAAE,CAAC,CAAC,UAAU;gBACxB,OAAO,EAAE,CAAC,CAAC,OAA4C;gBACvD,MAAM,EAAE;oBACN,MAAM;oBACN,OAAO,EAAE,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;oBACjC,GAAG,EAAE,QAAQ;oBACb,IAAI,EAAE,OAAO;oBACb,MAAM,EAAE,WAAW;iBACb;aACT,CAAC;YACF,IAAI,CAAC,CAAC,EAAE,EAAE,CAAC;gBACT,OAAO,QAAQ,CAAC;YAClB,CAAC;YACD,MAAM,IAAI,uBAAa,CAAC,QAAQ,CAAC,CAAC;QACpC,CAAC,CAAC;IACJ,CAAC;IAEM,KAAK,CAAC,MAAM,KAAmB,CAAC;CACxC;AAED,kBAAe,cAAc,CAAC"}
|
package/src/index.ts
CHANGED
|
@@ -1,8 +1,12 @@
|
|
|
1
|
-
import type RingCentral from
|
|
2
|
-
import type {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
1
|
+
import type RingCentral from "@rc-ex/core";
|
|
2
|
+
import type {
|
|
3
|
+
RestMethod,
|
|
4
|
+
RestRequestConfig,
|
|
5
|
+
RestResponse,
|
|
6
|
+
} from "@rc-ex/core/src/types";
|
|
7
|
+
import SdkExtension from "@rc-ex/core/src/SdkExtension";
|
|
8
|
+
import RestException from "@rc-ex/core/src/RestException";
|
|
9
|
+
import type SDK from "@ringcentral/sdk";
|
|
6
10
|
|
|
7
11
|
export interface RcSdkOptions {
|
|
8
12
|
rcSdk: SDK;
|
|
@@ -17,7 +21,7 @@ class RcSdkExtension extends SdkExtension {
|
|
|
17
21
|
}
|
|
18
22
|
|
|
19
23
|
public async install(rc: RingCentral) {
|
|
20
|
-
Object.defineProperty(rc,
|
|
24
|
+
Object.defineProperty(rc, "token", {
|
|
21
25
|
get: async () => this.options.rcSdk.platform().auth().data(),
|
|
22
26
|
});
|
|
23
27
|
const request = rc.request.bind(rc);
|
|
@@ -27,7 +31,6 @@ class RcSdkExtension extends SdkExtension {
|
|
|
27
31
|
content?: {},
|
|
28
32
|
queryParams?: {},
|
|
29
33
|
config?: RestRequestConfig,
|
|
30
|
-
// eslint-disable-next-line max-params
|
|
31
34
|
): Promise<RestResponse<T>> => {
|
|
32
35
|
if (!this.enabled) {
|
|
33
36
|
return request(method, endpoint, content, queryParams, config);
|
|
@@ -59,7 +62,6 @@ class RcSdkExtension extends SdkExtension {
|
|
|
59
62
|
};
|
|
60
63
|
}
|
|
61
64
|
|
|
62
|
-
// eslint-disable-next-line class-methods-use-this, @typescript-eslint/no-empty-function
|
|
63
65
|
public async revoke(): Promise<void> {}
|
|
64
66
|
}
|
|
65
67
|
|