osu-api-extended
Version:
Advanced osu! api wrapper cover all V2 and V1 endpoints, and provide useful tools
151 lines (150 loc) • 8.27 kB
JavaScript
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.chat_actions = void 0;
const request_1 = require("../../utility/request");
const handleErrors_1 = require("../../utility/handleErrors");
const auth_1 = require("../../utility/auth");
const chat_actions = (params, addons) => __awaiter(void 0, void 0, void 0, function* () {
if (auth_1.credentials.type != 'lazer' && auth_1.credentials.type != 'cli') {
return (0, handleErrors_1.handleErrors)(new Error(`Login via lazer or cli to use this endpoint`));
}
;
const object = {};
let url = 'https://osu.ppy.sh/api/v2';
let method = 'POST';
switch (params === null || params === void 0 ? void 0 : params.type) {
case 'send_pm':
if (auth_1.credentials.type == 'cli' && !auth_1.credentials.scopes.includes('chat.write')) {
return (0, handleErrors_1.handleErrors)(new Error(`Requires "chat.write" scope`));
}
;
url += `/chat/new`;
method = 'POST';
if (params.is_action == null || params.user_id == null || params.message == null) {
return (0, handleErrors_1.handleErrors)(new Error('Missing required parameters'));
}
;
if ((params === null || params === void 0 ? void 0 : params.is_action) != null)
object['is_action'] = params.is_action;
if ((params === null || params === void 0 ? void 0 : params.user_id) != null)
object['target_id'] = params.user_id;
if ((params === null || params === void 0 ? void 0 : params.message) != null)
object['message'] = params.message;
if (params === null || params === void 0 ? void 0 : params.uuid)
object['uuid'] = params.uuid;
break;
case 'send_channel':
if (auth_1.credentials.type == 'cli' && !auth_1.credentials.scopes.includes('chat.write')) {
return (0, handleErrors_1.handleErrors)(new Error(`Requires "chat.write" scope`));
}
;
if ((params === null || params === void 0 ? void 0 : params.channel_id) == null || (params === null || params === void 0 ? void 0 : params.message) == null || (params === null || params === void 0 ? void 0 : params.is_action) == null) {
return (0, handleErrors_1.handleErrors)(new Error(`Missing required parameters`));
}
;
url += `/chat/channels/${params.channel_id}/messages`;
method = 'POST';
if ((params === null || params === void 0 ? void 0 : params.message) != null)
object['message'] = params.message;
if ((params === null || params === void 0 ? void 0 : params.is_action) != null)
object['is_action'] = params.is_action;
break;
case 'send_announce':
if (auth_1.credentials.type == 'cli' && !auth_1.credentials.scopes.includes('chat.write_manage')) {
return (0, handleErrors_1.handleErrors)(new Error(`Requires "chat.write_manage" scope`));
}
;
if (!Array.isArray(params === null || params === void 0 ? void 0 : params.users_ids)) {
return (0, handleErrors_1.handleErrors)(new Error(`User ids should be array`));
}
;
if ((params === null || params === void 0 ? void 0 : params.channel_name) == null) {
return (0, handleErrors_1.handleErrors)(new Error(`Specify channel_name`));
}
;
if ((params === null || params === void 0 ? void 0 : params.message) == null) {
return (0, handleErrors_1.handleErrors)(new Error(`Specify message`));
}
;
url += `/chat/channels`;
method = 'POST';
object['type'] = 'ANNOUNCE';
object['target_ids'] = params.users_ids;
object['message'] = params.message;
object['channel'] = {};
object['channel']['name'] = params.channel_name;
object['channel']['description'] = params.channel_description;
break;
case 'join':
if (auth_1.credentials.type == 'cli' && !auth_1.credentials.scopes.includes('chat.write_manage')) {
return (0, handleErrors_1.handleErrors)(new Error(`Requires "chat.write_manage" scope`));
}
;
if ((params === null || params === void 0 ? void 0 : params.channel_id) == null || (params === null || params === void 0 ? void 0 : params.user_id) == null) {
return (0, handleErrors_1.handleErrors)(new Error(`Missing required parameters`));
}
;
url += `/chat/channels/${params.channel_id}/users/${params.user_id}`;
method = 'PUT';
break;
case 'leave':
if (auth_1.credentials.type == 'cli' && !auth_1.credentials.scopes.includes('chat.write_manage')) {
return (0, handleErrors_1.handleErrors)(new Error(`Requires "chat.write_manage" scope`));
}
;
if ((params === null || params === void 0 ? void 0 : params.channel_id) == null || (params === null || params === void 0 ? void 0 : params.user_id) == null) {
return (0, handleErrors_1.handleErrors)(new Error(`Missing required parameters`));
}
;
url += `/chat/channels/${params.channel_id}/users/${params.user_id}`;
method = 'DELETE';
break;
case 'read':
if (auth_1.credentials.type == 'cli' && !auth_1.credentials.scopes.includes('chat.read')) {
return (0, handleErrors_1.handleErrors)(new Error(`Requires "chat.read" scope`));
}
;
if ((params === null || params === void 0 ? void 0 : params.channel_id) == null || (params === null || params === void 0 ? void 0 : params.message_id) == null) {
return (0, handleErrors_1.handleErrors)(new Error(`Missing required parameters`));
}
;
url += `/chat/channels/${params.channel_id}/mark-as-read/${params.message_id}`;
method = 'PUT';
break;
case 'keepalive':
if (auth_1.credentials.type == 'cli' && !auth_1.credentials.scopes.includes('chat.write')) {
return (0, handleErrors_1.handleErrors)(new Error(`Requires "chat.read" scope`));
}
;
url += `/chat/ack`;
method = 'POST';
if ((params === null || params === void 0 ? void 0 : params.history_since) != null)
object['history_since'] = params.history_since;
if ((params === null || params === void 0 ? void 0 : params.since) != null)
object['since'] = params.since;
break;
default:
return (0, handleErrors_1.handleErrors)(new Error(`Unsupported type: ${params.type}`));
}
;
const data = yield (0, request_1.request)(url, {
method: method,
params: object,
addons,
});
if (data.error)
return (0, handleErrors_1.handleErrors)(new Error(data.error));
if ((params === null || params === void 0 ? void 0 : params.type) == 'keepalive')
return data.silences;
return data;
});
exports.chat_actions = chat_actions;
;