UNPKG

workplus-api

Version:
128 lines (116 loc) 3.49 kB
/** * Created by luomin on 16/7/7. */ 'use strict'; let request = require('request'); let Token = require('./token'); let Constant = require('./constant'); let fs = require('fs'); let requestFail = function (err, body) { if (err) { console.error(`WorkPlus接口调用失败: ${err}`); return true; } if (body.status === Constant.TOKEN_NOT_FOUND || body.status === Constant.TOKEN_MISSING) { Token.reset(); return true; } return body.status !== Constant.HTTP_SUCCESS; } let sendRequest = function (args, success, fail) { if (args.url.indexOf('access_token') == -1) { args.url = Token.assembleRequestURL(args.url); } console.log(`请求URL: ${args.url}`); console.log(`请求内容: ${JSON.stringify(args.body)}`); args.json = true; request(args, (err, r, body) => { console.log(`WorkPlus接口返回结果: ${JSON.stringify(body)}`); if (requestFail(err, body)) { fail(body); return; } success(body); }); } let sendGetRequest = function (url) { return new Promise(function (resolve, reject) { sendRequest({url: url}, resolve, reject); }); } let sendPostRequest = function (args) { args.method = 'POST'; return new Promise(function (resolve, reject) { sendRequest(args, resolve, reject); }); } class Client { static verifyTicket(ticket, params) { let url = `tickets/${ticket}`; if (params) { url = `${params.access_endpoint}/${url}`; if (url.indexOf('?') == -1) { url = `${url}?access_token=${params.api_access_token}`; } else { url = `${url}&access_token=${params.api_access_token}`; } } return sendGetRequest(url); } static uploadImage(file, params) { let url = 'medias/compress?thumb=true'; if (params) { url = `${params.access_endpoint}/${url}`; if (url.indexOf('?') == -1) { url = `${url}?access_token=${params.api_access_token}`; } else { url = `${url}&access_token=${params.api_access_token}`; } } return sendPostRequest({ url: url, formData: { media: file } }); } static pushTextMessage(message) { let body = { type: 'TEXT', client_ids: message.recipients, body: { org_id: Token.getOrgId(), content: message.content } } return sendPostRequest({ url: 'apps/mbox', body: body }); } static pushArticleMessage(message) { let body = { type: 'ARTICLE', client_ids: message.recipients, body: { org_id_: Token.getOrgId(), articles: [{ title: message.title, content: message.content, summary: message.content, url: message.url, show_cover: true, cover_url: message.coverURL, create_time: Date.now(), author: '', sort: 0 }] } } return sendPostRequest({ url: 'apps/mbox', body: body }); } } module.exports = Client;