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

This package is auto-updated.

Last update: 2024-05-04 16:21:06 UTC


README

An SDK designed for easy usage of the allrival.com website's API

SKD созданное для упрощенного взаимодействия с API сайта allrival.com
Документация к API

Установка

composer require bravegeek/allrival-sdk

Ссылка на Packagist

Клиент

Класс AllrivalSDK\Client.php является точкой входа для взаимодействия с SDK.
В нем находятся менеджеры, через которых идет взаимодействие с API Allrival.

Менеджеры

В данном SDK представлены 5 типов менеджеров:

  • Product Manager
  • Company Manager
  • Cluster Manager
  • Report Manager
  • Price history Manager
  1. 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);
    
  1. Company Manager отвечает за получение всей информации о компании и её конкурентах на сайте Allrival а также удаление компании вместе с продуктами по её ID
    Методы:
  • getYourCompanyInfo
    Возвращает информацию о вашей компании и её конкурентах
    Примеры:
    // Возвращает CompanyType / array
    $result = $this->companyManager->getYourCompanyInfo();
    
  • removeProductsByCompanyId
    Удаляет компанию вместе с продуктами по её ID
    $id = ...; // Id вашей компании
    
    // Возвращает true / false
    $result = $this->companyManager->removeProductsByCompanyId($id)
    
  1. 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);
    
4) Report Manager - отвечает за выгрузку. Принимает фильтры, которые будут использованы при выборке.
Методы:
  • 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 видов фильтров:

  1. BooleanFilter - Фильтр для булевых типов фильтров (где есть выбор да/нет)
  2. EmptyTypeFilter - Без указания типа фильтра, принимает только явные значения
  3. EmptyTypeMultipleValuesFilter - Для фильтров с выбором нескольких значений (тэги, города, категории и т.д.) и без типа фильтра
  4. InequalityFilter - Фильтр для сравнения числовых значений
  5. MembershipFilter - Фильтр для строковых значений. Позволяет указать принадлежит ли одна строка другой или сравнить их
  6. MultipleValuesFilter - Для типов фильтров с выбором нескольких значений (города, категории и компании) с выбором типа фильтра
  7. OnlyExplicitValuesFilter - Фильтр без указания типа, принимает только явные значения. Примеры параметров можно посмотреть в личном кабинете allrival.com
  8. 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