Мебель и интерьеры класса люкс

Мы проектируем и производим мебель на заказ, создавая продуманные пространства, где дизайн, эргономика и качество работают на ваш комфорт.

Наши Проекты

Кухня Вега - современный дизайн с белыми фасадами и деревянными элементами
Кухня "Вега"
Кухни
Гостиная Сириус - элегантный интерьер с панорамным окном и современной мебелью
Гостиная "Сириус"
Гостиные
Гардеробная Люкс - система хранения с зеркальными фасадами и подсветкой
Гардеробная "Люкс"
Гардеробные
Прихожая Альтаир - входная группа с зеркалом и системой хранения
Прихожая "Альтаир"
Прихожие
Кухня Эклипс - современный дизайн с черными фасадами и металлическими элементами
Кухня "Эклипс"
Кухни
Гостиная Орион - просторная комната с камином и эргономичной мебелью
Гостиная "Орион"
Гостиные
// Конфигурация Yandex Cloud Storage const YANDEX_STORAGE_CONFIG = { endpoint: 'https://storage.yandexcloud.net', bucket: 'orion-image', publicUrl: 'https://storage.yandexcloud.net/orion-image/' }; // Функция для получения списка папок и файлов async function getStorageData() { try { // Используем JSON для получения структуры бакета const response = await fetch(`${YANDEX_STORAGE_CONFIG.publicUrl}?delimiter=/&list-type=2`); if (!response.ok) throw new Error('Не удалось получить данные из хранилища'); const text = await response.text(); const parser = new DOMParser(); const xmlDoc = parser.parseFromString(text, 'text/xml'); // Извлекаем префиксы (папки) и объекты (файлы) const folders = []; const files = []; // Получаем папки const prefixes = xmlDoc.getElementsByTagName('CommonPrefixes'); for (let i = 0; i < prefixes.length; i++) { const prefix = prefixes[i].getElementsByTagName('Prefix')[0].textContent; if (prefix && prefix.endsWith('/')) { const folderName = prefix.replace(/\/$/, ''); // Убираем слеш в конце folders.push(folderName); } } // Получаем файлы const contents = xmlDoc.getElementsByTagName('Contents'); for (let i = 0; i < contents.length; i++) { const key = contents[i].getElementsByTagName('Key')[0].textContent; if (key && !key.endsWith('/')) { // Игнорируем папки files.push(key); } } return { folders, files }; } catch (error) { console.error('Ошибка при загрузке данных из хранилища:', error); return { folders: [], files: [] }; } } // Функция для получения файлов из конкретной папки async function getFilesFromFolder(folderName) { try { const response = await fetch( `${YANDEX_STORAGE_CONFIG.publicUrl}?prefix=${folderName}/&delimiter=/&list-type=2` ); if (!response.ok) throw new Error(`Не удалось получить файлы из папки ${folderName}`); const text = await response.text(); const parser = new DOMParser(); const xmlDoc = parser.parseFromString(text, 'text/xml'); const files = []; const contents = xmlDoc.getElementsByTagName('Contents'); for (let i = 0; i < contents.length; i++) { const key = contents[i].getElementsByTagName('Key')[0].textContent; // Проверяем, что это файл изображения if (key && !key.endsWith('/') && /\.(jpg|jpeg|png|gif|webp|avif)$/i.test(key)) { files.push({ fullPath: key, fileName: key.split('/').pop(), url: `${YANDEX_STORAGE_CONFIG.publicUrl}${key}` }); } } return files; } catch (error) { console.error(`Ошибка при загрузке файлов из папки ${folderName}:`, error); return []; } } // Функция для инициализации всех изображений на сайте async function initializeYandexStorageImages() { try { // Получаем структуру хранилища const storageData = await getStorageData(); // Создаем объект с данными по папкам const folderData = {}; // Для каждой папки получаем файлы for (const folder of storageData.folders) { const files = await getFilesFromFolder(folder); if (files.length > 0) { folderData[folder] = files; } } console.log('Загруженные данные из Yandex Cloud Storage:', folderData); return folderData; } catch (error) { console.error('Ошибка инициализации изображений:', error); return {}; } }