Актуальні помилки SDK Bundle

Актуальні помилки SDK Bundle

Відомі помилки й нестиковки поточної версії ufo-tech/json-rpc-sdk-bundle (4.0.0). Помилки самого генератора й базових класів — у Client SDK. Виправлені — на сторінці Виправлені помилки.

Компілятор мовчки пропускає класи поза налаштованими постачальниками

Актуальна

Зачеплені версії: 4.0.0 (поточна). Перевірено за кодом тегу 4.0.0.

Симптом. Згенерований клас працює без токена (сервер відповідає -32401) і без обробників відповіді з контейнера, хоча помилок під час збирання контейнера немає.

Причина. SdkCompiler шукає постачальника за простором імен класу, а будь-яку помилку пошуку перехоплює catch (Throwable) { continue; }. Так стається, коли клас згенеровано ufo:sdk:make для постачальника, якого немає у vendors, або простір імен не збігається з namespace + назва постачальника.

Обхідний шлях. Генеруйте лише постачальників з конфігурації (ufo:sdk:generate) і не змінюйте namespace без перегенерації.


ufo:sdk:generate повідомляє про успіх, коли генерація не вдалась

Актуальна

Зачеплені версії: 4.0.0 (поточна). Перевірено за кодом тегу 4.0.0.

Симптом. Команда пише «Generate SDK is complete» і завершується з кодом 0, навіть якщо ufo:sdk:make для постачальника впав (сервер недоступний, помилка документації) або назву з --vendor не знайдено в конфігурації (тоді не генерується нічого).

Причина. Код виходу дочірньої команди ігнорується; для невідомого --vendor список постачальників порожній.

Обхідний шлях. У CI запускайте ufo:sdk:make для кожного постачальника окремо або перевіряйте вивід на повідомлення про помилки.


Порожній токен з оточення все одно надсилається

Актуальна

Зачеплені версії: 4.0.0 (поточна). Перевірено за кодом тегу 4.0.0.

Симптом. Якщо змінна оточення з токеном порожня (як VENDOR_1_API_TOKEN= з рецепта), кожен запит містить заголовок токена з порожнім значенням.

Причина. Компілятор перевіряє isset(), а порожній рядок — задане значення.

Обхідний шлях. Прибирайте token_key / token з конфігурації постачальника, якщо токен не потрібен.


Різний простір імен за замовчуванням у конфігурації і рецепті

Актуальна

Зачеплені версії: 4.0.0 (поточна). Нестиковка; перевірено за кодом тегу 4.0.0.

Значення за замовчуванням namespace — App\Sdk, а файл, який створює рецепт Flex, задає App\SDK. На файлових системах з урахуванням регістру це різні каталоги (src/Sdk і src/SDK). Оберіть одне написання й тримайтеся його.


Бандл використовує незадекларовані залежності

Актуальна

Зачеплені версії: 4.0.0 (поточна). Перевірено за composer.json і кодом тегу 4.0.0.

Бандл напряму використовує класи symfony/maker-bundle і ufo-tech/rpc-objects, але не вказує їх у require — вони приходять транзитивно через Client SDK. Підтримка Symfony 8 залежить від того, чи сумісна встановлена версія symfony/maker-bundle з Symfony 8.


README пакета застарів

Актуальна

Зачеплені версії: 4.0.0 (поточна). Нестиковка документації, на роботу не впливає.

  • Указано «Symfony v.6.*», а 4.0 потребує Symfony ^7.3 | ^8.0.
  • Команда встановлення з помилкою: json-prc-sdk-bundle замість json-rpc-sdk-bundle; у прикладі bundles.php — ,,.
  • Маска «лише синхронні» — #Command.run; правильно &Command.run.
  • Приклад згенерованого класу PingProcedure і контролера з Symfony\Component\Routing\Annotation\Route — зі старих версій; зараз класи називаються <Назва>SDK, ping не генерується.
  • Не описано асинхронні виклики, async_secret, resolver-и транспорту, sdk_config.yaml.