Code Monkey home page Code Monkey logo

node-dingtalk's Introduction

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

const DingtalkSdk = require('@axolo/node-dingtalk');

const dingtalk = new DingtalkSdk({
  agentId: 'AGENT_ID',
  appKey: 'APP_KEY',
  appSecret: 'APP_SECRET',
});

dingtalk.execute('/user/getuserinfo', {
  body: { code: 'authcode' }
}).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

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.