Fixed tsc build errors

This commit is contained in:
RemixDev
2021-05-23 22:42:02 +02:00
parent 05a892565b
commit f33cbcb7d0
55 changed files with 1305 additions and 37 deletions

View File

@@ -0,0 +1,59 @@
"use strict";
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 });
// @ts-expect-error
const deezer_js_1 = require("deezer-js");
const main_1 = require("../../../main");
const path = '/album-search/';
const handler = (req, res, next) => __awaiter(void 0, void 0, void 0, function* () {
if (!main_1.sessionDZ[req.session.id])
main_1.sessionDZ[req.session.id] = new deezer_js_1.Deezer();
const dz = main_1.sessionDZ[req.session.id];
if (!req.query) {
res.status(400).send();
return next();
}
const { term, start, nb, ack } = parseQuery(req.query);
if (!term || term.trim() === '') {
res.status(400).send();
return next();
}
const albums = yield dz.api.search_album(term, { start, nb });
const output = {
data: albums,
total: albums.data.length,
ack
};
res.send(output);
res.send();
next();
});
const apiHandler = { path, handler };
exports.default = apiHandler;
function parseQuery(query) {
let startingPoint = 0;
if (typeof query.start !== 'undefined') {
startingPoint = parseInt(query.start);
}
let newNb = 30;
if (typeof query.nb !== 'undefined') {
newNb = parseInt(query.nb);
}
return {
term: query.term,
start: startingPoint,
nb: newNb,
ack: query.ack
};
}
// function getAlbums(term: string, start: number, nb: number): any[] {
// return []
// }

View File

@@ -0,0 +1,52 @@
"use strict";
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 });
const utils_1 = require("../../../../tests/utils");
describe('albumSearch requests', () => {
it('should respond 200 to calls with term', () => __awaiter(void 0, void 0, void 0, function* () {
const responseStatusCollector = [];
const batchCalls = [
'/api/album-search/?term=eminem',
'/api/album-search/?term=eminem?start=10',
'/api/album-search/?term=eminem?ack=aa',
'/api/album-search/?term=eminem?ack=aa?start=10',
'/api/album-search/?term=eminem?ack=aa?start=10?nb=34'
];
for (const uri of batchCalls) {
responseStatusCollector.push((yield utils_1.appSendGet(uri)).status);
}
expect(responseStatusCollector).toMatchObject(new Array(batchCalls.length).fill(200));
expect(responseStatusCollector).toMatchObject(new Array(responseStatusCollector.length).fill(200));
}));
it('should respond 400 to calls without term', () => __awaiter(void 0, void 0, void 0, function* () {
const responseStatusCollector = [];
const batchCalls = [
'/api/album-search/',
'/api/album-search/?start=10',
'/api/album-search/?ack=aa',
'/api/album-search/?ack=aa?start=10',
'/api/album-search/?ack=aa?start=10?nb=34'
];
for (const uri of batchCalls) {
responseStatusCollector.push((yield utils_1.appSendGet(uri)).status);
}
expect(responseStatusCollector).toMatchObject(new Array(responseStatusCollector.length).fill(400));
}));
it('should respond the desired search result', () => __awaiter(void 0, void 0, void 0, function* () {
const res = (yield utils_1.appSendGet('/api/album-search/?term=eminem')).body;
expect(res.data.data.length).not.toBe(0);
}));
// TODO Understand whic should be the correct response
it.skip('should respond the desired search result with a start parameter', () => __awaiter(void 0, void 0, void 0, function* () {
const res = (yield utils_1.appSendGet('/api/album-search/?term=eminem?start=10')).body;
expect(res.data.data.length).not.toBe(0);
}));
});

View File

@@ -0,0 +1 @@
"use strict";

View File

@@ -0,0 +1 @@
"use strict";

View File

@@ -0,0 +1,42 @@
"use strict";
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 });
// @ts-expect-error
const deezer_js_1 = require("deezer-js");
const main_1 = require("../../../main");
const primitive_checks_1 = require("../../../helpers/primitive-checks");
const errors_1 = require("../../../helpers/errors");
const path = '/getChartTracks';
const handler = (req, res, next) => __awaiter(void 0, void 0, void 0, function* () {
try {
if (!main_1.sessionDZ[req.session.id])
main_1.sessionDZ[req.session.id] = new deezer_js_1.Deezer();
const dz = main_1.sessionDZ[req.session.id];
if (primitive_checks_1.isObjectEmpy(req.query) || !req.query.id) {
throw new errors_1.BadRequestError();
}
const playlistId = req.query.id;
const index = req.query.index;
const limit = req.query.limit;
const response = yield dz.api.get_playlist_tracks(playlistId, { index, limit });
res.status(200).send(response);
next();
}
catch (error) {
if (errors_1.isBadRequestError(error)) {
errors_1.consoleError(error.message);
res.status(400).send();
return next();
}
}
});
const apiHandler = { path, handler };
exports.default = apiHandler;

38
server/dist/routes/api/get/getCharts.js vendored Normal file
View File

@@ -0,0 +1,38 @@
"use strict";
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 });
// @ts-expect-error
const deezer_js_1 = require("deezer-js");
const main_1 = require("../../../main");
const path = '/getCharts';
let chartsCache;
const handler = (req, res) => __awaiter(void 0, void 0, void 0, function* () {
if (!chartsCache) {
if (!main_1.sessionDZ[req.session.id])
main_1.sessionDZ[req.session.id] = new deezer_js_1.Deezer();
const dz = main_1.sessionDZ[req.session.id];
const chartsData = yield dz.api.get_countries_charts();
const countries = [];
chartsData.forEach((country) => {
countries.push({
title: country.title.replace('Top ', ''),
id: country.id,
picture_small: country.picture_small,
picture_medium: country.picture_medium,
picture_big: country.picture_big
});
});
chartsCache = { data: countries };
}
res.send(chartsCache);
});
const apiHandler = { path, handler };
exports.default = apiHandler;

27
server/dist/routes/api/get/getHome.js vendored Normal file
View File

@@ -0,0 +1,27 @@
"use strict";
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 });
// @ts-expect-error
const deezer_js_1 = require("deezer-js");
const main_1 = require("../../../main");
const path = '/getHome';
let homeCache;
const handler = (req, res) => __awaiter(void 0, void 0, void 0, function* () {
if (!main_1.sessionDZ[req.session.id])
main_1.sessionDZ[req.session.id] = new deezer_js_1.Deezer();
const dz = main_1.sessionDZ[req.session.id];
if (!homeCache) {
homeCache = yield dz.api.get_chart(0, { limit: 30 });
}
res.send(homeCache);
});
const apiHandler = { path, handler };
exports.default = apiHandler;

16
server/dist/routes/api/get/getQueue.js vendored Normal file
View File

@@ -0,0 +1,16 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
const main_1 = require("../../../main");
const path = '/getQueue';
// let homeCache: any
const handler = (_, res) => {
const result = {
queue: main_1.queue,
order: main_1.queueOrder
};
if (main_1.currentJob)
result.currentItem = main_1.currentJob.downloadObject.getSlimmedDict();
res.send(result);
};
const apiHandler = { path, handler };
exports.default = apiHandler;

View File

@@ -1,8 +1,9 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
const path = '/sample';
const main_1 = require("../../../main");
const path = '/getSettings';
const handler = (_, res) => {
res.send('Mandi');
res.send({ settings: main_1.settings, defaultSettings: main_1.defaultSettings });
};
const apiHandler = { path, handler };
exports.default = apiHandler;

View File

@@ -0,0 +1,53 @@
"use strict";
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 });
// @ts-expect-error
const deezer_js_1 = require("deezer-js");
const main_1 = require("../../../main");
const path = '/getTracklist';
const handler = (req, res) => __awaiter(void 0, void 0, void 0, function* () {
if (!main_1.sessionDZ[req.session.id])
main_1.sessionDZ[req.session.id] = new deezer_js_1.Deezer();
const dz = main_1.sessionDZ[req.session.id];
const list_id = String(req.query.id);
const list_type = String(req.query.type);
switch (list_type) {
case 'artist': {
const artistAPI = yield dz.api.get_artist(list_id);
artistAPI.releases = yield dz.gw.get_artist_discography_tabs(list_id, { limit: 100 });
res.send(artistAPI);
break;
}
default: {
const releaseAPI = yield dz.api[`get_${list_type}`](list_id);
let releaseTracksAPI = yield dz.api[`get_${list_type}_tracks`](list_id);
releaseTracksAPI = releaseTracksAPI.data;
const tracks = [];
const showdiscs = list_type === 'album' &&
releaseTracksAPI.length &&
releaseTracksAPI[releaseTracksAPI.length - 1].disk_number !== 1;
let current_disk = 0;
releaseTracksAPI.forEach((track) => {
if (showdiscs && parseInt(track.disk_number) !== current_disk) {
current_disk = parseInt(track.disk_number);
tracks.push({ type: 'disc_separator', number: current_disk });
}
track.selected = false;
tracks.push(track);
});
releaseAPI.tracks = tracks;
res.send(releaseAPI);
break;
}
}
});
const apiHandler = { path, handler };
exports.default = apiHandler;

View File

@@ -0,0 +1,37 @@
"use strict";
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 });
// @ts-expect-error
const deezer_js_1 = require("deezer-js");
const main_1 = require("../../../main");
const path = '/getUserAlbums';
const handler = (req, res) => __awaiter(void 0, void 0, void 0, function* () {
if (!main_1.sessionDZ[req.session.id])
main_1.sessionDZ[req.session.id] = new deezer_js_1.Deezer();
const dz = main_1.sessionDZ[req.session.id];
let data;
if (dz.logged_in) {
const userID = dz.current_user.id;
try {
data = yield dz.api.get_user_albums(userID, { limit: -1 });
data = data.data;
}
catch (_a) {
data = yield dz.gw.get_user_albums(userID, { limit: -1 });
}
}
else {
data = { error: 'notLoggedIn' };
}
res.send(data);
});
const apiHandler = { path, handler };
exports.default = apiHandler;

View File

@@ -0,0 +1,37 @@
"use strict";
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 });
// @ts-expect-error
const deezer_js_1 = require("deezer-js");
const main_1 = require("../../../main");
const path = '/getUserArtists';
const handler = (req, res) => __awaiter(void 0, void 0, void 0, function* () {
if (!main_1.sessionDZ[req.session.id])
main_1.sessionDZ[req.session.id] = new deezer_js_1.Deezer();
const dz = main_1.sessionDZ[req.session.id];
let data;
if (dz.logged_in) {
const userID = dz.current_user.id;
try {
data = yield dz.api.get_user_artists(userID, { limit: -1 });
data = data.data;
}
catch (_a) {
data = yield dz.gw.get_user_artists(userID, { limit: -1 });
}
}
else {
data = { error: 'notLoggedIn' };
}
res.send(data);
});
const apiHandler = { path, handler };
exports.default = apiHandler;

View File

@@ -0,0 +1,47 @@
"use strict";
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 });
// @ts-expect-error
const deezer_js_1 = require("deezer-js");
const main_1 = require("../../../main");
const path = '/getUserFavorites';
const handler = (req, res) => __awaiter(void 0, void 0, void 0, function* () {
if (!main_1.sessionDZ[req.session.id])
main_1.sessionDZ[req.session.id] = new deezer_js_1.Deezer();
const dz = main_1.sessionDZ[req.session.id];
let result = {};
if (dz.logged_in) {
const userID = dz.current_user.id;
try {
let data;
data = yield dz.api.get_user_playlists(userID, { limit: -1 });
result.playlists = data.data;
data = yield dz.api.get_user_albums(userID, { limit: -1 });
result.albums = data.data;
data = yield dz.api.get_user_artists(userID, { limit: -1 });
result.artists = data.data;
data = yield dz.api.get_user_tracks(userID, { limit: -1 });
result.tracks = data.data;
}
catch (_a) {
result.playlists = yield dz.gw.get_user_playlists(userID, { limit: -1 });
result.albums = yield dz.gw.get_user_albums(userID, { limit: -1 });
result.artists = yield dz.gw.get_user_artists(userID, { limit: -1 });
result.tracks = yield dz.gw.get_user_tracks(userID, { limit: -1 });
}
}
else {
result = { error: 'notLoggedIn' };
}
res.send(result);
});
const apiHandler = { path, handler };
exports.default = apiHandler;

View File

@@ -0,0 +1,37 @@
"use strict";
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 });
// @ts-expect-error
const deezer_js_1 = require("deezer-js");
const main_1 = require("../../../main");
const path = '/getUserPlaylists';
const handler = (req, res) => __awaiter(void 0, void 0, void 0, function* () {
if (!main_1.sessionDZ[req.session.id])
main_1.sessionDZ[req.session.id] = new deezer_js_1.Deezer();
const dz = main_1.sessionDZ[req.session.id];
let data;
if (dz.logged_in) {
const userID = dz.current_user.id;
try {
data = yield dz.api.get_user_playlists(userID, { limit: -1 });
data = data.data;
}
catch (_a) {
data = yield dz.gw.get_user_playlists(userID, { limit: -1 });
}
}
else {
data = { error: 'notLoggedIn' };
}
res.send(data);
});
const apiHandler = { path, handler };
exports.default = apiHandler;

View File

@@ -0,0 +1 @@
"use strict";

View File

@@ -0,0 +1,37 @@
"use strict";
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 });
// @ts-expect-error
const deezer_js_1 = require("deezer-js");
const main_1 = require("../../../main");
const path = '/getUserTracks';
const handler = (req, res) => __awaiter(void 0, void 0, void 0, function* () {
if (!main_1.sessionDZ[req.session.id])
main_1.sessionDZ[req.session.id] = new deezer_js_1.Deezer();
const dz = main_1.sessionDZ[req.session.id];
let data;
if (dz.logged_in) {
const userID = dz.current_user.id;
try {
data = yield dz.api.get_user_tracks(userID, { limit: -1 });
data = data.data;
}
catch (_a) {
data = yield dz.gw.get_user_tracks(userID, { limit: -1 });
}
}
else {
data = { error: 'notLoggedIn' };
}
res.send(data);
});
const apiHandler = { path, handler };
exports.default = apiHandler;

View File

@@ -3,5 +3,33 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const sample_1 = __importDefault(require("./sample"));
exports.default = [sample_1.default];
const getHome_1 = __importDefault(require("./getHome"));
const getCharts_1 = __importDefault(require("./getCharts"));
const mainSearch_1 = __importDefault(require("./mainSearch"));
const search_1 = __importDefault(require("./search"));
const getTracklist_1 = __importDefault(require("./getTracklist"));
const albumSearch_1 = __importDefault(require("./albumSearch"));
const getChartTracks_1 = __importDefault(require("./getChartTracks"));
const getSettings_1 = __importDefault(require("./getSettings"));
const getUserTracks_1 = __importDefault(require("./getUserTracks"));
const getUserAlbums_1 = __importDefault(require("./getUserAlbums"));
const getUserArtists_1 = __importDefault(require("./getUserArtists"));
const getUserPlaylists_1 = __importDefault(require("./getUserPlaylists"));
const getUserFavorites_1 = __importDefault(require("./getUserFavorites"));
const getQueue_1 = __importDefault(require("./getQueue"));
exports.default = [
albumSearch_1.default,
getHome_1.default,
getCharts_1.default,
getChartTracks_1.default,
mainSearch_1.default,
search_1.default,
getTracklist_1.default,
getSettings_1.default,
getUserTracks_1.default,
getUserAlbums_1.default,
getUserArtists_1.default,
getUserPlaylists_1.default,
getUserFavorites_1.default,
getQueue_1.default
];

View File

@@ -0,0 +1,64 @@
"use strict";
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 });
// @ts-expect-error
const deezer_js_1 = require("deezer-js");
const main_1 = require("../../../main");
const path = '/mainSearch';
const handler = (req, res) => __awaiter(void 0, void 0, void 0, function* () {
if (!main_1.sessionDZ[req.session.id])
main_1.sessionDZ[req.session.id] = new deezer_js_1.Deezer();
const dz = main_1.sessionDZ[req.session.id];
const term = String(req.query.term);
const results = yield dz.gw.search(term);
const order = [];
results.ORDER.forEach((element) => {
if (['TOP_RESULT', 'TRACK', 'ALBUM', 'ARTIST', 'PLAYLIST'].includes(element))
order.push(element);
});
if (results.TOP_RESULT && results.TOP_RESULT.length) {
const originalTopResult = results.TOP_RESULT[0];
const topResult = {
type: originalTopResult.__TYPE__
};
switch (topResult.type) {
case 'artist':
topResult.id = originalTopResult.ART_ID;
topResult.picture = `https://e-cdns-images.dzcdn.net/images/artist/${originalTopResult.ART_PICTURE}/156x156-000000-80-0-0.jpg`;
topResult.title = originalTopResult.ART_NAME;
topResult.nb_fan = originalTopResult.NB_FAN;
break;
case 'album':
topResult.id = originalTopResult.ALB_ID;
topResult.picture = `https://e-cdns-images.dzcdn.net/images/cover/${originalTopResult.ALB_PICTURE}/156x156-000000-80-0-0.jpg`;
topResult.title = originalTopResult.ALB_TITLE;
topResult.artist = originalTopResult.ART_NAME;
topResult.nb_song = originalTopResult.NUMBER_TRACK;
break;
case 'playlist':
topResult.id = originalTopResult.PLAYLIST_ID;
topResult.picture = `https://e-cdns-images.dzcdn.net/images/${originalTopResult.PICTURE_TYPE}/${originalTopResult.PLAYLIST_PICTURE}/156x156-000000-80-0-0.jpg`;
topResult.title = originalTopResult.TITLE;
topResult.artist = originalTopResult.PARENT_USERNAME;
topResult.nb_song = originalTopResult.NB_SONG;
break;
default:
topResult.id = '0';
topResult.picture = 'https://e-cdns-images.dzcdn.net/images/cover/156x156-000000-80-0-0.jpg';
break;
}
results.TOP_RESULT = [topResult];
}
results.ORDER = order;
res.send(results);
});
const apiHandler = { path, handler };
exports.default = apiHandler;

View File

@@ -0,0 +1 @@
"use strict";

52
server/dist/routes/api/get/search.js vendored Normal file
View File

@@ -0,0 +1,52 @@
"use strict";
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 });
// @ts-expect-error
const deezer_js_1 = require("deezer-js");
const main_1 = require("../../../main");
const path = '/search';
const handler = (req, res) => __awaiter(void 0, void 0, void 0, function* () {
if (!main_1.sessionDZ[req.session.id])
main_1.sessionDZ[req.session.id] = new deezer_js_1.Deezer();
const dz = main_1.sessionDZ[req.session.id];
const term = String(req.query.term);
const type = String(req.query.type);
const start = parseInt(String(req.query.start));
const nb = parseInt(String(req.query.nb));
let data;
switch (type) {
case 'track':
data = yield dz.api.search_track(term, { limit: nb, index: start });
break;
case 'album':
data = yield dz.api.search_album(term, { limit: nb, index: start });
break;
case 'artist':
data = yield dz.api.search_artist(term, { limit: nb, index: start });
break;
case 'playlist':
data = yield dz.api.search_playlist(term, { limit: nb, index: start });
break;
case 'radio':
data = yield dz.api.search_radio(term, { limit: nb, index: start });
break;
case 'user':
data = yield dz.api.search_user(term, { limit: nb, index: start });
break;
default:
data = yield dz.api.search(term, { limit: nb, index: start });
break;
}
data.type = type;
res.send(data);
});
const apiHandler = { path, handler };
exports.default = apiHandler;

View File

@@ -0,0 +1,48 @@
"use strict";
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 });
// @ts-expect-error
const deezer_js_1 = require("deezer-js");
const main_1 = require("../../../main");
const path = '/addToQueue';
const handler = (req, res) => __awaiter(void 0, void 0, void 0, function* () {
if (!main_1.sessionDZ[req.session.id])
main_1.sessionDZ[req.session.id] = new deezer_js_1.Deezer();
const dz = main_1.sessionDZ[req.session.id];
const url = req.query.url.split(';');
let bitrate = req.query.bitrate;
if (bitrate === 'null')
bitrate = main_1.settings.maxBitrate;
let obj;
try {
obj = yield main_1.addToQueue(dz, url, bitrate);
}
catch (e) {
switch (e.name) {
case 'AlreadyInQueue':
res.send({ result: false, errid: e.name, data: { url, bitrate, obj: e.item } });
main_1.listener.send('alreadyInQueue', e.item);
break;
case 'NotLoggedIn':
res.send({ result: false, errid: e.name, data: { url, bitrate } });
main_1.listener.send('loginNeededToDownload');
break;
default:
console.error(e);
res.send({ result: false, errid: e.name, data: { url, bitrate } });
break;
}
return;
}
res.send({ result: true, data: { url, bitrate, obj } });
});
const apiHandler = { path, handler };
exports.default = apiHandler;

View File

@@ -0,0 +1 @@
"use strict";

View File

@@ -1,3 +1,9 @@
"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.default = [];
const login_arl_1 = __importDefault(require("./login-arl"));
const addToQueue_1 = __importDefault(require("./addToQueue"));
const loginWithCredentials_1 = __importDefault(require("./loginWithCredentials"));
exports.default = [login_arl_1.default, addToQueue_1.default, loginWithCredentials_1.default];

View File

@@ -0,0 +1,62 @@
"use strict";
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 });
// @ts-expect-error
const deezer_js_1 = require("deezer-js");
const main_1 = require("../../../main");
const LoginStatus = {
NOT_AVAILABLE: -1,
FAILED: 0,
SUCCESS: 1,
ALREADY_LOGGED: 2,
FORCED_SUCCESS: 3
};
const path = '/login-arl/';
const handler = (req, res, next) => __awaiter(void 0, void 0, void 0, function* () {
if (!main_1.sessionDZ[req.session.id])
main_1.sessionDZ[req.session.id] = new deezer_js_1.Deezer();
const dz = main_1.sessionDZ[req.session.id];
if (!req.query) {
res.status(400).send();
return next();
}
if (!req.query.arl) {
res.status(400).send();
return next();
}
const loginParams = [req.query.arl];
// TODO Handle the child === 0 case, don't want to rely on the login_via_arl default param (it may change in the
// future)
if (req.query.child) {
loginParams.push(req.query.child);
}
let response;
if (process.env.NODE_ENV !== 'test') {
if (!dz.logged_in) {
response = yield dz.login_via_arl(...loginParams);
response = response ? 1 : 0;
}
else {
response = LoginStatus.ALREADY_LOGGED;
}
}
else {
const testDz = new deezer_js_1.Deezer();
response = yield testDz.login_via_arl(...loginParams);
}
console.log(response);
const returnValue = { status: response, arl: req.query.arl, user: dz.current_user };
res.status(200).send(returnValue);
main_1.startQueue(dz);
next();
});
const apiHandler = { path, handler };
exports.default = apiHandler;

View File

@@ -0,0 +1,41 @@
"use strict";
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 });
const utils_1 = require("../../../../tests/utils");
describe('login-arl requests', () => {
it('should respond 200 to calls with arl', () => __awaiter(void 0, void 0, void 0, function* () {
const responseStatusCollector = [];
const batchCalls = ['/api/login-arl/?arl=abcdef1234'];
for (const uri of batchCalls) {
responseStatusCollector.push((yield utils_1.appSendPost(uri)).status);
}
expect(responseStatusCollector).toMatchObject(new Array(batchCalls.length).fill(200));
expect(responseStatusCollector).toMatchObject(new Array(responseStatusCollector.length).fill(200));
}));
it('should respond 400 to calls without arl', () => __awaiter(void 0, void 0, void 0, function* () {
const responseStatusCollector = [];
const batchCalls = ['/api/login-arl/', '/api/login-arl/?dummy=test', '/api/login-arl/?email=aaa@aa.com'];
for (const uri of batchCalls) {
responseStatusCollector.push((yield utils_1.appSendPost(uri)).status);
}
expect(responseStatusCollector).toMatchObject(new Array(responseStatusCollector.length).fill(400));
}));
it('should login using ARL', () => __awaiter(void 0, void 0, void 0, function* () {
const response = yield utils_1.appSendPost(`/api/login-arl/?arl=${process.env.DEEZER_ARL}`);
expect(response.status).toBe(200);
expect(response.body).toBe(true);
}));
it('should not login using wrong ARL', () => __awaiter(void 0, void 0, void 0, function* () {
const response = yield utils_1.appSendPost(`/api/login-arl/?arl=abcdef1234`);
expect(response.status).toBe(200);
expect(response.body).toBe(false);
}));
});

View File

@@ -0,0 +1,27 @@
"use strict";
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 });
const main_1 = require("../../../main");
const path = '/loginWithCredentials';
const handler = (req, res) => __awaiter(void 0, void 0, void 0, function* () {
const { username, password } = req.body;
let accessToken = req.body.accessToken;
if (!accessToken) {
const accessToken = yield main_1.getAccessToken(username, password);
console.log({ accessToken });
}
let arl;
if (accessToken)
arl = main_1.getArlFromAccessToken(accessToken);
res.send({ accessToken, arl });
});
const apiHandler = { path, handler };
exports.default = apiHandler;

1
server/dist/routes/api/post/logout.js vendored Normal file
View File

@@ -0,0 +1 @@
"use strict";

View File

@@ -0,0 +1 @@
"use strict";

View File

@@ -0,0 +1 @@
"use strict";

View File

@@ -0,0 +1 @@
"use strict";

View File

@@ -30,9 +30,13 @@ const methods = [
function registerApis(app) {
methods.forEach(({ method, endpoints }) => {
endpoints.forEach(endpoint => {
// @ts-ignore
// @ts-expect-error
app[method](prependApiPath(endpoint.path), endpoint.handler);
});
});
// Fallback, for SPA mode
app.get('*', (_, res) => {
res.redirect('/');
});
}
exports.registerApis = registerApis;

View File

@@ -4,6 +4,9 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
};
Object.defineProperty(exports, "__esModule", { value: true });
const express_1 = __importDefault(require("express"));
// @ts-expect-error
const deezer_js_1 = require("deezer-js");
const main_1 = require("../main");
const router = express_1.default.Router();
/**
* GET home page
@@ -11,6 +14,32 @@ const router = express_1.default.Router();
* @since 0.0.0
*/
router.get('/', (_, res) => {
res.render('index', { title: 'Express' });
res.render('index', { title: 'deemix' });
});
router.get('/connect', (req, res) => {
if (!main_1.sessionDZ[req.session.id])
main_1.sessionDZ[req.session.id] = new deezer_js_1.Deezer();
const dz = main_1.sessionDZ[req.session.id];
const result = {
update: {
currentCommit: 'testing',
latestCommit: 'testing',
updateAvailable: false,
deemixVersion: '3.0_beta'
},
autologin: !dz.logged_in,
currentUser: dz.current_user,
deezerNotAvailable: false
};
if (Object.keys(main_1.queue).length > 0) {
result.queue = {
queue: main_1.queue,
queueOrder: main_1.queueOrder
};
if (main_1.currentJob && main_1.currentJob !== true) {
result.queue.current = main_1.currentJob.downloadObject.getSlimmedDict();
}
}
res.send(result);
});
exports.default = router;

39
server/dist/routes/index.spec.js vendored Normal file
View File

@@ -0,0 +1,39 @@
"use strict";
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 });
const supertest_1 = __importDefault(require("supertest"));
const app_1 = require("../app");
describe('root path requests', () => {
it('responds 200 to the GET method', () => __awaiter(void 0, void 0, void 0, function* () {
const result = yield supertest_1.default(app_1.app).get('/').send();
expect(result.status).toBe(200);
}));
it('responds 404 to the POST method', () => __awaiter(void 0, void 0, void 0, function* () {
const result = yield supertest_1.default(app_1.app).post('/').send();
expect(result.status).toBe(404);
}));
it('responds 404 to the PATCH method', () => __awaiter(void 0, void 0, void 0, function* () {
const result = yield supertest_1.default(app_1.app).patch('/').send();
expect(result.status).toBe(404);
}));
it('responds 404 to the DELETE method', () => __awaiter(void 0, void 0, void 0, function* () {
const result = yield supertest_1.default(app_1.app).delete('/').send();
expect(result.status).toBe(404);
}));
it('redirects to root when a non existing server route is requested', () => __awaiter(void 0, void 0, void 0, function* () {
const result = yield supertest_1.default(app_1.app).get('/settings').send();
expect(result.header.location).toBe('/');
expect(result.status).toBe(302);
}));
});

View File

@@ -1,16 +0,0 @@
"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const express_1 = __importDefault(require("express"));
const router = express_1.default.Router();
/**
* GET users listing.
*
* @since 0.0.0
*/
router.get('/', (_, res) => {
res.send('respond with a resource');
});
exports.default = router;