GAMEVERSE / ИГРЫ И ЛЮДИ

База знаний GameVerse

Как устроен сервис, откуда приходят данные и что мы узнали при разработке.

Игровой бюджет: API

Браузер отправляет GET-запрос на api/index.php?action=budget&amount=59.99&currency=USD&fee=0. Сервер получает XML Банка России и возвращает JSON. Ключ API не нужен. Параметры: amount — сумма 0–10 000 000, currency — код валюты ЦБ, fee — комиссия 0–100%.

Ответ содержит amount, currency, rate, fee_percent, rub, date, source, stale. Формула: rub = round(amount × rate × (1 + fee / 100), 2). Это оценка, а не банковская котировка. Курс делится на Nominal: некоторые валюты публикуются за 10 или 100 единиц.

Ошибки: 400 — неверный ввод, 503 — источник или база недоступны. Старые данные при сбое возвращаются только с признаком stale=true и датой. Тайм-аут источника — 15 секунд, кэш — 6 часов.

Открыть калькулятор · Документация источника

Данные и обмен

Каталог содержит 20 записей: идентификатор и 6 полей — название, жанр, платформы, год, оценка редакции, особенность. games.xml служит исходным набором. PHP применяет games.xsl на сервере; просмотр не зависит от поддержки XSLT браузером.

MySQL хранит каталог, новости, сообщения, оценки, опрос, посещения и кэш. Каталог загружается из XML при установке. Пять типов запросов: фильтрация с сортировкой; сводные COUNT/AVG/MIN/MAX; группировка по жанру; группировка по году; TOP-5 оценок.

RSS объединяет собственные публикации и заголовки iXBT с прямыми ссылками. Повторы удаляются по URL, записи сортируются по дате. Полные чужие статьи не копируются. Экспорт: RSS 2.0, XML, CSV с разделителем «;», текст CSV внутри XML. Для русского текста используется UTF-8.

Практические выводы

  1. GitHub Pages подходит для HTML, но не исполняет PHP. База должна работать на сервере.
  2. localStorage подходит для личных настроек, но не для общих новостей и форума.
  3. Изображения и стили размещены вместе с сайтом. Внешние CDN не участвуют в отображении страниц.
  4. Сетевые источники иногда недоступны. Ограничиваем ожидание, показываем дату и не выдаём старые данные за текущие.
  5. SQL-параметры передаются через PDO, сортировка выбирается из разрешённого списка. XML загружается без DTD и внешних сущностей.
  6. Формы защищены CSRF-токеном, пароли хэшируются, публикации ограничены по частоте. Скрывать сообщения может только администратор.
  7. Доступность из России проверяется отдельно на российском подключении: успешный ответ зарубежному серверу этого не доказывает.

Источники

Банк России — XML API · Гидрометцентр России · iXBT — экспорт RSS