zcatalyst-integ-cliq
Version:
Node.js SDK for integrating Zoho Catalyst with Zoho Cliq
61 lines (60 loc) • 2.68 kB
JavaScript
import CONSTANT from '../constants.js';
import ApiUtil from './api-util.js';
const { DOMAIN, API, VERSION, MESSAGE, URL_CONSTANTS, FILES } = CONSTANT.API_CONSTANTS;
const API_URL = DOMAIN + API + VERSION;
const POST_TO_CHANNEL_URL = API_URL + '/channelsbyname/';
const POST_TO_BOT_URL = API_URL + '/bots/';
const POST_TO_CHAT_URL = API_URL + '/chats/';
const POST_TO_USER_URL = API_URL + '/buddies/';
export default class CliqApiService {
constructor(connector) {
this.api = new ApiUtil(connector);
}
async postToChannel(arg0, arg1, arg2) {
const urlParams = {};
if (arg2 !== undefined) {
urlParams[URL_CONSTANTS.BOT_UNIQUE_NAME] = arg2;
}
if (typeof arg1 !== 'string') {
const url = POST_TO_CHANNEL_URL + arg0 + FILES;
return this.api.sendRequest(url, undefined, urlParams, arg1);
}
const url = POST_TO_CHANNEL_URL + arg0 + MESSAGE;
return this.api.sendRequest(url, { text: arg1 }, urlParams);
}
async postToChannelAsBot(channelUniqueName, botUniqueName, payload) {
return this.postToChannel(channelUniqueName, payload, botUniqueName);
}
async postToBot(botUniqueName, payload, deliveryInfo = false) {
if (typeof payload === 'string') {
const url = POST_TO_BOT_URL + botUniqueName + MESSAGE;
const requestBody = { text: payload };
if (typeof deliveryInfo === 'boolean') {
requestBody[URL_CONSTANTS.BROADCAST] = deliveryInfo;
}
else if (typeof deliveryInfo !== 'boolean' && deliveryInfo.length > 0) {
requestBody[URL_CONSTANTS.BROADCAST] = false;
requestBody[URL_CONSTANTS.USERIDS] = deliveryInfo.join(',');
}
return this.api.sendRequest(url, requestBody);
}
const url = POST_TO_BOT_URL + botUniqueName + FILES;
return this.api.sendRequest(url, undefined, undefined, payload);
}
async postToChat(chatId, payload) {
if (typeof payload === 'string') {
const url = POST_TO_CHAT_URL + chatId + MESSAGE;
return this.api.sendRequest(url, { text: payload });
}
const url = POST_TO_CHAT_URL + chatId + FILES;
return this.api.sendRequest(url, undefined, undefined, payload);
}
async postToUser(id, payload) {
if (typeof payload === 'string') {
const url = POST_TO_USER_URL + id + MESSAGE;
return this.api.sendRequest(url, { text: payload });
}
const url = POST_TO_USER_URL + id + FILES;
return this.api.sendRequest(url, undefined, undefined, payload);
}
}