workplus-api
Version:
WorkPlus API For Node
128 lines (116 loc) • 3.49 kB
JavaScript
/**
* Created by luomin on 16/7/7.
*/
;
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;