/** * @fileoverview API URL constants - константы URL API эндпоинтов * @module constants/apiUrls */ /** * Базовые URL API эндпоинтов * @enum {string} */ export const API_URLS = { // Calendar Events API EVENTS: "/api/v1/calendar/events/", EVENT_DETAIL: (id) => `/api/v1/calendar/events/${id}/`, // Calendars API CALENDARS: "/api/v1/calendar/calendars/", CALENDARS_MY: "/api/v1/calendar/calendars/my-calendars/", CALENDAR_DETAIL: (id) => `/api/v1/calendar/calendars/${id}/`, CALENDAR_SUBSCRIBE: (id) => `/api/v1/calendar/calendars/${id}/subscribe/`, CALENDAR_UNSUBSCRIBE: (id) => `/api/v1/calendar/calendars/${id}/unsubscribe/`, CALENDAR_INVITE: (id) => `/api/v1/calendar/calendars/${id}/invite/`, CALENDAR_INVITE_BULK: (id) => `/api/v1/calendar/calendars/${id}/invite-bulk/`, // Calendar Subscriptions API SUBSCRIPTIONS: "/api/v1/calendar/subscriptions/", SUBSCRIPTION_DETAIL: (id) => `/api/v1/calendar/subscriptions/${id}/`, // Departments API MY_DEPARTMENTS: "/api/v1/departments/my-departments/", DEPARTMENT_DETAIL: (id) => `/api/v1/departments/${id}/`, // Employees API EMPLOYEES: "/api/v1/employees/", EMPLOYEE_DETAIL: (id) => `/api/v1/employees/${id}/`, }; /** * Дефолтные параметры для API запросов * @enum {*} */ export const API_DEFAULTS = { // Time-to-live для кеша (в миллисекундах) TTL: { EVENTS: 30000, // 30 секунд EVENT_DETAIL: 60000, // 1 минута CALENDARS: 60000, // 1 минута DEPARTMENTS: 300000, // 5 минут }, // Таймауты для запросов TIMEOUT: { DEFAULT: 10000, // 10 секунд UPLOAD: 30000, // 30 секунд }, }; /** * Получить полный URL для API эндпоинта * @param {string} path - Путь к эндпоинту * @param {string} [baseUrl] - Базовый URL (по умолчанию window.location.origin) * @returns {string} Полный URL */ export function getApiUrl(path, baseUrl = window.location.origin) { return new URL(path, baseUrl).toString(); }