0.1.1 • Published 5 years ago
@axolo/node-dingtalk v0.1.1
node-dingtalk
Dingtalk OpenAPI Node.js SDK.
Install
yarn add @axolo/node-dingtalkAPI
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 executeTIP: Please create .env and .env.test in project root before test.
.env
for corp app
agentId = AGENT_ID
appKey = APP_KEY
appSecret = APP_SECRETfor 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_IDTODO
- test: Assertion Testing with Mocha or Jest.
- cache: class
DingtalkSdkCache, supportmemory,redis,mysql, etc. - props:
DingtalkSdk.event,DingtalkSdk.error.
Thanks
Yueming Fang