Добавлен Guzzle, переписаны под него запросы.

This commit is contained in:
Kostya Kalimagin 2021-01-03 16:59:35 +08:00
parent b6d59646cc
commit bc6d81ea70
5 changed files with 52 additions and 46 deletions

View File

@ -27,7 +27,8 @@
"psr/log": "1.*",
"monolog/monolog": ">=1.6",
"jasny/error-handler": "^0.2.0",
"hood/accounts": "^0.0.2"
"hood/accounts": "^0.0.2",
"guzzlehttp/guzzle": "^7.2"
},
"require-dev": {
"phpdocumentor/phpdocumentor": ">=2.9",

2
composer.lock generated
View File

@ -4,7 +4,7 @@
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
"This file is @generated automatically"
],
"content-hash": "890608b64debcef7c0a1d909dc4bd81e",
"content-hash": "6bfb42640d4d673c945e4d28222eb67a",
"packages": [
{
"name": "guzzlehttp/guzzle",

View File

@ -85,11 +85,11 @@ final class longpoll
$this->robot = $robot;
// Остановка процессов-дубликатов
if (!file_exists(core::init()->path['temp'])) {
if (!file_exists(core::init()->path_temp)) {
// Если не существует каталога temp, то создать
mkdir(core::init()->path['temp'], 0775, true);
mkdir(core::init()->path_temp, 0775, true);
}
if (file_exists($lock = core::init()->path['temp'] . '/' . $this->robot->id . '_' . (int) $this->robot->session . '.longpoll')) {
if (file_exists($lock = core::init()->path_temp . '/' . $this->robot->id . '_' . (int) $this->robot->session . '.longpoll')) {
// Если существует файл-блокировщик, то удалить его
unlink($lock);
}
@ -186,7 +186,7 @@ final class longpoll
}
}
return $this->robot->browser()->post('https://api.vk.com/method/groups.setLongPollSettings', $settings);
return $this->robot->browser->request('POST', 'groups.setLongPollSettings', $settings);
}
/**
@ -202,24 +202,28 @@ final class longpoll
// Если не инициализирован LongPoll-сервер
// Запрос на получение доступа и данных LongPoll-сервера
$response = $this->robot->browser()->post('https://api.vk.com/method/groups.getLongPollServer', [
'group_id' => $this->robot->id,
'access_token' => $this->robot->key,
'v' => $this->robot->version
])['response'];
echo 'запрос на получение данных лонгполл';
$response = json_decode($this->robot->browser->request('POST', 'groups.getLongPollServer', [
'form_params' => [
'group_id' => $this->robot->id,
'v' => $this->robot->version,
'access_token' => $this->robot->key
],
])->getBody()->getContents())->response;
// Ключ доступа
$this->key = $response['key'];
$this->key = $response->key;
// Сервер хранящий события
$this->server = $response['server'];
$this->server = $response->server;
// Идентификатор последнего события
$this->ts = $response['ts'];
$this->ts = $response->ts;
}
// Запрос на получение событий
return $this->robot->browser()->post($this->server . '?act=a_check&key=' . $this->key . '&ts=' . $this->ts . '&wait=' . $wait);
return json_decode($this->robot->browser->post($this->server . '?act=a_check&key=' . $this->key . '&ts=' . $this->ts . '&wait=' . $wait)->getBody()->getContents(), true);
}
/**
@ -235,7 +239,7 @@ final class longpoll
public function handle(callable $function, int $wait = 25): array
{
// Файл-блокировщик и PID процесса
$lock = core::init()->path['temp'] . '/' . $this->robot->id . '_' . (int) $this->robot->session . '.longpoll';
$lock = core::init()->path_temp . '/' . $this->robot->id . '_' . (int) $this->robot->session . '.longpoll';
$pid = getmypid();
// Создание или пересоздание файла-блокировщика
@ -256,16 +260,16 @@ final class longpoll
break;
}
if (!empty($request['response']['updates'])) {
if (!empty($request['updates'])) {
// Если получены необработанные события
foreach ($request['response']['updates'] as $update) {
foreach ($request['updates'] as $update) {
// Перебор полученных событий
$function($update);
}
// Обновление идентификатора последнего события
$this->ts = $request['response']['ts'];
$this->ts = $request['ts'];
}
} while (true);

View File

@ -153,7 +153,7 @@ final class messages extends method
}
// Запрос
$request = $this->robot->browser->request('POST', 'messages.send', $settings);
$request = $this->robot->browser->request('POST', 'messages.send', ['form_params' => $settings]);
// Очистка
unset($settings);

View File

@ -84,6 +84,7 @@ abstract class robot
*/
protected int $messages_mode = 1;
/**
* Конструктор
*
@ -284,7 +285,7 @@ abstract class robot
return $this->browser ?? $this->browser = new browser([
'base_uri' => 'https://api.vk.com/method/',
'cookies' => true
]);;
]);
} else if ($name === 'proxy') {
return $this->proxy;
} else if ($name === 'captcha') {