Update: перенастройка сайта что бы открывать 1 порт на сайт
This commit is contained in:
@@ -1,9 +1,20 @@
|
||||
|
||||
|
||||
/// <reference types="vite/client" />
|
||||
import { Post, NewsArticle, ResearchPaper, BusinessStory, ServiceItemData, ClientLogo, BusinessCourse, StudentProgram, AcceleratorProject, InvestmentProject, Vacancy, GalleryItem } from './types';
|
||||
|
||||
const STRAPI_URL = 'https://n8n.iieasy.ru';
|
||||
const API_TOKEN = '91344ae88ae3e496f72d6ae9c157a3e929c3078b6269b57d3751d81026880cca6e7dcec074bffd77c8fe853dce9308f8d7dd494cf7b8c804a2875f0f4c24c0419cee196adf247d01cd5ddd5893d325bff34ad236febe0b508114ec906b12423e658d7210be94f2fcc37184334e11065538531c6d935de5becf81f2a48fdd6318';
|
||||
/**
|
||||
* Базовый URL Strapi API.
|
||||
* - В dev: пустая строка — запросы идут через Vite proxy на Strapi.
|
||||
* - В prod за прокси: задайте VITE_STRAPI_URL="" при сборке — запросы на тот же origin (порт 85).
|
||||
* - В prod без прокси: задайте VITE_STRAPI_URL=http://... при сборке; иначе используется запасной URL.
|
||||
*/
|
||||
const _url = import.meta.env?.VITE_STRAPI_URL;
|
||||
export const STRAPI_URL =
|
||||
import.meta.env?.DEV
|
||||
? ''
|
||||
: typeof _url === 'string'
|
||||
? _url
|
||||
: 'http://192.168.88.121:1337';
|
||||
const API_TOKEN = '9e4de071544acf9ca7a9bc2b01c2fdc913c1e92e930b6c04193a00cb71a27787c19fd546e4fcebee6ed34b284015506a6eb650cea99291149328f78b4020c5028337e3dcd45f50ca379944b0a4a8276bb7f9127aa816a8b35eb68a7beef54d52a0eeea84991776165347039c20fa8b447df6c4ff653a82d4684da9db9f7716db';
|
||||
|
||||
interface StrapiResponse<T> {
|
||||
data: StrapiDataItem<T>[];
|
||||
@@ -439,4 +450,41 @@ export const fetchBusinessCourses = (): Promise<BusinessCourse[]> => fetchData('
|
||||
export const fetchStudentPrograms = (): Promise<StudentProgram[]> => fetchData('student-programs', transformStudentProgram);
|
||||
export const fetchAcceleratorProjects = (): Promise<AcceleratorProject[]> => fetchData('accelerator-projects', transformAcceleratorProject);
|
||||
export const fetchInvestmentProjects = (): Promise<InvestmentProject[]> => fetchData('investment-opportunities', transformInvestmentProject);
|
||||
export const fetchVacancies = (): Promise<Vacancy[]> => fetchData('vacancies', transformVacancy);
|
||||
export const fetchVacancies = (): Promise<Vacancy[]> => fetchData('vacancies', transformVacancy);
|
||||
|
||||
/** Список файлов из Strapi Media Library (для страницы «О нас» и др.).
|
||||
* В Strapi: Settings → API Tokens → роль токена должна иметь Plugins → Upload → find (доступ к медиа). */
|
||||
export interface StrapiUploadFile {
|
||||
url: string;
|
||||
name?: string;
|
||||
id?: number;
|
||||
}
|
||||
|
||||
function parseUploadItem(item: any): StrapiUploadFile | null {
|
||||
const attrs = item?.attributes ?? item;
|
||||
const url = typeof attrs?.url === 'string' ? attrs.url : typeof item?.url === 'string' ? item.url : '';
|
||||
if (!url) return null;
|
||||
const name = attrs?.name ?? attrs?.fileName ?? item?.name ?? '';
|
||||
return { id: item?.id ?? attrs?.id, url, name };
|
||||
}
|
||||
|
||||
/** Папки в Content API недоступны — запрос без фильтра folder. */
|
||||
export async function fetchUploadFiles(): Promise<StrapiUploadFile[]> {
|
||||
try {
|
||||
const response = await fetch(`${STRAPI_URL}/api/upload/files`, {
|
||||
headers: { Authorization: `Bearer ${API_TOKEN}` },
|
||||
});
|
||||
if (!response.ok) {
|
||||
console.warn('fetchUploadFiles:', response.status, await response.text());
|
||||
return [];
|
||||
}
|
||||
const json = await response.json();
|
||||
const list = Array.isArray(json) ? json : json?.data;
|
||||
if (!Array.isArray(list)) return [];
|
||||
const files = list.map((item: any) => parseUploadItem(item)).filter(Boolean) as StrapiUploadFile[];
|
||||
return files.sort((a, b) => (a.name ?? '').localeCompare(b.name ?? ''));
|
||||
} catch (e: any) {
|
||||
console.warn('fetchUploadFiles error:', e?.message);
|
||||
return [];
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user