Changes
This commit is contained in:
@@ -0,0 +1,15 @@
|
||||
import type { RequestHandler } from './$types';
|
||||
import { json } from '@sveltejs/kit';
|
||||
import { createApiClient, unwrapOrError } from '$lib/server/api';
|
||||
import { EXPLORE_PAGE_SIZE } from '$lib/config';
|
||||
|
||||
export const GET: RequestHandler = async ({ url, locals, fetch }) => {
|
||||
const name = url.searchParams.get('name')?.trim() || undefined;
|
||||
const pageNumber = Math.max(1, Number(url.searchParams.get('pageNumber')) || 1);
|
||||
const pageSize = Math.max(1, Number(url.searchParams.get('pageSize')) || EXPLORE_PAGE_SIZE);
|
||||
|
||||
const api = createApiClient({ fetch, accessToken: locals.accessToken ?? undefined });
|
||||
const result = await api.GET('/tracks', { params: { query: { name, pageNumber, pageSize } } });
|
||||
|
||||
return json(unwrapOrError(result, 'No se pudieron cargar las canciones.'));
|
||||
};
|
||||
@@ -1,25 +1,6 @@
|
||||
import type { RequestHandler } from './$types';
|
||||
import { apiConfig } from '$lib/server/config';
|
||||
|
||||
const ALLOWED = new Set(['small', 'medium', 'large']);
|
||||
import { proxyCoverImage } from '$lib/server/image';
|
||||
|
||||
export const GET: RequestHandler = async ({ params, url, fetch }) => {
|
||||
const size = url.searchParams.get('size') ?? 'medium';
|
||||
const safeSize = ALLOWED.has(size) ? size : 'medium';
|
||||
|
||||
const upstream = await fetch(
|
||||
`${apiConfig.baseUrl}/tracks/${params.id}/cover?size=${safeSize}`
|
||||
);
|
||||
|
||||
if (!upstream.ok) {
|
||||
return new Response(null, { status: upstream.status });
|
||||
}
|
||||
|
||||
return new Response(upstream.body, {
|
||||
status: 200,
|
||||
headers: {
|
||||
'Content-Type': upstream.headers.get('content-type') ?? 'image/webp',
|
||||
'Cache-Control': 'public, max-age=86400'
|
||||
}
|
||||
});
|
||||
return proxyCoverImage(fetch, 'tracks', params.id, url.searchParams.get('size'));
|
||||
};
|
||||
|
||||
@@ -1,20 +1,14 @@
|
||||
import type { RequestHandler } from './$types';
|
||||
import { json, error } from '@sveltejs/kit';
|
||||
import { createApiClient } from '$lib/server/api';
|
||||
import { json } from '@sveltejs/kit';
|
||||
import { createApiClient, requireAccessToken, unwrapOrError } from '$lib/server/api';
|
||||
|
||||
export const GET: RequestHandler = async ({ params, locals, fetch }) => {
|
||||
if (!locals.accessToken) {
|
||||
error(401, 'Inicia sesión para reproducir.');
|
||||
}
|
||||
const accessToken = requireAccessToken(locals, 'Inicia sesión para reproducir.');
|
||||
|
||||
const api = createApiClient({ fetch, accessToken: locals.accessToken });
|
||||
const { data, error: err, response } = await api.GET('/tracks/{id}/stream', {
|
||||
const api = createApiClient({ fetch, accessToken });
|
||||
const result = await api.GET('/tracks/{id}/stream', {
|
||||
params: { path: { id: params.id } }
|
||||
});
|
||||
|
||||
if (err || !data) {
|
||||
error(response?.status ?? 502, 'No se pudo obtener el stream de la pista.');
|
||||
}
|
||||
|
||||
return json(data);
|
||||
return json(unwrapOrError(result, 'No se pudo obtener el stream de la pista.'));
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user