Полное изменение enum!

This commit is contained in:
Arsen Mirzaev Tatyano-Muradovich 2022-11-09 01:12:50 +10:00
parent e08f252d5b
commit e670be5816
2 changed files with 19 additions and 23 deletions

View File

@ -15,7 +15,7 @@ use stdClass,
/** /**
* Режимы отправки сообщений * Режимы отправки сообщений
*/ */
enum send enum message_send
{ {
/** Обычная отправка */ /** Обычная отправка */
case simple; case simple;
@ -27,19 +27,16 @@ enum send
/** /**
* Режимы генерации идентификатора сессии доставки сообщения * Режимы генерации идентификатора сессии доставки сообщения
*/ */
enum generate enum random_id
{ {
/** Генерация: time() */ /** Генерация: time() (нельзя отправить более чем 1 сообщение в секунду) */
case date; case date;
/** Генерация: rand() */ /** Генерация: rand() */
case random; case random;
/** Генерация: random_bytes(10) */ /** Генерация: random_int(0, PHP_INT_MAX) */
case crypto; case crypto;
/** Генерация: sodium_crypto_generichash() */
case hash;
} }
/** /**
@ -58,14 +55,14 @@ enum generate
final class messages extends method final class messages extends method
{ {
/** /**
* @var send $send_mode Режим отправки сообщений * @var message_send $send_mode Режим отправки сообщений
*/ */
protected send $send_mode = send::simple; protected message_send $send_mode = message_send::simple;
/** /**
* @var generate $generate_mode Режим генерации идентификатора сессии доставки сообщения * @var random_id $generate_mode Режим генерации идентификатора сессии доставки сообщения
*/ */
protected generate $generate_mode = generate::date; protected random_id $generate_mode = random_id::crypto;
/** /**
* @var ?int $lat Географическая ширина * @var ?int $lat Географическая ширина
@ -200,7 +197,7 @@ final class messages extends method
* @param bool $disable_mentions Отключить уведомление об упоминании в сообщении? * @param bool $disable_mentions Отключить уведомление об упоминании в сообщении?
* @param ?string $intent Интент * @param ?string $intent Интент
* @param ?int $subscribe_id Число, которое будет использоваться для работы с интентами * @param ?int $subscribe_id Число, которое будет использоваться для работы с интентами
* @param int|string|null $random_id Идентификатор сессии доставки сообщения (защита от повторных отправок) * @param ?int $random_id Идентификатор сессии доставки сообщения (защита от повторных отправок)
* *
* @return int|array Идентификатор успешно отправленного сообщения или ответ сервера (подразумевается ошибка) * @return int|array Идентификатор успешно отправленного сообщения или ответ сервера (подразумевается ошибка)
* *
@ -228,7 +225,7 @@ final class messages extends method
bool $disable_mentions = false, bool $disable_mentions = false,
?string $intent = null, ?string $intent = null,
?int $subscribe_id = null, ?int $subscribe_id = null,
int|string|null $random_id = null, ?int $random_id = null,
): int|array { ): int|array {
// Реинициализация настроек // Реинициализация настроек
$this->robot->api->reinit(); $this->robot->api->reinit();
@ -240,11 +237,10 @@ final class messages extends method
// Инициализация идентификатора сессии доставки сообщения (защита от повторных отправок) // Инициализация идентификатора сессии доставки сообщения (защита от повторных отправок)
$this->robot->api['random_id'] = $random_id ?? match ($this->generate_mode) { $this->robot->api['random_id'] = $random_id ?? match ($this->generate_mode) {
generate::date => time(), random_id::date => time(),
generate::random => rand(), random_id::random => rand(),
generate::crypto => random_bytes(10), random_id::crypto => random_int(0, PHP_INT_MAX),
generate::hash => sodium_crypto_generichash(random_bytes(10)), default => random_int(0, PHP_INT_MAX)
default => time()
}; };
// Инициализация текста в настройках API // Инициализация текста в настройках API
@ -309,7 +305,7 @@ final class messages extends method
throw new Exception('ВКонтакте: ' . $request->error->error_msg, $request->error->error_code); throw new Exception('ВКонтакте: ' . $request->error->error_msg, $request->error->error_code);
} }
if ($this->send_mode === send::check) { if ($this->send_mode === message_send::check) {
// Надёжная доставка сообщения // Надёжная доставка сообщения
if (!empty($request["response"])) { if (!empty($request["response"])) {

View File

@ -4,12 +4,12 @@ declare(strict_types=1);
namespace mirzaev\vk\api\methods; namespace mirzaev\vk\api\methods;
use Exception; // Файлы проекта
use mirzaev\vk\robots\robot, use mirzaev\vk\robots\robot,
mirzaev\vk\robots\group; mirzaev\vk\robots\group;
use mirzaev\accounts\vk as account; // Встроенные библиотеки
use Exception;
/** /**
* Фотографии (изображения) * Фотографии (изображения)
@ -22,7 +22,7 @@ use mirzaev\accounts\vk as account;
* @package mirzaev\vk\api\methods * @package mirzaev\vk\api\methods
* @author Arsen Mirzaev Tatyano-Muradovich <arsen@mirzaev.sexy> * @author Arsen Mirzaev Tatyano-Muradovich <arsen@mirzaev.sexy>
* *
* @todo Добавить обработку ошибок ($request['errors];) * @todo Добавить обработку ошибок ($request['errors])
*/ */
final class photos extends method final class photos extends method
{ {