bravegeek / allrival-sdk
An SDK designed for easy usage of the allrival.com website's API
v1.0.0
2023-06-15 20:02 UTC
Requires
- php: ^8.1
- ext-curl: *
- ext-json: *
Requires (Dev)
- phpunit/phpunit: ^9.5
- symfony/dotenv: ^6.2
README
An SDK designed for easy usage of the allrival.com website's API
SKD созданное для упрощенного взаимодействия с API сайта allrival.com
Документация к API
Установка
composer require bravegeek/allrival-sdk
Клиент
Класс AllrivalSDK\Client.php является точкой входа для взаимодействия с SDK.
В нем находятся менеджеры, через которых идет взаимодействие с API Allrival.
Менеджеры
В данном SDK представлены 5 типов менеджеров:
- Product Manager
- Company Manager
- Cluster Manager
- Report Manager
- Price history Manager
- Product Manager отвечает за добавление и удаление товаров. При передачи url
уже сохраненного товара сервер вернет полную информацию о нем.
Методы:
- addProduct
Принимает Url товара, который вы хотите сохранить. Возвращает информацию о сохраненном товаре
Примеры:// URL товара $productUrl = 'https://www.wildberries.ru/catalog/46369147/detail.aspx'; // Возвращает ProductType / array $createdProduct = $this->productManager->addProduct($productUrl);
- deleteProduct
Принимает Url товара, который вы хотите удалить. Возвращает булево значение о результате удаления (true/false)
// Возвращает true / false $result = $this->productManager->deleteProduct($productUrl);
- Company Manager отвечает за получение всей информации о компании и её конкурентах на сайте Allrival а также удаление компании вместе с продуктами по её ID
Методы:
- getYourCompanyInfo
Возвращает информацию о вашей компании и её конкурентах
Примеры:// Возвращает CompanyType / array $result = $this->companyManager->getYourCompanyInfo();
- removeProductsByCompanyId
Удаляет компанию вместе с продуктами по её ID
$id = ...; // Id вашей компании // Возвращает true / false $result = $this->companyManager->removeProductsByCompanyId($id)
- Cluster Manager отвечает за создание/удаление сопоставлений по ID Вашего продукта и ID продукта конкурента.
Если будут переданы неправильные ID продуктов (оба ID вашей компании, оба ID компании конкурента) менеджер выкинет BadRequestException с информацией о неправильных ID. Методы:
- createMatching
Принимает параметры ID продукта вашей компании и ID продукта компании конкурента.
В случае успеха, возвращает о созданном сопоставлении.
$yourProductId = ...; // Id продукта вашей компании $rivalProductId = ...; // Id продукта компании конкурента // Возвращает ClusterType / array $createdMatching = $this->clusterManager->createMatching($yourProductId, $rivalProductId);
- deleteMatching
Принимает параметры ID продукта вашей компании и ID продукта компании конкурента.
В случае успеха, возвращает об удаленном сопоставлении.
$yourProductId = ...; // Id продукта вашей компании $rivalProductId = ...; // Id продукта компании конкурента // Возвращает ClusterType / array $deletedMatching = $this->clusterManager->deleteMatching($yourProductId, $rivalProductId);
Методы:
- getYourProducts
Принимает произвольное количество фильтров и возвращает выгрузку ваших продуктов на основе фильтров.// $filters - массив фильтров для выгрузки // Возвращает ReportType содержащий массив продуктов и информацию о пагинации $result = $this->reportManager->getYourProducts(...$filters);
- getRivalProducts
Принимает произвольное количество фильтров и возвращает выгрузку продуктов конкурентов на основе фильтров.// $filters - массив фильтров для выгрузки // Возвращает ReportType содержащий массив продуктов и информацию о пагинации $result = $this->reportManager->getRivalProducts(...$filters);
- getSimilars
Принимает произвольное количество фильтров и возвращает выгрузку сопоставлений ваших товаров с товарами конкурентов на основе фильтров.// $filters - массив фильтров для выгрузки // Возвращает ReportType содержащий массив ваших товаров и массив совпавших товаров конкурентов и информацию о пагинации $result = $this->reportManager->getSimilars(...$filters);
- setFilters
Сохраняет переданные фильтры для использования в последующих запросах// $filters - массив фильтров для выгрузки $this->reportManager->setFilters(...$filters);
- addFilter
Добавляет переданный фильтр к массиву уже сохраненных фильтров// $filter - фильтр для выгрузки $this->reportManager->setFilters($filter);
- removeFilter
Удаляет переданный фильтр из массива уже сохраненных фильтров по его названию// $filter - фильтр для выгрузки // Может быть как строкой так и FilterInterface $this->reportManager->removeFilter($filter);
- replaceFilter
Заменяет существующий сохраненный фильтр переданным// $filter - фильтр для выгрузки (FilterInterface) $this->reportManager->replaceFilter($filter);
- resetFilters
Очищает сохраненные фильтры, добавленные через setFilters()$this->reportManager->resetFilters();
Фильтры
Каждый фильтр наследуется от соответствующего типа фильтра. Существует 8 видов фильтров:
- BooleanFilter - Фильтр для булевых типов фильтров (где есть выбор да/нет)
- EmptyTypeFilter - Без указания типа фильтра, принимает только явные значения
- EmptyTypeMultipleValuesFilter - Для фильтров с выбором нескольких значений (тэги, города, категории и т.д.) и без типа фильтра
- InequalityFilter - Фильтр для сравнения числовых значений
- MembershipFilter - Фильтр для строковых значений. Позволяет указать принадлежит ли одна строка другой или сравнить их
- MultipleValuesFilter - Для типов фильтров с выбором нескольких значений (города, категории и компании) с выбором типа фильтра
- OnlyExplicitValuesFilter - Фильтр без указания типа, принимает только явные значения. Примеры параметров можно посмотреть в личном кабинете allrival.com
- TimePeriodFilter - Фильтр для работы с датой и временем
Примеры
-
Получение ваших товаров на основе фильтров
// $apiKey - API ключ из личного кабинета Allrival $apiKey = ...; // Создаем клиент $client = new Client($apiKey); // Создаем массив нужных фильтров $filters = [ new PriceFilter(50, PriceFilter::GREATER_THAN), new NameFilter('Товар', NameFilter::CONTAINS), new SimilarProductPriceFilter(50, SimilarProductPriceFilter::GREATER_THAN), new WithBestPriceFilter(WithBestPriceFilter::YES), new RivalsCompanyFilter(111), ]; // Добавляем фильтры в клиент для последующих запросов $client->setFilters(...$filters); /** * Получаем выгрузку ваших продуктов с фильтрами * * @var $report ReportType */ $report = $this->reportManager->getYourProducts(); // Массив с вашими продуктами $products = $report->getItems(); // Информация о пагинации $pagination = $report->getPagination(); // Количество ваших продуктов на странице $itemsCount = $pagination->getItemsCount(); // Общее количество ваших продуктов $itemsTotalCount = $pagination->getItemsTotalCount(); // Общее количество страниц $pagesCount = $pagination->getPagesCount(); // Делаем что-нибудь с продуктами // ...
-
Добавление и удаление товаров
// $apiKey - API ключ из личного кабинета Allrival $apiKey = ...; // Создаем клиент $client = new Client($apiKey); // Ссылка на товар $createdProductUrl = ...; // Получаем добавленный продукт в виде ProductType $createdProduct = $this->productManager->addProduct($createdProductUrl); // Делаем что-то с добавленным товаром ... .... ..... // URL удаляемого товара $deletedProductUrl = ...; // Информация об удалении товара (true/false) $isDeleted = $this->productManager->deleteProduct($deletedProductUrl);
-
Получение истории цен
// Id продукта, у которого хотим получить историю цен $productId = ...; /** * @var PriceHistoryType $priceHistory */ $priceHistory = $this->priceHistoryManager->getPriceHistory($productId); // Может быть UNIX-time, строкой или DateTime $date = ...; // Получаем цену в указанный момент времени $price = $priceHistory->getByDate($date); // Возвращает массив с историей цен $priceHistoryArray = $priceHistory->getHistory();
-
Создание и удаление сопоставлений
// Id продукта из вашей компании $yourProductIdForCreatedMatch = ...; // Id продукта из компании конкурента $rivalProductIdForCreatedMatch = ...; /** * @var ClusterType $createdMatching */ $createdMatching = $this->clusterManager->createMatching($yourProductIdForCreatedMatch, $rivalProductIdForCreatedMatch); ... .... ..... // Id продукта из вашей компании $yourProductIdForDeletedMatch = ...; // Id продукта из компании конкурента $rivalProductIdForDeletedMatch = ...; /** * @var ClusterType $deletedMatching */ $deletedMatching = $this->clusterManager->deleteMatching($yourProductIdForDeletedMatch, $rivalProductIdForDeletedMatch);
Больше примеров использования находятся в папке ./tests