'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} 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; }; }