Skip to content

Commit e47be8d

Browse files
committed
Changes for class HTTP v3.0
1 parent 3929647 commit e47be8d

File tree

8 files changed

+177
-95
lines changed

8 files changed

+177
-95
lines changed

.gitignore

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
11
.idea/
22
examples/
33
logs/
4-

LICENSE

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
MIT License
22

3-
Copyright (c) 2019-2020 andrey-tech
3+
Copyright (c) 2019-2021 andrey-tech
44

55
Permission is hereby granted, free of charge, to any person obtaining a copy
66
of this software and associated documentation files (the "Software"), to deal

README.md

Lines changed: 111 additions & 52 deletions
Large diffs are not rendered by default.

composer.json

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "andrey-tech/bizon365-api-php",
3-
"description": "Обертка для работы с API v1 Бизон365 c троттлингом запросов и логированием в файл",
3+
"description": "Обертка на PHP7+ для работы с API v1 сервиса Бизон 365 c троттлингом запросов и логированием в файл",
44
"keywords": [ "bizon365", "bizon", "api", "api-wrapper", "throttling", "logging" ],
55
"homepage": "https://github.com/andrey-tech/bizon365-api-php",
66
"minimum-stability": "stable",
@@ -15,8 +15,8 @@
1515
"require": {
1616
"php": ">=7.0",
1717
"ext-json": "*",
18-
"andrey-tech/http-client-php": "^2.9",
19-
"andrey-tech/debug-logger-php": "^1.8"
18+
"andrey-tech/http-client-php": "^3.0",
19+
"andrey-tech/debug-logger-php": "^2.0"
2020
},
2121
"autoload": {
2222
"psr-4": {

src/App/Bizon365/Bizon365API.php

Lines changed: 26 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -4,45 +4,46 @@
44
* Обертка для работы с REST API v1 Бизон365 с тротлингом запросов и логированием
55
*
66
* @author andrey-tech
7-
* @copyright 2019-2020 andrey-tech
7+
* @copyright 2019-2021 andrey-tech
88
* @see https://github.com/andrey-tech/bizon365-api-php
99
* @license MIT
1010
*
11-
* @version 2.1.0
11+
* @version 2.2.0
1212
*
1313
* v1.0.0 (07.10.2019) Начальный релиз
1414
* v1.1.0 (29.03.2020) Добавлено логирование в файл
1515
* v2.0.0 (15.06.2020) Изменено название класса и названия методов класса
1616
* v2.1.0 (02.08.2020) Добавлены трейты WebinarViewers, WebinarSubscribers
17+
* v2.2.0 (07.02.2021) Изменения для класса HTTP v3.0; добавлен метод setLogger()
1718
*
1819
*/
1920

20-
declare(strict_types = 1);
21+
declare(strict_types=1);
2122

2223
namespace App\Bizon365;
2324

24-
use App\AppException;
25-
use App\HTTP;
25+
use App\HTTP\HTTP;
2626

2727
class Bizon365API
2828
{
2929
use WebinarViewers;
3030
use WebinarSubscribers;
3131

3232
/**
33-
* URL REST API
33+
* Bizon365 REST API URL
34+
* @var string
3435
*/
3536
const URL = 'https://online.bizon365.ru/api/v1/';
3637

3738
/**
38-
* Объект класса \App\HTTP
39-
* @var object
39+
* Объект класса HTTP
40+
* @var HTTP
4041
*/
4142
public $http;
4243

4344
/**
4445
* Объект класса, выполняющего логирование
45-
* @param object
46+
* @param \App\DebugLogger\DebugLogger
4647
*/
4748
public $logger;
4849

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

68+
/**
69+
* Устанавливает объект класса, выполняющего логирование
70+
* @param \App\DebugLogger\DebugLoggerInterface $logger
71+
*/
72+
public function setLogger($logger)
73+
{
74+
if (!($logger instanceof \App\DebugLogger\DebugLoggerInterface)) {
75+
throw new Bizon365APIException(
76+
"Класс логгера должен реализовывать интерфейс \App\DebugLogger\DebugLoggerInterface"
77+
);
78+
}
79+
$this->logger = $logger;
80+
}
81+
6782
/**
6883
* Выполняет предварительную авторизация с получением cookie
6984
* @param string $username Имя пользователя
@@ -120,7 +135,6 @@ public function logout()
120135
* @param array $requestHeaders Заголовки запроса
121136
* @param array $curlOptions Дополнительные опции для cURL
122137
* @return array|null
123-
* @throws AppException
124138
*/
125139
protected function request(
126140
string $path,
@@ -154,9 +168,9 @@ protected function request(
154168
* @param mixed $data Данные для преобразования
155169
* @return string
156170
*/
157-
protected function toJSON($data) :string
171+
protected function toJSON($data): string
158172
{
159-
$jsonParams = json_encode($data, JSON_UNESCAPED_UNICODE|JSON_PARTIAL_OUTPUT_ON_ERROR|JSON_PRETTY_PRINT);
173+
$jsonParams = json_encode($data, JSON_UNESCAPED_UNICODE | JSON_PARTIAL_OUTPUT_ON_ERROR | JSON_PRETTY_PRINT);
160174
if ($jsonParams === false) {
161175
$jsonParams = print_r($data, true);
162176
}

src/App/Bizon365/Bizon365APIException.php

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,18 +4,19 @@
44
* Обработчик исключений в классах пространства имен \App\Bizon365
55
*
66
* @author andrey-tech
7-
* @copyright 2019-2020 andrey-tech
7+
* @copyright 2019-2021 andrey-tech
88
* @see https://github.com/andrey-tech/bizon365-api-php
99
* @license MIT
1010
*
11-
* @version 1.0.1
11+
* @version 1.0.2
1212
*
1313
* v1.0.0 (13.10.2019) Начальный релиз
1414
* v1.0.1 (02.08.2020) Добавлен use Exception
15+
* v1.0.2 (07.02.2021) Изменена строка в сообщении об исключении
1516
*
1617
*/
1718

18-
declare(strict_types = 1);
19+
declare(strict_types=1);
1920

2021
namespace App\Bizon365;
2122

@@ -31,6 +32,6 @@ class Bizon365APIException extends Exception
3132
*/
3233
public function __construct(string $message = '', $code = 0, Exception $previous = null)
3334
{
34-
parent::__construct("Bizon365 API: " . $message, $code, $previous);
35+
parent::__construct("Bizon365API: " . $message, $code, $previous);
3536
}
3637
}

src/App/Bizon365/WebinarSubscribers.php

Lines changed: 23 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -4,17 +4,18 @@
44
* Трейт WebinarSubscribers. Содержит методы для работы с подписчиками вебинаров
55
*
66
* @author andrey-tech
7-
* @copyright 2020 andrey-tech
7+
* @copyright 2020-2021 andrey-tech
88
* @see https://github.com/andrey-tech/bizon365-api-php
99
* @license MIT
1010
*
11-
* @version 1.0.0
11+
* @version 1.0.1
1212
*
1313
* v1.0.0 (02.08.2020) Начальный релиз
14+
* v1.0.1 (07.02.2021) Рефакторинг
1415
*
1516
*/
1617

17-
declare(strict_types = 1);
18+
declare(strict_types=1);
1819

1920
namespace App\Bizon365;
2021

@@ -31,7 +32,7 @@ trait WebinarSubscribers
3132
public function getWebinarSubpages(
3233
int $skip = 0,
3334
int $limit = 50
34-
) :array {
35+
): array {
3536
$response = $this->request(
3637
'webinars/subpages/getSubpages',
3738
'GET',
@@ -49,7 +50,9 @@ public function getWebinarSubpages(
4950

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

5558
return $response['pages'];
@@ -66,7 +69,7 @@ public function getWebinarSubpages(
6669
public function getAllWebinarSubpages(
6770
int $skip = 0,
6871
int $limit = 50
69-
) :array {
72+
): array {
7073
$webinarSubpages = [];
7174

7275
do {
@@ -84,8 +87,10 @@ public function getAllWebinarSubpages(
8487
* @param string $pageId ID страницы регистрации
8588
* @param int $skip Пропустить указанное число записей
8689
* @param int $limit Ограничить количество записей (не более 1000)
87-
* @param string $webinarTimeMin Нижняя граница для времени сеанса, на который зарегистрированы подписчики в формате ISO8601
88-
* @param string $webinarTimeMax Верхняя граница для времени сеанса, на который зарегистрированы подписчики в формате ISO8601
90+
* @param string $webinarTimeMin Нижняя граница для времени сеанса, на который зарегистрированы подписчики
91+
* в формате ISO8601
92+
* @param string $webinarTimeMax Верхняя граница для времени сеанса, на который зарегистрированы подписчики
93+
* в формате ISO8601
8994
* @param string $registeredTimeMin Нижняя граница для времени регистрации подписчика в формате ISO8601
9095
* @param string $registeredTimeMax Верхняя граница для времени регистрации подписчика в формате ISO8601
9196
* @param string $url_marker Значение маркера из URL, идентификатор партнера
@@ -102,7 +107,7 @@ public function getWebinarSubscribers(
102107
string $registeredTimeMin = null,
103108
string $registeredTimeMax = null,
104109
string $url_marker = null
105-
) :array {
110+
): array {
106111

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

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

134141
return $response['list'];
@@ -139,8 +146,10 @@ public function getWebinarSubscribers(
139146
* @param string $pageId ID страницы регистрации
140147
* @param int $skip Пропустить указанное число записей
141148
* @param int $limit Количество записей в одном запросе (не более 1000)
142-
* @param string $webinarTimeMin Нижняя граница для времени сеанса, на который зарегистрированы подписчики в формате ISO8601
143-
* @param string $webinarTimeMax Верхняя граница для времени сеанса, на который зарегистрированы подписчики в формате ISO8601
149+
* @param string $webinarTimeMin Нижняя граница для времени сеанса, на который зарегистрированы подписчики
150+
* в формате ISO8601
151+
* @param string $webinarTimeMax Верхняя граница для времени сеанса, на который зарегистрированы подписчики
152+
* в формате ISO8601
144153
* @param string $registeredTimeMin Нижняя граница для времени регистрации подписчика в формате ISO8601
145154
* @param string $registeredTimeMax Верхняя граница для времени регистрации подписчика в формате ISO8601
146155
* @param string $url_marker Значение маркера из URL, идентификатор партнера
@@ -157,8 +166,7 @@ public function getAllWebinarSubscribers(
157166
string $registeredTimeMin = null,
158167
string $registeredTimeMax = null,
159168
string $url_marker = null
160-
) :array
161-
{
169+
): array {
162170
$webinarSubscribers = [];
163171

164172
do {

src/App/Bizon365/WebinarViewers.php

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -4,17 +4,18 @@
44
* Трейт WebinarViewers. Содержит методы для работы со зрителями вебинаров
55
*
66
* @author andrey-tech
7-
* @copyright 2020 andrey-tech
7+
* @copyright 2020-2021 andrey-tech
88
* @see https://github.com/andrey-tech/bizon365-api-php
99
* @license MIT
1010
*
11-
* @version 1.0.0
11+
* @version 1.0.1
1212
*
1313
* v1.0.0 (02.08.2020) Начальный релиз
14+
* v1.0.1 (07.02.2021) Рефакторинг
1415
*
1516
*/
1617

17-
declare(strict_types = 1);
18+
declare(strict_types=1);
1819

1920
namespace App\Bizon365;
2021

@@ -35,7 +36,7 @@ public function getWebinarList(
3536
int $limit = 100,
3637
bool $liveWebinars = true,
3738
bool $autoWebinars = true
38-
) :array {
39+
): array {
3940
$response = $this->request(
4041
'webinars/reports/getlist',
4142
'GET',
@@ -101,7 +102,7 @@ public function getAllWebinarList(
101102
* @throws Bizon365APIException
102103
* @see https://blog.bizon365.ru/api/v1/webinars/reports/
103104
*/
104-
public function getWebinarViewers(string $webinarId, int $skip = 0, int $limit = 1000) :array
105+
public function getWebinarViewers(string $webinarId, int $skip = 0, int $limit = 1000): array
105106
{
106107
$response = $this->request(
107108
'webinars/reports/getviewers',
@@ -119,7 +120,7 @@ public function getWebinarViewers(string $webinarId, int $skip = 0, int $limit =
119120

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

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

0 commit comments

Comments
 (0)