/** * Листинг вебкам-моделей с фасетами — источник данных раздела `/webcams`. * * Тонкий прокси к POST `/v2/stripcash/online-models-filter`: тело (выбранные * фильтры) уходит как есть, ответ разворачивается в плоскую форму слоя * (`items` / `total` / `allPages` / `currentPage` / `filters`). * * Ручка отвечает 400 без непустого `tag`, а «любой тег» понимает как пробел — * поэтому при отсутствии тега подставляем пробел. Ниша и язык приезжают * заголовками `X-Niche` / `X-Language` от клиента (без них выдача пустая) и * форвардятся дальше вместе с остальными заголовками запроса. */ export default defineEventHandler(async (event) => { const apiUrl = process.env.NUXT_PUBLIC_API_DOMAIN; const query = getQuery(event); const url = new URL(`${apiUrl}/v2/stripcash/online-models-filter`); url.search = new URLSearchParams({ page: String(query.page || 1), 'per-page': String(query['per-page'] || 48), tag: String(query.tag || ' '), }).toString(); const body = await readBody(event); const rawData = await apiFetch(url.toString(), { method: 'POST', headers: event.node.req.headers as HeadersInit, body: JSON.stringify(body), }); const data = rawData?.data || {}; return { items: data.items || [], filters: data.filters || [], total: data.total || 0, allPages: data.all_pages || 0, currentPage: data.current_page || 1, }; });