Привет, у нас хорошие новости!
Спонсором разработки https://github.com/mesilov/bitrix24-php-sdk на этот год становится компания Яндекс.
В рамках программы грантов Yandex Open Source компания перечислит 600 000 руб. для развития проекта.
Поддержка будет оказана в виде оплаты расходов в их вычислительном облаке.
По всей видимости, в течении этого года, можно будет ожидать примеров приложений, развёрнутых на базе yandex.cloud
stay tuned 🚀
Если вы уже живёте в их облаке и разрабатываете приложения, то напишите пожалуйста в комментариях свои впечатления и какие сервисы вы используете.
Спонсором разработки https://github.com/mesilov/bitrix24-php-sdk на этот год становится компания Яндекс.
В рамках программы грантов Yandex Open Source компания перечислит 600 000 руб. для развития проекта.
Поддержка будет оказана в виде оплаты расходов в их вычислительном облаке.
По всей видимости, в течении этого года, можно будет ожидать примеров приложений, развёрнутых на базе yandex.cloud
stay tuned 🚀
Если вы уже живёте в их облаке и разрабатываете приложения, то напишите пожалуйста в комментариях свои впечатления и какие сервисы вы используете.
GitHub
GitHub - mesilov/bitrix24-php-sdk: A powerful PHP library for the Bitrix24 REST API
A powerful PHP library for the Bitrix24 REST API. Contribute to mesilov/bitrix24-php-sdk development by creating an account on GitHub.
🔥14👍2
Привет, вот вам тема на подумать и предложить более элегантное решение:
При разработке bitrix24-php-sdk я все методы стараюсь покрывать интеграционными тестами, это позволяет:
⁃ найти расхождения с документацией по структурам данных
⁃ убедиться здесь и сейчас, что оно работает
⁃ быстро дёрнуть метод при поиске решения и убедиться, что это то что надо.
Авторизация идёт через входящий вебхук, который прокидывается из переменных окружения, это позволяет:
- гнать тесты внутри CI пайплайна
- при необходимости подпихнуть свой и вызвать тест на интересующий метод (об свой портал)
Боль: часть методов требует токенов приложения, от вебхука они не работают.
Варианты:
1. На эти методы тестов не писать 🤡, а проверить работу на локальном приложении и надеяться на лучшее. Считаю, что этот подход можно использовать если остальные слишком дорогие в реализации.
2. Тесты написать, сделать костыль для получения токена локального приложения которое запущено рядом, т.е. если хотите протестировать эти методы, то сделайте локальное приложение по инструкции, поднимите его, получите актуальные токены и уже потом запускайте все тесты. Из минусов - такое не взлетит в CI-пайплайне.
3. Тесты написать, сделать костыль для получения и обновления токенов приложения, которое бежит как условная лямбда в облаке и хранит там-же актуальные токены. Будет работать локально и в CI-пайплайне, больше всего мороки.
Что выбираем?
При разработке bitrix24-php-sdk я все методы стараюсь покрывать интеграционными тестами, это позволяет:
⁃ найти расхождения с документацией по структурам данных
⁃ убедиться здесь и сейчас, что оно работает
⁃ быстро дёрнуть метод при поиске решения и убедиться, что это то что надо.
Авторизация идёт через входящий вебхук, который прокидывается из переменных окружения, это позволяет:
- гнать тесты внутри CI пайплайна
- при необходимости подпихнуть свой и вызвать тест на интересующий метод (об свой портал)
Боль: часть методов требует токенов приложения, от вебхука они не работают.
Варианты:
1. На эти методы тестов не писать 🤡, а проверить работу на локальном приложении и надеяться на лучшее. Считаю, что этот подход можно использовать если остальные слишком дорогие в реализации.
2. Тесты написать, сделать костыль для получения токена локального приложения которое запущено рядом, т.е. если хотите протестировать эти методы, то сделайте локальное приложение по инструкции, поднимите его, получите актуальные токены и уже потом запускайте все тесты. Из минусов - такое не взлетит в CI-пайплайне.
3. Тесты написать, сделать костыль для получения и обновления токенов приложения, которое бежит как условная лямбда в облаке и хранит там-же актуальные токены. Будет работать локально и в CI-пайплайне, больше всего мороки.
Что выбираем?
🤯1
Обнаружил себя в ситуации, когда в одном окне у меня открыта документация к REST-API Битрикс24 и ряд дампов с ответами от сервера, а в другом — руководство от посудомоечной машины.
В одном из них все сразу понятно, хорошо структурировано и не допускает различных прочтений.
А второе — это записки сумасшедшего, что ты несёшь блядь.
Так вот, с телефонией разобраться проще.
В одном из них все сразу понятно, хорошо структурировано и не допускает различных прочтений.
А второе — это записки сумасшедшего, что ты несёшь блядь.
Так вот, с телефонией разобраться проще.
👍2
Привет!
В рамках работ по выпуску сборки bitrix24-php-sdk v2.0 был полностью переписан скоуп
https://github.com/mesilov/bitrix24-php-sdk/pull/388
Теперь поддерживаются все методы, в т.ч. из неймспейса voximplant, всё покрыто тестами, в проект занесли rector.
Т.к. меняется мажорная версия, то происходит полная потеря обратной совместимости с предыдущими версиями 🤗
В рамках работ по выпуску сборки bitrix24-php-sdk v2.0 был полностью переписан скоуп
telephony
, https://github.com/mesilov/bitrix24-php-sdk/pull/388
Теперь поддерживаются все методы, в т.ч. из неймспейса voximplant, всё покрыто тестами, в проект занесли rector.
Т.к. меняется мажорная версия, то происходит полная потеря обратной совместимости с предыдущими версиями 🤗
GitHub
rewrite scope telephony by mesilov · Pull Request #388 · mesilov/bitrix24-php-sdk
A powerful PHP library for the Bitrix24 REST API. Contribute to mesilov/bitrix24-php-sdk development by creating an account on GitHub.
🔥2
А теперь — самая вкусная и срачеобразующая тема 👀
До какого уровня SDK должен помогать разработчикам разрабатывать приложения для Битрикс24?☕️
Есть несколько уровней:
0. Никак не должен
Каждый разработчик сам знает, как ему делать приложение и в подсказках не нуждется. «Дайте библиотеку транспортного слоя и отойдите».
1. Должен на уровне документирования предметной области
описания событийной модели, типовых юзкейсов, скорее всего — наглядно в стиле DDD. «Почитаю доку, быстро реализую всё сам».
2. Должен на уровне контрактов
Интерфейсы, структуры данных. «Спасибо за канву, имплементацию накидаю сам»
— вариант А Контракты лежат в отдельном репозитории, направление зависимостей sdk → контракты (меняются реже чем SDK) (см. доклад Package Design Principles in Practice [ru] / Макс Рафалко https://www.youtube.com/watch?v=JKt7hF_nxBM).
или
— вариант B Контракты лежат в текущем репозитриии, потому что разработчики документацию не читают и ставить несколько пакетов им лень.
3. Должен на уровне фреймворк-агностик реализации репозиториев \ юзкейсов и т.д.
Лежат в отдельном репозитории. «Сделал чекаут и подружил со своим любимым фреймворком или не смог»
4. Должен на уровне готового бандла\пакета для наиболее распространённого фреймворка (Laravel \ Symfony).
«Я подпихнул свои токены и через месяц уже залетаю с двух ног в топ 10 разработчиков маркет+ по выплатам»
Скорее всего, для релиза 2.0 будет реализован вариант 2 B, а как соберём большую часть граблей и будет пара макетных приложений в качестве proof of concept, то можно будет говорить о сплите и выносе контрактов в отдельный репозиторий.
Если у вас есть предложения, то самое время их написать
До какого уровня SDK должен помогать разработчикам разрабатывать приложения для Битрикс24?
Есть несколько уровней:
0. Никак не должен
Каждый разработчик сам знает, как ему делать приложение и в подсказках не нуждется. «Дайте библиотеку транспортного слоя и отойдите».
1. Должен на уровне документирования предметной области
описания событийной модели, типовых юзкейсов, скорее всего — наглядно в стиле DDD. «Почитаю доку, быстро реализую всё сам».
2. Должен на уровне контрактов
Интерфейсы, структуры данных. «Спасибо за канву, имплементацию накидаю сам»
— вариант А Контракты лежат в отдельном репозитории, направление зависимостей sdk → контракты (меняются реже чем SDK) (см. доклад Package Design Principles in Practice [ru] / Макс Рафалко https://www.youtube.com/watch?v=JKt7hF_nxBM).
или
— вариант B Контракты лежат в текущем репозитриии, потому что разработчики документацию не читают и ставить несколько пакетов им лень.
3. Должен на уровне фреймворк-агностик реализации репозиториев \ юзкейсов и т.д.
Лежат в отдельном репозитории. «Сделал чекаут и подружил со своим любимым фреймворком или не смог»
4. Должен на уровне готового бандла\пакета для наиболее распространённого фреймворка (Laravel \ Symfony).
«Я подпихнул свои токены и через месяц уже залетаю с двух ног в топ 10 разработчиков маркет+ по выплатам»
Скорее всего, для релиза 2.0 будет реализован вариант 2 B, а как соберём большую часть граблей и будет пара макетных приложений в качестве proof of concept, то можно будет говорить о сплите и выносе контрактов в отдельный репозиторий.
Если у вас есть предложения, то самое время их написать
Please open Telegram to view this post
VIEW IN TELEGRAM
Предположим, что у приложения может быть два варианта реализации. Храним токены доступа к порталу в приложении?
Anonymous Poll
80%
Да, по дефолту храним, пригодятся.
29%
Нет, не храним: работаем с токенами из браузера \ входящий событий
Чьи токены мы храним, какие кейсы обрабатываем?
Anonymous Poll
53%
Только админа, который установил приложение
65%
Если для работы необходимо, то начинаем хранить токены нескольких пользователей
47%
Если потеряли, то умеем сохранять «новый админский токен» при заходе админа в приложение
Пару человек в личку спросили, почему с контрактами так заморочено получается, сделал компактный пример с пояснением
https://www.youtube.com/watch?v=GupH7WB_7Tg
https://www.youtube.com/watch?v=GupH7WB_7Tg
YouTube
контрактный тест для bitrix24-php-sdk
Сделал подход к сущности «Bitrix24Accounts», что у нас есть:
– Контракт на методы самой сущности https://github.com/mesilov/bitrix24-php-sdk/blob/feature/383-refactor-app-contracts-and-add-documentation-for-use-cases/src/Application/Contracts/Bitrix24Accounts/Entity/Bitrix24AccountInterface.php
— Контракт на методы репозитория который хранит эту сущность https://github.com/mesilov/bitrix24-php-sdk/blob/feature/383-refactor-app-contracts-and-add-documentation-for-use-cases/src/Application/Contracts/Bitrix24Accounts/Repository/Bitrix24AccountRepositoryInterface.php
— Дока с описанием этого добра https://github.com/mesilov/bitrix24-php-sdk/blob/feature/383-refactor-app-contracts-and-add-documentation-for-use-cases/src/Application/Contracts/Bitrix24Accounts/Docs/Bitrix24Accounts.md
— Контрактные тесты https://github.com/mesilov/bitrix24-php-sdk/tree/feature/383-refactor-app-contracts-and-add-documentation-for-use-cases/tests/Unit/Application/Contracts/Bitrix24Accounts
Если вы делали приложение для Битрикс24, то пожалуйста:
1. Посмотрите на методы сущности и репозитория и сравните со своими
2. Напишите в комментариях, чего по вашему мнению не хватает.
3. Что ещё требуется в документации к этой сущности?
– Контракт на методы самой сущности https://github.com/mesilov/bitrix24-php-sdk/blob/feature/383-refactor-app-contracts-and-add-documentation-for-use-cases/src/Application/Contracts/Bitrix24Accounts/Entity/Bitrix24AccountInterface.php
— Контракт на методы репозитория который хранит эту сущность https://github.com/mesilov/bitrix24-php-sdk/blob/feature/383-refactor-app-contracts-and-add-documentation-for-use-cases/src/Application/Contracts/Bitrix24Accounts/Repository/Bitrix24AccountRepositoryInterface.php
— Дока с описанием этого добра https://github.com/mesilov/bitrix24-php-sdk/blob/feature/383-refactor-app-contracts-and-add-documentation-for-use-cases/src/Application/Contracts/Bitrix24Accounts/Docs/Bitrix24Accounts.md
— Контрактные тесты https://github.com/mesilov/bitrix24-php-sdk/tree/feature/383-refactor-app-contracts-and-add-documentation-for-use-cases/tests/Unit/Application/Contracts/Bitrix24Accounts
Если вы делали приложение для Битрикс24, то пожалуйста:
1. Посмотрите на методы сущности и репозитория и сравните со своими
2. Напишите в комментариях, чего по вашему мнению не хватает.
3. Что ещё требуется в документации к этой сущности?
GitHub
bitrix24-php-sdk/src/Application/Contracts/Bitrix24Accounts/Entity/Bitrix24AccountInterface.php at feature/383-refactor-app-contracts…
A powerful PHP library for the Bitrix24 REST API. Contribute to mesilov/bitrix24-php-sdk development by creating an account on GitHub.
🔥2👍1
Сущности, которые будут поддержаны на уровне контрактов в bitrix24-php-sdk v2
Если вы делаете приложения без сохранения контактных данных, то ничего страшного у вас будет только
В
Основная мотивация добавления поддержки
Если вы делаете приложения без сохранения контактных данных, то ничего страшного у вас будет только
Application Installations
и Bitrix24 Accounts
, там никаких перс. данных нет.В
Bitrix24 Partners
только общие данные — наименование, сайт, почта [email protected] и т.д. А должно ли приложение регистрировать открытую линию партнёра, который ставит приложение?Основная мотивация добавления поддержки
Contact Persons
— это упрощение поддержки приложений.Контракты для приложений маркетплейса влиты в релизную ветку 🚀 (https://github.com/mesilov/bitrix24-php-sdk/pull/398)
Сейчас «из коробки» SDK даёт вам подсказки, как можно организовать:
— хранение токенов
— факты установок
— информация о контактных лицах, которые поставили приложение
— информация о партнёре который сопровождает портал или производил установку
Каждый из контрактов содержит:
- документацию
- интерфейс для сущности
- интерфейс для репозитория
- события
- контрактные тесты (`
Что дальше будет в плане улучшения жизни разработчиков приложений:
- отдельный репозиторий с фреймворк-агностик реализацией сущностей и хранением их в БД (привет доктрина) котороый завязан на эти контракты
- использование этого решения уже внутри фреймворка (symfony или laravel).
Следующий шаг — подготовка к сборке версии 2.0
Сейчас «из коробки» SDK даёт вам подсказки, как можно организовать:
— хранение токенов
Bitrix24Accounts
— факты установок
ApplicationInstallations
— информация о контактных лицах, которые поставили приложение
ContactPersons
, вещь опциональная, на любителя работать с перс.данными.— информация о партнёре который сопровождает портал или производил установку
Bitrix24Partners
, опционально.Каждый из контрактов содержит:
- документацию
- интерфейс для сущности
- интерфейс для репозитория
- события
- контрактные тесты (`
248 tests, 386 assertions
`) об которые можно проверять свои собственные реализации этих контратов. Что дальше будет в плане улучшения жизни разработчиков приложений:
- отдельный репозиторий с фреймворк-агностик реализацией сущностей и хранением их в БД (привет доктрина) котороый завязан на эти контракты
- использование этого решения уже внутри фреймворка (symfony или laravel).
Следующий шаг — подготовка к сборке версии 2.0
GitHub
refactor app contracts and add documentation for use cases by mesilov · Pull Request #398 · mesilov/bitrix24-php-sdk
Deleted the Bitrix24Account contracts: Bitrix24AccountInterface, Bitrix24AccountRepositoryInterface, and Bitrix24AccountStatus. This is part of a broader refactor of the Bitrix24\SDK\Application\Co...
🔥2
Вчера Валентин Удальцов (если вы пишите на PHP, то вы про него слышали) решил сделать срез знаний по PHP для подписчиков своего канала @phpyh и задал пяток вопросов:
1. Назови несколько принятых в PHP 8.4 изменений
2. Почему некоторые расширения, например, ext-pcntl, в composer.json принято прописывать с констрейнтом "*"?
3. По какому принципу выбраны значения констант ReflectionProperty::IS_*? https://www.php.net/manual/ru/class.reflectionproperty.php
4. Можно ли расширить возвращаемый тип метода в дочернем классе и почему?
5. Как соотносятся понятия "полиморфизм" и "наследование"?
6. Реши задачу. https://gist.github.com/vudaltsov/f2606f3adb562cc8e9375a0c69527693
7. Почему попросить ИИ-помощника написать тесты может быть не очень хорошей идеей?
8. В чём оптимизм оптимистичной блокировки?
Разбор ответов у Валентина будет позже, часть вопросов намекают на его текущую работу.
У меня в планах попробовать использовать библиотеку Валентина для автовывода типов возвращаемых результатов.
Если у вас есть много свободного времени и есть желание попробовать поработать с системой типов в PHP, то ставьте + в комментарии.
1. Назови несколько принятых в PHP 8.4 изменений
2. Почему некоторые расширения, например, ext-pcntl, в composer.json принято прописывать с констрейнтом "*"?
3. По какому принципу выбраны значения констант ReflectionProperty::IS_*? https://www.php.net/manual/ru/class.reflectionproperty.php
4. Можно ли расширить возвращаемый тип метода в дочернем классе и почему?
5. Как соотносятся понятия "полиморфизм" и "наследование"?
6. Реши задачу. https://gist.github.com/vudaltsov/f2606f3adb562cc8e9375a0c69527693
7. Почему попросить ИИ-помощника написать тесты может быть не очень хорошей идеей?
8. В чём оптимизм оптимистичной блокировки?
Разбор ответов у Валентина будет позже, часть вопросов намекают на его текущую работу.
У меня в планах попробовать использовать библиотеку Валентина для автовывода типов возвращаемых результатов.
Если у вас есть много свободного времени и есть желание попробовать поработать с системой типов в PHP, то ставьте + в комментарии.
www.php.net
PHP: Hypertext Preprocessor
PHP is a popular general-purpose scripting language that powers everything from your blog to the most popular websites in the world.
Текущее положение дел
Разработчики из Битрикс24 релизят новые методы и расширяют старые — добавляют в них поля
Задача
Сделать автоматическую проверку соответствия актуальности phpdoc документации во всех сущностях bitrix24-php-sdk.
Пример аннотации для контакта
Эти аннотации используются в работе IDE и именно они обеспечивают полноту и правильность автокомплита.
Решение
Автоматическая сверка аннотаций с набором полей который возрващает Битрикс24.
Для чтения аннотаций в рантайме используется библиотека https://github.com/typhoon-php/typhoon
В phpunit добавлен кастомный ассерт
и теперь на любую сущность Битрикс24 можно навесить новый тип теста — проверка актуальности документации
Разработчики из Битрикс24 релизят новые методы и расширяют старые — добавляют в них поля
Задача
Сделать автоматическую проверку соответствия актуальности phpdoc документации во всех сущностях bitrix24-php-sdk.
Пример аннотации для контакта
/**
* @property-read array<int,int>|null $COMPANY_IDS
* @property-read int $CREATED_BY_ID
* @property-read CarbonImmutable $DATE_CREATE
* @property-read CarbonImmutable $DATE_MODIFY
* @property-read int|null $FACE_ID
* @property-read bool $EXPORT
* @property-read Email[] $EMAIL
* @property-read int $ID
* @property-read bool $HAS_EMAIL
*/
Эти аннотации используются в работе IDE и именно они обеспечивают полноту и правильность автокомплита.
Решение
Автоматическая сверка аннотаций с набором полей который возрващает Битрикс24.
Для чтения аннотаций в рантайме используется библиотека https://github.com/typhoon-php/typhoon
В phpunit добавлен кастомный ассерт
trait CustomBitrix24Assertions
{
/**
* @param array<int, non-empty-string> $fieldCodesFromApi
* @param class-string $resultItemClassName
* @return void
*/
protected function assertBitrix24AllResultItemFieldsAnnotated(array $fieldCodesFromApi, string $resultItemClassName): void
{
sort($fieldCodesFromApi);
// parse keys from phpdoc annotation
$props = TyphoonReflector::build()->reflectClass($resultItemClassName)->properties();
$propsFromAnnotations = [];
foreach ($props as $meta) {
if ($meta->isAnnotated() && !$meta->isNative()) {
$propsFromAnnotations[] = $meta->id->name;
}
}
sort($propsFromAnnotations);
$this->assertEquals($fieldCodesFromApi, $propsFromAnnotations,
sprintf('in phpdocs annotations for class %s we not found fields from actual api response: %s',
$resultItemClassName,
implode(', ', array_values(array_diff($fieldCodesFromApi, $propsFromAnnotations)))
));
}
}
и теперь на любую сущность Битрикс24 можно навесить новый тип теста — проверка актуальности документации
public function testAllSystemFieldsAnnotated(): void
{
$propListFromApi = (new Core\Fields\FieldsFilter())->filterSystemFields(array_keys($this->contactService->fields()->getFieldsDescription()));
$this->assertBitrix24AllResultItemFieldsAnnotated($propListFromApi, ContactItemResult::class);
}
GitHub
GitHub - typhoon-php/typhoon: Ultimate type system and reflection for PHP
Ultimate type system and reflection for PHP. Contribute to typhoon-php/typhoon development by creating an account on GitHub.
👍4
Задача
Есть REST-API на 1000+ методов, требуется:
1. отслеживать, какие методы SDK поддерживает и какой % покрытия
2. генерировать документацию для разработчиков
3. давать структурированный JSON для возможной кодогенерации силами LLM (планы)
Решение
Нам помогут атрибуты – https://www.php.net/manual/en/language.attributes.php
Вешаем на каждый метод кастомный атрибут
И получаем возможность их распарсить и собрать из них документацию.
В части методов используются генераторы, поэтому там есть проблема с выводом правильного типа возвращаемого результата. Её мы решаем конечно же за счёт использования typhoon-php
Что в итоге
1. Все методы аннотированы и генерируется документация
2. Видим % покрытия методов и можем планировать работы и цели по улучшению покрытия
Bitrix24 API-methods count: 1131
Supported in bitrix24-php-sdk methods count: 160
Coverage percentage: 14.15% 🚀
Есть REST-API на 1000+ методов, требуется:
1. отслеживать, какие методы SDK поддерживает и какой % покрытия
2. генерировать документацию для разработчиков
3. давать структурированный JSON для возможной кодогенерации силами LLM (планы)
Решение
Нам помогут атрибуты – https://www.php.net/manual/en/language.attributes.php
Вешаем на каждый метод кастомный атрибут
ApiEndpointMetadata
:
#[ApiEndpointMetadata(
'crm.contact.add',
'https://training.bitrix24.com/rest_help/crm/contacts/crm_contact_add.php',
'Creates a new contact.'
)]
public function add(array $fields, array $params = ['REGISTER_SONET_EVENT' => 'N']): AddedItemResult
{
return new AddedItemResult(
$this->core->call(
'crm.contact.add',
[
'fields' => $fields,
'params' => $params,
]
)
);
}
И получаем возможность их распарсить и собрать из них документацию.
В части методов используются генераторы, поэтому там есть проблема с выводом правильного типа возвращаемого результата. Её мы решаем конечно же за счёт использования typhoon-php
* @return Generator<int, ContactItemResult> <==== ПРАВИЛЬНЫЙ ТИП
* @throws BaseException
*/
#[ApiBatchMethodMetadata(
'crm.contact.list',
'https://training.bitrix24.com/rest_help/crm/contacts/crm_contact_list.php',
'Returns in batch mode a list of contacts'
)]
public function list(array $order, array $filter, array $select, ?int $limit = null): Generator <==== общий тип Generator
{
$this->log->debug(
'list',
[
'order' => $order,
'filter' => $filter,
'select' => $select,
'limit' => $limit,
]
);
foreach ($this->batch->getTraversableList('crm.contact.list', $order, $filter, $select, $limit) as $key => $value) {
yield $key => new ContactItemResult($value);
}
}
Что в итоге
1. Все методы аннотированы и генерируется документация
2. Видим % покрытия методов и можем планировать работы и цели по улучшению покрытия
Bitrix24 API-methods count: 1131
Supported in bitrix24-php-sdk methods count: 160
Coverage percentage: 14.15% 🚀
www.php.net
PHP: Hypertext Preprocessor
PHP is a popular general-purpose scripting language that powers everything from your blog to the most popular websites in the world.
3👍4🔥3
Релиз 2.0-beta.3 — https://github.com/mesilov/bitrix24-php-sdk/releases/tag/2.0-beta.3
Added
❗️ add scope bizproc and services for work with workflows
add method
add
add
add
add
add
add
add
add
add
add method
add method
add method
add method
add method
work with call records
add class
add method
add enum
add exception
add class fields filter
improve DX – add Rector for improve code quality and speed up releases cycle
improve DX – add attributes for generate documentation and calculate methods coverage.
Changed
❗️ migrate from
❗️ migrate from
❗️ refactor
❗️ update scope telephony, scope fully rewritten
update scope
change signature
event tokens
change signature
add fields and change return types in
change typehints in
Deleted
remove class
remove class
remove
remove class
remove class
Bugfix
fix typehint for Bitrix24 User entity with field ID
fix default arguments for Bitrix24 User get method
fix limit argument not worked in batch list and read model
Added
❗️ add scope bizproc and services for work with workflows
add method
Bitrix24\SDK\Core\Credentials\AccessToken::initFromWorkflowRequest
add method Bitrix24\SDK\Core\Credentials\AccessToken::initFromEventRequest
add
Bitrix24\SDK\Infrastructure\Filesystem\Base64Encoder
for work with base64 encodingadd
Bitrix24\SDK\Core\Exceptions\FileNotFoundException
if file not foundadd
Bitrix24\SDK\Core\Exceptions\MethodConfirmWaitingException
if api call waiting for confirmadd
Bitrix24\SDK\Core\Exceptions\UserNotFoundOrIsNotActiveException
exception if user not found, or it is not activeadd
Bitrix24\SDK\Core\Result\UserInterfaceDialogCallResult
result of call UIadd
Bitrix24\SDK\Core\Result\EmptyResult
empty resultadd
IncomingRobotRequest
wrapper for data from crm-robot requestadd
IncomingWorkflowRequest
wrapper for data from biz proc activity requestadd
Bitrix24\SDK\Core\Credentials::isWebhookContext
- for check is current context init from webhookadd method
Bitrix24\SDK\Application\Requests\Events\AbstractEventRequest::getEventId
- for get event idadd method
Bitrix24\SDK\Application\Requests\Events\AbstractEventRequest::getAuth
- get event auth tokenadd method
Bitrix24\SDK\Application\Requests\Events\EventAuthItem
- event auth tokenadd method
Bitrix24\SDK\Application\Requests\Events\EventInterface
- for event fabricsadd method
Bitrix24\SDK\Infrastructure\Filesystem\Base64Encoder::encodeCallRecord(string $filename): string
- forwork with call records
add class
Bitrix24\SDK\Services\Main\Service\EventManager
- improve DX for work with events lifecycle bind or unbindadd method
Bitrix24\SDK\Services\Main\Common\EventHandlerMetadata
- improve DX for work with install eventsadd enum
Bitrix24\SDK\Services\CRM\Common\Result\DiscountType
add exception
Bitrix24\SDK\Core\Exceptions\WrongAuthTypeException
– if you use wrong auth type.add class fields filter
Bitrix24\SDK\Core\Fields\FieldsFilter
for fields filtration in result array.improve DX – add Rector for improve code quality and speed up releases cycle
improve DX – add attributes for generate documentation and calculate methods coverage.
Changed
❗️ migrate from
ramsey/uuid
to symfony/uid
❗️ migrate from
DateTimeImmutable
to CarbonImmutable
from carbon❗️ refactor
Bitrix24\SDK\Application\Contracts
:❗️ update scope telephony, scope fully rewritten
update scope
im
, add service Notify
change signature
Bitrix24\SDK\Core\Credentials\AccessToken::getRefreshToken()?string
; - add nullable option forevent tokens
change signature
Bitrix24\SDK\Core\Commands\Command::getName():?string
renamed to getId():stringadd fields and change return types in
Bitrix24\SDK\Services\CRM\Deal\Result\DealProductRowItemResult
change typehints in
Bitrix24\SDK\Services\CRM\Activity\Service\Activity::add
Deleted
remove class
Bitrix24\SDK\Application\Requests\Events\OnApplicationInstall\Auth
remove class
Bitrix24\SDK\Application\Requests\Events\OnApplicationUninstall\Auth
remove method Bitrix24\SDK\Core\Response\Response::__destruct
remove
interface Bitrix24\SDK\Services\Telephony\Common\StatusSipCodeInterface
remove class
Bitrix24\SDK\Services\Telephony\Common\StatusSipRegistrations
remove class
Bitrix24\SDK\Services\Telephony\Common\TypeAtc
Bugfix
fix typehint for Bitrix24 User entity with field ID
fix default arguments for Bitrix24 User get method
fix limit argument not worked in batch list and read model
GitHub
Release 2.0-beta.3 · mesilov/bitrix24-php-sdk
Added
add dependencies
symfony/console version ^6 || ^7
symfony/dotenv version ^6 || ^7
symfony/filesystem version ^6 || ^7
symfony/mime version ^6 || ^7
nesbot/carbon version 3.3.*
mesilov/money...
add dependencies
symfony/console version ^6 || ^7
symfony/dotenv version ^6 || ^7
symfony/filesystem version ^6 || ^7
symfony/mime version ^6 || ^7
nesbot/carbon version 3.3.*
mesilov/money...
1👍4
Релиз 2.0 выпущен 🚀
https://github.com/mesilov/bitrix24-php-sdk/releases/tag/2.0
Что будет дальше
усилия будут направлены на два направления:
1. Увеличение покрытия методов в bitrix24-php-sdk
2. Старт работ по следующему уровню абстракции👉
🚲 — уровень приложения
🛠️ bitrix24-php-lib — работа с сущностями приложения и их хранение в СУБД: используем Doctrine и PostgreSQL
✅ bitrix24-php-sdk — транспортный слой + события транспорта (протух токен, переименовали портал)
Тут уже больше вариантов, как сделать всё супер-сложно и непонятно, можно запасаться 🍿 и подписываться на репозиторий https://github.com/mesilov/bitrix24-php-lib и начинать писать в issues, что лучше сделать по другому. Лицензия MIT, срач и размышления на русском языке: добро пожаловать!
https://github.com/mesilov/bitrix24-php-sdk/releases/tag/2.0
Что будет дальше
усилия будут направлены на два направления:
1. Увеличение покрытия методов в bitrix24-php-sdk
2. Старт работ по следующему уровню абстракции
🚲 — уровень приложения
🛠️ bitrix24-php-lib — работа с сущностями приложения и их хранение в СУБД: используем Doctrine и PostgreSQL
✅ bitrix24-php-sdk — транспортный слой + события транспорта (протух токен, переименовали портал)
Тут уже больше вариантов, как сделать всё супер-сложно и непонятно, можно запасаться 🍿 и подписываться на репозиторий https://github.com/mesilov/bitrix24-php-lib и начинать писать в issues, что лучше сделать по другому. Лицензия MIT, срач и размышления на русском языке: добро пожаловать!
Please open Telegram to view this post
VIEW IN TELEGRAM
GitHub
Release 2.0 · mesilov/bitrix24-php-sdk
Fully refactored bitrix24-php-sdk based on Symfony components 🚀
9👍8🔥4
Forwarded from Serg Vostrikov
Коллеги, есть важная новость.
Давно зарекоменовавший себя PHP SDK от @mesilov теперь становится официальным SDK для разработки на PHP.
Актуальная версия доступна в официальном репозитории https://github.com/bitrix24/b24phpsdk
Для тех, кто еще не использовал библиотеку, можно перечислить основные преимущества:
1. Красотища. Ну, то есть, code completion в IDE, причем даже на уровне параметров методов. Это не избавляет от необходимости почитать документацию, но это точно защищает от глупых ошибок при формировании запросов. И ускоряет разработку
2. Эффективная работа со списочными методами. Мы все знаем, что это не простая штука - вытащить стотыщпяссот записей. В SDK не просто есть поддержка batch (она и в CRest как бы есть), там есть правильное использование возможностей языка, что позволяет значительно экономить память, что для веб-приложений может являться критичным.
3. Типизированные параметры и данные. Если метод работает с полем типа Дата, то это прямо дата в терминах PHP, а не просто строка с особыми циферками.
4. Подкапотные сценарии для тиражных приложений вроде автообновления токенов. Причем, поскольку это все же SDK, а не заготовка приложения, вы сами решаете, что с токенами делать и где хранить. Это несколько повышает порог входа для тех, кто вообще не в теме, но мы его закроем готовыми примерами How to
И т.д. Модно, грамотно, молодежно (зачеркнуто) по-стариковски. То есть, проверено реальным опытом в сложных и высоконагрузочных проектах.
Из нашей статистики могу сказать, что этот SDK является наиболее массовой библиотекой после CRest, но теперь мы будем стараться, чтобы при разработке приложений и локальных интеграций разработчики все же использовали новый SDK. Он просто лучше и надежнее.
Репа открыта, ждем issues, pull-requests, примеров - планов много.
Давно зарекоменовавший себя PHP SDK от @mesilov теперь становится официальным SDK для разработки на PHP.
Актуальная версия доступна в официальном репозитории https://github.com/bitrix24/b24phpsdk
Для тех, кто еще не использовал библиотеку, можно перечислить основные преимущества:
1. Красотища. Ну, то есть, code completion в IDE, причем даже на уровне параметров методов. Это не избавляет от необходимости почитать документацию, но это точно защищает от глупых ошибок при формировании запросов. И ускоряет разработку
2. Эффективная работа со списочными методами. Мы все знаем, что это не простая штука - вытащить стотыщпяссот записей. В SDK не просто есть поддержка batch (она и в CRest как бы есть), там есть правильное использование возможностей языка, что позволяет значительно экономить память, что для веб-приложений может являться критичным.
3. Типизированные параметры и данные. Если метод работает с полем типа Дата, то это прямо дата в терминах PHP, а не просто строка с особыми циферками.
4. Подкапотные сценарии для тиражных приложений вроде автообновления токенов. Причем, поскольку это все же SDK, а не заготовка приложения, вы сами решаете, что с токенами делать и где хранить. Это несколько повышает порог входа для тех, кто вообще не в теме, но мы его закроем готовыми примерами How to
И т.д. Модно, грамотно, молодежно (зачеркнуто) по-стариковски. То есть, проверено реальным опытом в сложных и высоконагрузочных проектах.
Из нашей статистики могу сказать, что этот SDK является наиболее массовой библиотекой после CRest, но теперь мы будем стараться, чтобы при разработке приложений и локальных интеграций разработчики все же использовали новый SDK. Он просто лучше и надежнее.
Репа открыта, ждем issues, pull-requests, примеров - планов много.
GitHub
GitHub - bitrix24/b24phpsdk: Bitrix24 PHP SDK for REST API
Bitrix24 PHP SDK for REST API. Contribute to bitrix24/b24phpsdk development by creating an account on GitHub.
🔥8👍1