osu-api-extended
Version:
Advanced osu! api wrapper cover all V2 and V1 endpoints, and provide useful tools
101 lines (100 loc) • 3.5 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());
});
};
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.description = void 0;
const request_1 = require("../../../../utility/request");
const index_1 = require("../../../../tools/index");
const category_1 = __importDefault(require("../../form/beatmap/category"));
const handleErrors_1 = require("../../../../utility/handleErrors");
const _mode = [
'osu',
'taiko',
'fruits',
'mania',
];
exports.description = {
auth: 2,
title: __filename,
method: 'GET',
description: 'Return data of the beatmap set',
params: [
{
type: 'number',
name: 'id',
optional: false,
description: 'id of the beatmap',
},
{
type: 'string',
name: 'mode',
optional: true,
description: '\`\`\`osu\`\`\` or \`\`\`fruits\`\`\` or \`\`\`mania\`\`\` or \`\`\`taiko\`\`\`',
},
{
type: 'string',
name: 'converted',
optional: true,
description: '\`\`\`0\`\`\` or \`\`\`1\`\`\`',
},
{
type: 'string',
name: 'hash',
optional: true,
description: 'beatmap file hash',
},
{
type: 'string',
name: 'limit',
optional: true,
description: 'Maximum number of results',
},
{
type: 'string/number',
name: 'mods',
optional: true,
description: 'Name of the mods \`\`\`HDDT\`\`\` or mods number \`\`\`72\`\`\`',
},
{
type: 'string',
name: 'since',
optional: true,
description: 'Return all beatmaps ranked or loved since this date. Must be a MySQL date. In UTC',
},
],
};
;
const name = (id, obj = {}) => __awaiter(void 0, void 0, void 0, function* () {
const params = {
s: id,
m: _mode.indexOf(obj.mode),
a: obj.converted,
h: obj.hash,
since: obj.since,
mods: (0, index_1.calculate_mods)(obj.mods || '').number,
limit: obj.limit,
};
if (params.m == -1)
delete params.m;
const data = yield (0, request_1.request)(`https://osu.ppy.sh/api/get_beatmaps`, {
method: 'GET',
params: params,
});
if (data.error)
return (0, handleErrors_1.handleErrors)(new Error(data.error));
if (data.length == 0)
return [];
const format = (0, category_1.default)(data);
return format;
});
exports.default = name;
;