1
0
mirror of synced 2024-11-24 21:36:02 +03:00
mg-bot-api-client-js/lib/v1/client.js
2020-08-24 11:17:55 +03:00

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