@axolo/node-dingtalk

0.1.1 • Public • Published

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, support memory, redis, mysql, etc.
  • props: DingtalkSdk.event, DingtalkSdk.error.

Thanks

Yueming Fang

Package Sidebar

Install

npm i @axolo/node-dingtalk

Weekly Downloads

1

Version

0.1.1

License

MIT

Unpacked Size

22.2 kB

Total Files

6

Last publish

Collaborators

  • axolo