Skip to content

Commit

Permalink
Changes for class HTTP v3.0
Browse files Browse the repository at this point in the history
  • Loading branch information
andrey-tech committed Feb 7, 2021
1 parent 3929647 commit e47be8d
Show file tree
Hide file tree
Showing 8 changed files with 177 additions and 95 deletions.
1 change: 0 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@
.idea/
examples/
logs/

2 changes: 1 addition & 1 deletion LICENSE
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
MIT License

Copyright (c) 2019-2020 andrey-tech
Copyright (c) 2019-2021 andrey-tech

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
Expand Down
163 changes: 111 additions & 52 deletions README.md

Large diffs are not rendered by default.

6 changes: 3 additions & 3 deletions composer.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "andrey-tech/bizon365-api-php",
"description": "Обертка для работы с API v1 Бизон365 c троттлингом запросов и логированием в файл",
"description": "Обертка на PHP7+ для работы с API v1 сервиса Бизон 365 c троттлингом запросов и логированием в файл",
"keywords": [ "bizon365", "bizon", "api", "api-wrapper", "throttling", "logging" ],
"homepage": "https://github.com/andrey-tech/bizon365-api-php",
"minimum-stability": "stable",
Expand All @@ -15,8 +15,8 @@
"require": {
"php": ">=7.0",
"ext-json": "*",
"andrey-tech/http-client-php": "^2.9",
"andrey-tech/debug-logger-php": "^1.8"
"andrey-tech/http-client-php": "^3.0",
"andrey-tech/debug-logger-php": "^2.0"
},
"autoload": {
"psr-4": {
Expand Down
38 changes: 26 additions & 12 deletions src/App/Bizon365/Bizon365API.php
Original file line number Diff line number Diff line change
Expand Up @@ -4,45 +4,46 @@
* Обертка для работы с REST API v1 Бизон365 с тротлингом запросов и логированием
*
* @author andrey-tech
* @copyright 2019-2020 andrey-tech
* @copyright 2019-2021 andrey-tech
* @see https://github.com/andrey-tech/bizon365-api-php
* @license MIT
*
* @version 2.1.0
* @version 2.2.0
*
* v1.0.0 (07.10.2019) Начальный релиз
* v1.1.0 (29.03.2020) Добавлено логирование в файл
* v2.0.0 (15.06.2020) Изменено название класса и названия методов класса
* v2.1.0 (02.08.2020) Добавлены трейты WebinarViewers, WebinarSubscribers
* v2.2.0 (07.02.2021) Изменения для класса HTTP v3.0; добавлен метод setLogger()
*
*/

declare(strict_types = 1);
declare(strict_types=1);

namespace App\Bizon365;

use App\AppException;
use App\HTTP;
use App\HTTP\HTTP;

class Bizon365API
{
use WebinarViewers;
use WebinarSubscribers;

/**
* URL REST API
* Bizon365 REST API URL
* @var string
*/
const URL = 'https://online.bizon365.ru/api/v1/';

/**
* Объект класса \App\HTTP
* @var object
* Объект класса HTTP
* @var HTTP
*/
public $http;

/**
* Объект класса, выполняющего логирование
* @param object
* @param \App\DebugLogger\DebugLogger
*/
public $logger;

Expand All @@ -64,6 +65,20 @@ public function __construct(string $authToken = null)
$this->http->useCookies = !isset($authToken);
}

/**
* Устанавливает объект класса, выполняющего логирование
* @param \App\DebugLogger\DebugLoggerInterface $logger
*/
public function setLogger($logger)
{
if (!($logger instanceof \App\DebugLogger\DebugLoggerInterface)) {
throw new Bizon365APIException(
"Класс логгера должен реализовывать интерфейс \App\DebugLogger\DebugLoggerInterface"
);
}
$this->logger = $logger;
}

/**
* Выполняет предварительную авторизация с получением cookie
* @param string $username Имя пользователя
Expand Down Expand Up @@ -120,7 +135,6 @@ public function logout()
* @param array $requestHeaders Заголовки запроса
* @param array $curlOptions Дополнительные опции для cURL
* @return array|null
* @throws AppException
*/
protected function request(
string $path,
Expand Down Expand Up @@ -154,9 +168,9 @@ protected function request(
* @param mixed $data Данные для преобразования
* @return string
*/
protected function toJSON($data) :string
protected function toJSON($data): string
{
$jsonParams = json_encode($data, JSON_UNESCAPED_UNICODE|JSON_PARTIAL_OUTPUT_ON_ERROR|JSON_PRETTY_PRINT);
$jsonParams = json_encode($data, JSON_UNESCAPED_UNICODE | JSON_PARTIAL_OUTPUT_ON_ERROR | JSON_PRETTY_PRINT);
if ($jsonParams === false) {
$jsonParams = print_r($data, true);
}
Expand Down
9 changes: 5 additions & 4 deletions src/App/Bizon365/Bizon365APIException.php
Original file line number Diff line number Diff line change
Expand Up @@ -4,18 +4,19 @@
* Обработчик исключений в классах пространства имен \App\Bizon365
*
* @author andrey-tech
* @copyright 2019-2020 andrey-tech
* @copyright 2019-2021 andrey-tech
* @see https://github.com/andrey-tech/bizon365-api-php
* @license MIT
*
* @version 1.0.1
* @version 1.0.2
*
* v1.0.0 (13.10.2019) Начальный релиз
* v1.0.1 (02.08.2020) Добавлен use Exception
* v1.0.2 (07.02.2021) Изменена строка в сообщении об исключении
*
*/

declare(strict_types = 1);
declare(strict_types=1);

namespace App\Bizon365;

Expand All @@ -31,6 +32,6 @@ class Bizon365APIException extends Exception
*/
public function __construct(string $message = '', $code = 0, Exception $previous = null)
{
parent::__construct("Bizon365 API: " . $message, $code, $previous);
parent::__construct("Bizon365API: " . $message, $code, $previous);
}
}
38 changes: 23 additions & 15 deletions src/App/Bizon365/WebinarSubscribers.php
Original file line number Diff line number Diff line change
Expand Up @@ -4,17 +4,18 @@
* Трейт WebinarSubscribers. Содержит методы для работы с подписчиками вебинаров
*
* @author andrey-tech
* @copyright 2020 andrey-tech
* @copyright 2020-2021 andrey-tech
* @see https://github.com/andrey-tech/bizon365-api-php
* @license MIT
*
* @version 1.0.0
* @version 1.0.1
*
* v1.0.0 (02.08.2020) Начальный релиз
* v1.0.1 (07.02.2021) Рефакторинг
*
*/

declare(strict_types = 1);
declare(strict_types=1);

namespace App\Bizon365;

Expand All @@ -31,7 +32,7 @@ trait WebinarSubscribers
public function getWebinarSubpages(
int $skip = 0,
int $limit = 50
) :array {
): array {
$response = $this->request(
'webinars/subpages/getSubpages',
'GET',
Expand All @@ -49,7 +50,9 @@ public function getWebinarSubpages(

if (! empty($response['errors'])) {
$jsonErrors = $this->toJSON($response['errors']);
throw new Bizon365APIException("Ошибки при загрузке списка страниц регистрации по вабинарам: {$jsonErrors}");
throw new Bizon365APIException(
"Ошибки при загрузке списка страниц регистрации по вебинарам: {$jsonErrors}"
);
}

return $response['pages'];
Expand All @@ -66,7 +69,7 @@ public function getWebinarSubpages(
public function getAllWebinarSubpages(
int $skip = 0,
int $limit = 50
) :array {
): array {
$webinarSubpages = [];

do {
Expand All @@ -84,8 +87,10 @@ public function getAllWebinarSubpages(
* @param string $pageId ID страницы регистрации
* @param int $skip Пропустить указанное число записей
* @param int $limit Ограничить количество записей (не более 1000)
* @param string $webinarTimeMin Нижняя граница для времени сеанса, на который зарегистрированы подписчики в формате ISO8601
* @param string $webinarTimeMax Верхняя граница для времени сеанса, на который зарегистрированы подписчики в формате ISO8601
* @param string $webinarTimeMin Нижняя граница для времени сеанса, на который зарегистрированы подписчики
* в формате ISO8601
* @param string $webinarTimeMax Верхняя граница для времени сеанса, на который зарегистрированы подписчики
* в формате ISO8601
* @param string $registeredTimeMin Нижняя граница для времени регистрации подписчика в формате ISO8601
* @param string $registeredTimeMax Верхняя граница для времени регистрации подписчика в формате ISO8601
* @param string $url_marker Значение маркера из URL, идентификатор партнера
Expand All @@ -102,7 +107,7 @@ public function getWebinarSubscribers(
string $registeredTimeMin = null,
string $registeredTimeMax = null,
string $url_marker = null
) :array {
): array {

$params = [ 'pageId' => $pageId, 'skip' => $skip, 'limit' => $limit ];
$names = [ 'registeredTimeMin', 'registeredTimeMax', 'webinarTimeMin', 'webinarTimeMax', 'url_marker'];
Expand All @@ -122,13 +127,15 @@ public function getWebinarSubscribers(
$httpCode = $this->http->getHTTPCode();
$response = $this->http->getResponse();
throw new Bizon365APIException(
"Не удалось загрузить список подписчиков вебинара для страницы {$pageId} (HTTP code {$httpCode}): {$response}"
"Не удалось загрузить список подписчиков вебинара для страницы {$pageId} " .
"(HTTP code {$httpCode}): {$response}"
);
}

if (! empty($response['errors'])) {
$jsonErrors = $this->toJSON($response['errors']);
throw new Bizon365APIException("Ошибки при загрузке списка подписчиков вебинара для страницы {$pageId}: {$jsonErrors}");
throw new Bizon365APIException("Ошибки при загрузке списка подписчиков вебинара " .
"для страницы {$pageId}: {$jsonErrors}");
}

return $response['list'];
Expand All @@ -139,8 +146,10 @@ public function getWebinarSubscribers(
* @param string $pageId ID страницы регистрации
* @param int $skip Пропустить указанное число записей
* @param int $limit Количество записей в одном запросе (не более 1000)
* @param string $webinarTimeMin Нижняя граница для времени сеанса, на который зарегистрированы подписчики в формате ISO8601
* @param string $webinarTimeMax Верхняя граница для времени сеанса, на который зарегистрированы подписчики в формате ISO8601
* @param string $webinarTimeMin Нижняя граница для времени сеанса, на который зарегистрированы подписчики
* в формате ISO8601
* @param string $webinarTimeMax Верхняя граница для времени сеанса, на который зарегистрированы подписчики
* в формате ISO8601
* @param string $registeredTimeMin Нижняя граница для времени регистрации подписчика в формате ISO8601
* @param string $registeredTimeMax Верхняя граница для времени регистрации подписчика в формате ISO8601
* @param string $url_marker Значение маркера из URL, идентификатор партнера
Expand All @@ -157,8 +166,7 @@ public function getAllWebinarSubscribers(
string $registeredTimeMin = null,
string $registeredTimeMax = null,
string $url_marker = null
) :array
{
): array {
$webinarSubscribers = [];

do {
Expand Down
15 changes: 8 additions & 7 deletions src/App/Bizon365/WebinarViewers.php
Original file line number Diff line number Diff line change
Expand Up @@ -4,17 +4,18 @@
* Трейт WebinarViewers. Содержит методы для работы со зрителями вебинаров
*
* @author andrey-tech
* @copyright 2020 andrey-tech
* @copyright 2020-2021 andrey-tech
* @see https://github.com/andrey-tech/bizon365-api-php
* @license MIT
*
* @version 1.0.0
* @version 1.0.1
*
* v1.0.0 (02.08.2020) Начальный релиз
* v1.0.1 (07.02.2021) Рефакторинг
*
*/

declare(strict_types = 1);
declare(strict_types=1);

namespace App\Bizon365;

Expand All @@ -35,7 +36,7 @@ public function getWebinarList(
int $limit = 100,
bool $liveWebinars = true,
bool $autoWebinars = true
) :array {
): array {
$response = $this->request(
'webinars/reports/getlist',
'GET',
Expand Down Expand Up @@ -101,7 +102,7 @@ public function getAllWebinarList(
* @throws Bizon365APIException
* @see https://blog.bizon365.ru/api/v1/webinars/reports/
*/
public function getWebinarViewers(string $webinarId, int $skip = 0, int $limit = 1000) :array
public function getWebinarViewers(string $webinarId, int $skip = 0, int $limit = 1000): array
{
$response = $this->request(
'webinars/reports/getviewers',
Expand All @@ -119,7 +120,7 @@ public function getWebinarViewers(string $webinarId, int $skip = 0, int $limit =

if (! empty($response['errors'])) {
$jsonErrors = $this->toJSON($response['errors']);
throw new Bizon365APIException("Ошибки при загрузке списка зрителей вабинара {$webinarId}: {$jsonErrors}");
throw new Bizon365APIException("Ошибки при загрузке списка зрителей вебинара {$webinarId}: {$jsonErrors}");
}

return $response['viewers'];
Expand All @@ -134,7 +135,7 @@ public function getWebinarViewers(string $webinarId, int $skip = 0, int $limit =
* @throws Bizon365APIException
* @see https://blog.bizon365.ru/api/v1/webinars/reports/
*/
public function getAllWebinarViewers(string $webinarId, int $skip = 0, int $limit = 1000) :array
public function getAllWebinarViewers(string $webinarId, int $skip = 0, int $limit = 1000): array
{
$webinarViewers = [];

Expand Down

0 comments on commit e47be8d

Please sign in to comment.