@axolo/node-dingtalk
v0.1.1
Published
Dingtalk OpenAPI Node.js SDK.
Downloads
15
Maintainers
Readme
node-dingtalk
Dingtalk OpenAPI Node.js SDK.
Install
yarn add @axolo/node-dingtalk
API
constructor(config)
params
corp app
| config | required | default | description |
| --------- | :------: | :-----: | ------------------------------------------- |
| appMode | | corp
| corp
= corp internal app, isv
= isv app |
| appType | | eapp
| eapp
= mini app, h5
= web app |
| agentId | true | | agentId |
| appKey | true | | appKey |
| appSecret | true | | appSecret |
isv app
| config | required | default | description |
| ----------- | :------: | :-----: | ------------------------------------------- |
| appMode | isv
| corp
| corp
= corp internal app, isv
= isv app |
| appType | | eapp
| eapp
= mini app, h5
= web app |
| appId | true | | appId |
| suiteId | true | | dingtalk cloud push set suiteTicket |
| suiteKey | true | | suiteKey |
| suiteSecret | true | | suiteSecret |
| eventToken | true | | http event callback encrypt token |
| eventAesKey | true | | http event callback encrypt aesKey |
builtin config
| config | description | | ------------------- | -------------------------------- | | axios | HTTP Client, use axios | | cacheManager | cache, use cache-manager | | cache | cache setting | | baseUrl | base url of Dingtalk OpenAPI | | corpAppAuthTokenUrl | get access token url of corp app | | isvAppAuthTokenUrl | get access token url of isv app | | isvAppAuthInfoUrl | get auth info url | | isvAppAgentUrl | get agent info url |
return
A instance of Dingtalk
OpenAPI Node.js SDK.
execute(api, request = {}, scope = {})
more request options see axios.
params
| parmas | description | | -------------- | -------------------------------------- | | api | querystring, Dingtalk OpenAPI | | request.method | HTTP Method | | request.params | HTTP querystring as Object by GET | | request.body | HTTP body as Object by POST/PATCH/PUT | | scope.corpId | to get accessToken per corp of isv app |
return
Get data or throw dingtalk error from Dingtalk OpenAPI.
callback({ signature, timestamp, nonce, encrypt })
See http event callback for help. This method use as middleware usualy.
params
| params | description | | --------- | ---------------- | | signature | signature string | | timestamp | timestamp string | | nonce | nonce string | | encrypt | encrypt string |
return
event decrypted of callback.
and response
is encrypted response for callback success.
Example
request
const DingtalkSdk = require('@axolo/node-dingtalk');
const config = {
agentId: 'AGENT_ID',
appKey: 'APP_KEY',
appSecret: 'APP_SECRET',
};
const dingtalkSdk = new DingtalkSdk(config);
const request = {
url: '/user/getuserinfo',
body: { code: 'authcode' },
};
dingtalk
.execute(request)
.catch(err => console.log(err))
.then(res => console.log(res));
Test
yarn test ./test/config.test.js # test config
yarn test ./test/execute.test.js # test execute
TIP: Please create .env
and .env.test
in project root before test.
.env
for corp app
agentId = AGENT_ID
appKey = APP_KEY
appSecret = APP_SECRET
for isv app
appMode = isv
appType = h5
appId = APP_ID
# suiteId is required of Dingtalk Cloud Push
suiteId = SUITE_ID
suiteKey = SUITE_KEY
suiteSecret = SUITE_SECRET
# eventToken and eventAesKey is required of HTTP Event Callback
eventToken = EVENT_TOKEN
eventAesKey = EVENT_AES_KEY
.env.test
## http server for http event callback
httpPort = 7001
## mysql rds for dingtalk cloud push
rdsHost = your.mysql.host
rdsPort = 3306
rdsUser = user
rdsPassword = password
rdsDatabase = ding_cloud_push
# get corpId and appId from dingtalk-jsapi or querystring
corpId = CROP_ID
TODO
- test: Assertion Testing with Mocha or Jest.
- cache: class
DingtalkSdkCache
, supportmemory
,redis
,mysql
, etc. - props:
DingtalkSdk.event
,DingtalkSdk.error
.
Thanks
Yueming Fang