300 lines
7.4 KiB
JavaScript
300 lines
7.4 KiB
JavaScript
'use strict';
|
|
|
|
/** @class Client */
|
|
export default class Client {
|
|
constructor(request) {
|
|
this._version = 'v1';
|
|
this._request = request;
|
|
}
|
|
|
|
/**
|
|
* Get bots
|
|
* @param {Object} params - Filter's object for bots
|
|
* @returns {Promise}
|
|
* @memberOf Client
|
|
*/
|
|
getBots(params = {}) {
|
|
return this._request.get(this._version + '/bots', params);
|
|
};
|
|
|
|
/**
|
|
* Get channels
|
|
* @param {Object} params - Filter's object for channels
|
|
* @returns {Promise}
|
|
* @memberOf Client
|
|
*/
|
|
getChannels(params = {}) {
|
|
return this._request.get(this._version + '/channels', params);
|
|
};
|
|
|
|
/**
|
|
* Get chats
|
|
* @param {Object} params - Filter's object for chats
|
|
* @returns {Promise}
|
|
* @memberOf Client
|
|
*/
|
|
getChats(params = {}) {
|
|
return this._request.get(this._version + '/chats', params);
|
|
};
|
|
|
|
/**
|
|
* Get customers
|
|
* @param {Object} params - Filter's object for customers
|
|
* @returns {Promise}
|
|
* @memberOf Client
|
|
*/
|
|
getCustomers(params = {}) {
|
|
return this._request.get(this._version + '/customers', params);
|
|
};
|
|
|
|
/**
|
|
* Get dialogs
|
|
* @param {Object} params - Filter's object for dialogs
|
|
* @returns {Promise}
|
|
* @memberOf Client
|
|
*/
|
|
getDialogs(params = {}) {
|
|
return this._request.get(this._version + '/dialogs', params);
|
|
};
|
|
|
|
/**
|
|
* Get members
|
|
* @param {Object} params - Filter's object for members
|
|
* @returns {Promise}
|
|
* @memberOf Client
|
|
*/
|
|
getMembers(params = {}) {
|
|
return this._request.get(this._version + '/members', params);
|
|
};
|
|
|
|
/**
|
|
* Assign dialog
|
|
* @param {Number} dialog_id - Dialog id
|
|
* @param {Object} dialog - Dialog object
|
|
* @returns {Promise}
|
|
* @throws {Error}
|
|
* @memberOf Client
|
|
*/
|
|
assignDialog(dialog_id, dialog) {
|
|
if (!dialog_id) {
|
|
throw new Error('Parameter `dialog_id` is required');
|
|
}
|
|
|
|
return this._request.patch(this._version + '/dialogs/'+ dialog_id + '/assign', dialog);
|
|
};
|
|
|
|
/**
|
|
* Unassign dialog
|
|
* @param {Number} dialog_id - Dialog id
|
|
* @returns {Promise}
|
|
* @throws {Error}
|
|
* @memberOf Client
|
|
*/
|
|
unassignDialog(dialog_id) {
|
|
if (!dialog_id) {
|
|
throw new Error('Parameter `dialog_id` is required');
|
|
}
|
|
|
|
return this._request.patch(this._version + '/dialogs/'+ dialog_id + '/unassign', {});
|
|
}
|
|
|
|
/**
|
|
* Close dialog
|
|
* @param {Number} dialog_id - Dialog id
|
|
* @returns {Promise}
|
|
* @throws {Error}
|
|
* @memberOf Client
|
|
*/
|
|
closeDialog(dialog_id) {
|
|
if (!dialog_id) {
|
|
throw new Error('Parameter `dialog_id` is required');
|
|
}
|
|
|
|
return this._request.delete(this._version + '/dialogs/'+ dialog_id + '/close');
|
|
};
|
|
|
|
/**
|
|
* Send message
|
|
* @param {Object} message - Message object
|
|
* @returns {Promise}
|
|
* @memberOf Client
|
|
*/
|
|
sendMessage(message) {
|
|
return this._request.post(this._version + '/messages', message);
|
|
};
|
|
|
|
/**
|
|
* Get messages
|
|
* @param {Object} params - Filter's object for messages
|
|
* @returns {Promise}
|
|
* @memberOf Client
|
|
*/
|
|
getMessages(params = {}) {
|
|
return this._request.get(this._version + '/messages', params);
|
|
};
|
|
|
|
/**
|
|
* Delete message
|
|
* @param {Number} message_id - Message id
|
|
* @returns {Promise}
|
|
* @throws {Error}
|
|
* @memberOf Client
|
|
*/
|
|
deleteMessage(message_id) {
|
|
if (!message_id) {
|
|
throw new Error('Parameter `message_id` is required');
|
|
}
|
|
|
|
return this._request.delete(this._version + '/messages/' + message_id);
|
|
};
|
|
|
|
/**
|
|
* Edit message
|
|
* @param {Number} message_id - Message id
|
|
* @param {Object} message - Message object
|
|
* @returns {Promise}
|
|
* @throws {Error}
|
|
* @memberOf Client
|
|
*/
|
|
editMessage(message_id, message) {
|
|
if (!message_id) {
|
|
throw new Error('Parameter `message_id` is required');
|
|
}
|
|
|
|
return this._request.patch(this._version + '/messages/' + message_id, message);
|
|
};
|
|
|
|
/**
|
|
* Get bot commands
|
|
* @param {Object} params - Filter's object for commands
|
|
* @returns {Promise}
|
|
* @memberOf Client
|
|
*/
|
|
getCommands(params = {}) {
|
|
return this._request.get(this._version + '/my/commands', params);
|
|
};
|
|
|
|
/**
|
|
* Edit bot command
|
|
* @param {string} command_name - Command name
|
|
* @param {Object} command - Command object
|
|
* @returns {Promise}
|
|
* @throws {Error}
|
|
* @memberOf Client
|
|
*/
|
|
editCommand(command_name, command) {
|
|
if (!command_name) {
|
|
throw new Error('Parameter `command_name` is required');
|
|
}
|
|
|
|
return this._request.put(this._version + '/my/commands/' + command_name, command);
|
|
};
|
|
|
|
/**
|
|
* Delete bot command
|
|
* @param {string} command_name - Command name
|
|
* @returns {Promise}
|
|
* @throws {Error}
|
|
* @memberOf Client
|
|
*/
|
|
deleteCommand(command_name) {
|
|
if (!command_name) {
|
|
throw new Error('Parameter `command_name` is required');
|
|
}
|
|
|
|
return this._request.delete(this._version + '/my/commands/' + command_name);
|
|
};
|
|
|
|
/**
|
|
* Bot information update
|
|
* @param {Object} data - Bot data
|
|
* @returns {Promise}
|
|
* @memberOf Client
|
|
*/
|
|
info(data) {
|
|
return this._request.patch(this._version + '/my/info', data);
|
|
};
|
|
|
|
/**
|
|
* Get users
|
|
* @param {Object} params - Filter's object for users
|
|
* @returns {Promise}
|
|
* @memberOf Client
|
|
*/
|
|
getUsers(params = {}) {
|
|
return this._request.get(this._version + '/users', params);
|
|
};
|
|
|
|
/**
|
|
* Get file information
|
|
* @param {string} file_id - File identifier
|
|
* @returns {Promise}
|
|
* @throws {Error}
|
|
* @memberOf Client
|
|
*/
|
|
getFile(file_id) {
|
|
if (!file_id) {
|
|
throw new Error('Parameter `file_id` is required');
|
|
}
|
|
|
|
return this._request.get(this._version + '/files/' + file_id)
|
|
}
|
|
|
|
/**
|
|
* Upload file
|
|
*
|
|
* @param {string} data - Binary data
|
|
* @returns {Promise}
|
|
* @throws {Error}
|
|
* @memberOf Client
|
|
*/
|
|
filesUpload(data) {
|
|
return this._request.post(this._version + '/files/upload', data, false);
|
|
}
|
|
|
|
/**
|
|
* Upload file by url
|
|
*
|
|
* @param {string} url - File url address
|
|
* @returns {Promise}
|
|
* @throws {Error}
|
|
* @memberOf Client
|
|
*/
|
|
filesUploadByUrl(url) {
|
|
if (!url) {
|
|
throw new Error('Parameter `url` is required');
|
|
}
|
|
|
|
return this._request.post(this._version + '/files/upload_by_url', {url})
|
|
}
|
|
|
|
/**
|
|
* Get websocket url
|
|
* @param {array<string>} events - Array of strings with websocket events
|
|
* @returns {Map}
|
|
* @throws {Error}
|
|
* @memberOf Client
|
|
*/
|
|
getWebsocketData(events) {
|
|
if (!events) {
|
|
throw new Error('Events is required');
|
|
}
|
|
|
|
let map = new Map();
|
|
let url = 'wss://' + this._request.host + '/api/bot/' + this._version + '/ws?events=';
|
|
|
|
events.forEach(function (event) {
|
|
url += event + ',';
|
|
});
|
|
|
|
url = url.slice(0, -1);
|
|
|
|
map.set('url', url);
|
|
map.set('headers', {
|
|
'X-Bot-Token': this._request.token
|
|
});
|
|
|
|
return map;
|
|
};
|
|
}
|