From 864ea8ca6d6db9ec8bf8b024a9c6b2cbdf5b2192 Mon Sep 17 00:00:00 2001 From: Arsen Mirzaev Tatyano-Muradovich Date: Tue, 27 Jul 2021 15:09:33 +1000 Subject: [PATCH] =?UTF-8?q?=D0=95=D1=89=D1=91=20=D0=B8=D1=81=D0=BF=D1=80?= =?UTF-8?q?=D0=B0=D0=B2=D0=BB=D0=B5=D0=BD=D0=B8=D1=8F=20=D0=B8=20=D1=82?= =?UTF-8?q?=D0=B5=D1=81=D1=82=20+=20=D0=BD=D0=B0=D1=88=D0=B5=D0=BB=20?= =?UTF-8?q?=D0=BC=D1=83=D1=81=D0=BE=D1=80=20=D0=9A=D0=BE=D1=81=D1=82=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- mirzaev/vk/system/api/methods/photos.php | 136 +------- mirzaev/vk/system/loggers/logger.php | 2 - mirzaev/vk/system/robots/group.php | 36 -- mirzaev/vk/system/robots/robot.php | 416 +++++++++++------------ mirzaev/vk/system/traits/singleton.php | 9 - 5 files changed, 224 insertions(+), 375 deletions(-) diff --git a/mirzaev/vk/system/api/methods/photos.php b/mirzaev/vk/system/api/methods/photos.php index 7919ed4..1e27c17 100644 --- a/mirzaev/vk/system/api/methods/photos.php +++ b/mirzaev/vk/system/api/methods/photos.php @@ -4,21 +4,17 @@ declare(strict_types=1); namespace mirzaev\vk\api\methods; +use Exception; + use mirzaev\vk\robots\robot, mirzaev\vk\robots\group; use mirzaev\accounts\vk as account; -use Exception; - /** * Фотографии (изображения) * -<<<<<<< HEAD - * public static function put(RobotAbstract $from, int $to, string $message, int $mode = 2) Отправить сообщение -======= * @method public static function put(RobotAbstract $from, int $to, string $message, int $mode = 2) Отправить сообщение ->>>>>>> a45b5c327511a74d1fae5ab0e3a1dcc68e7dc3b4 * * @see https://vk.com/dev/photos.getUploadServer * @see https://vk.com/dev/messages.getById @@ -31,24 +27,6 @@ use Exception; final class photos extends method { /** -<<<<<<< HEAD:hood/vk/system/api/methods/photos.php - * $url - */ - protected $url; - - /** -<<<<<<< HEAD - * Сохранить - * - * $robot Робот - * $album_id Альбом - * $group_id Группа - * $caption Описание - * $latitude Географическая широта (-90, 90) - * $longitude Географическая долгота (-180, 180) -======= -======= ->>>>>>> 579e64b087c763b465464b5ee0d14b16a98d17b2:mirzaev/vk/system/api/methods/photos.php * Создать сообщение * * @param robot $robot Робот @@ -67,7 +45,6 @@ final class photos extends method * @param string|null $caption Описание * @param float|null $latitude Географическая широта (-90, 90) * @param float|null $longitude Географическая долгота (-180, 180) ->>>>>>> a45b5c327511a74d1fae5ab0e3a1dcc68e7dc3b4 * * @see https://vk.com/dev/photos.save * @@ -128,24 +105,25 @@ final class photos extends method } /** -<<<<<<< HEAD:hood/vk/system/api/methods/photos.php * Загрузить * - * @param Type $var -<<<<<<< HEAD -======= + * @param string $images + * * @return void ->>>>>>> a45b5c327511a74d1fae5ab0e3a1dcc68e7dc3b4 + * + * @todo Вынести этот мусор за Костей */ - public static function upload(string ...$images): void - { - if (count($images) > 5) { - throw new Exception('Запрещено отправлять более 5 фотографий'); - } - } + // public static function upload(string ...$images): void + // { + // if (count($images) > 5) { + // throw new Exception('Запрещено отправлять более 5 фотографий'); + // } + // } /** * загрузить + * + * @todo Вынести этот мусор за Костей */ public static function uploadMessage(robot $robot, string $upload_url, string ...$images) { @@ -153,21 +131,13 @@ final class photos extends method } /** -======= ->>>>>>> 579e64b087c763b465464b5ee0d14b16a98d17b2:mirzaev/vk/system/api/methods/photos.php * Получить сервер для загрузки изображений * -<<<<<<< HEAD - * $robot Робот - * $album_id Альбом - * $group_id Группа -======= + * @see https://vk.com/dev/photos.getUploadServer + * * @param robot $robot Робот * @param int|null $album_id Альбом * @param int|group|null $group_id Группа ->>>>>>> a45b5c327511a74d1fae5ab0e3a1dcc68e7dc3b4 - * - * @see https://vk.com/dev/photos.getUploadServer * * @return array|null Ответ сервера */ @@ -205,19 +175,8 @@ final class photos extends method /** * Получить альбомы * -<<<<<<< HEAD - * $robot Робот - * $album_ids = null Идентификаторы альбомов - * $offset = null Смещение для выборки подмножества - * $count = null Количество для возврата - * $need_system = null Активация возврата системных альбомов - * $need_covers = null Активация возврата поля с обложкой альбома - * $photo_sizes = null Активация специального формата размеров фотографий - * * @see https://vk.com/dev/photos.getUploadServer * - * Ответ сервера -======= * @param robot $robot Робот * @param array $album_ids = null Идентификаторы альбомов * @param int $offset = null Смещение для выборки подмножества @@ -226,10 +185,7 @@ final class photos extends method * @param bool $need_covers = null Активация возврата поля с обложкой альбома * @param bool $photo_sizes = null Активация специального формата размеров фотографий * - * @see https://vk.com/dev/photos.getUploadServer - * * @return array Ответ сервера ->>>>>>> a45b5c327511a74d1fae5ab0e3a1dcc68e7dc3b4 */ public static function getAlbums(robot $robot, array $album_ids = null, int $offset = null, int $count = null, bool $need_system = null, bool $need_covers = null, bool $photo_sizes = null): array { @@ -262,41 +218,8 @@ final class photos extends method return (array) $request; } -<<<<<<< HEAD:hood/vk/system/api/methods/photos.php - /** -<<<<<<< HEAD - * загрузить фото и получить его id - * - * $robot робот - * - * $img фото - */ - - public function sex(robot $robot, $img) - { - if (!isset($this->url)) { - - // Получить адрес сервера для загрузки фотографии в личное сообщение - $this->url = json_decode($robot->browser->request('POST', 'photos.getMessagesUploadServer', [ - 'form_params' => [ - 'group_id' => $robot->id, - 'v' => $robot->version, - 'access_token' => $robot->key, - 'peer_id' => 0 - ] - ])->getBody()->getContents())->response->upload_url; - } - - //загрузить - $response = json_decode($robot->browser->request('POST', $this->url, [ -======= - * Загрузить фото и получить его id - * - * $robot робот -======= /** * Получить адрес сервера сообщений ->>>>>>> 579e64b087c763b465464b5ee0d14b16a98d17b2:mirzaev/vk/system/api/methods/photos.php * * @return object */ @@ -330,12 +253,7 @@ final class photos extends method public function upload($photo, string $url): object { // Загрузить фото -<<<<<<< HEAD:hood/vk/system/api/methods/photos.php - $response = json_decode($this->robot->browser->request('POST', $url, [ ->>>>>>> a45b5c327511a74d1fae5ab0e3a1dcc68e7dc3b4 -======= $request = json_decode($this->robot->browser->request('POST', $url, [ ->>>>>>> 579e64b087c763b465464b5ee0d14b16a98d17b2:mirzaev/vk/system/api/methods/photos.php 'multipart' => [ [ 'Content-type' => 'multipart/form-data', @@ -345,25 +263,6 @@ final class photos extends method ] ])->getBody()->getContents()); -<<<<<<< HEAD:hood/vk/system/api/methods/photos.php -<<<<<<< HEAD - //сохранить - $response = json_decode($robot->browser->request('POST', 'photos.saveMessagesPhoto', [ - 'form_params' => [ - 'group_id' => $robot->id, - 'v' => $robot->version, - 'access_token' => $robot->key, - 'server' => $response->server, - 'photo' => $response->photo, - 'hash' => $response->hash - ] - ])->getBody()->getContents()); - - return 'photo' . $response->response[0]->owner_id . '_' . $response->response[0]->id; - } -} -======= -======= // Если в ответе ошибка if (isset($request->error)) { throw new Exception('Вконтакте: ' . $request->error->error_msg, $request->error->error_code); @@ -389,7 +288,6 @@ final class photos extends method //Загрузить фото $response = $this->upload($pathPhoto, $url); ->>>>>>> 579e64b087c763b465464b5ee0d14b16a98d17b2:mirzaev/vk/system/api/methods/photos.php // Реинициализация $this->robot->api->reinit(); @@ -419,7 +317,5 @@ final class photos extends method $request; // Ссылка на фото return 'photo' . $request->response[0]->owner_id . '_' . $request->response[0]->id; - } } ->>>>>>> a45b5c327511a74d1fae5ab0e3a1dcc68e7dc3b4 diff --git a/mirzaev/vk/system/loggers/logger.php b/mirzaev/vk/system/loggers/logger.php index daef2c0..7b0cb0b 100644 --- a/mirzaev/vk/system/loggers/logger.php +++ b/mirzaev/vk/system/loggers/logger.php @@ -14,8 +14,6 @@ abstract class logger { /** * Экземпляр класса журналиста - * - * @var logger */ public static $logger; diff --git a/mirzaev/vk/system/robots/group.php b/mirzaev/vk/system/robots/group.php index c09946c..9f644ad 100644 --- a/mirzaev/vk/system/robots/group.php +++ b/mirzaev/vk/system/robots/group.php @@ -13,16 +13,6 @@ use Exception; /** * Робот-группа * -<<<<<<< HEAD - * $longpoll LongPoll-сессия - * - * public function __set($name, $value) Запись свойства - * public function __get($name) Чтение свойства - * public function __isset($name) Проверка на инициализированность свойства - * - * hood\vk\robots - * Arsen Mirzaev Tatyano-Muradovich -======= * @property longpoll $longpoll LongPoll-сессия * * @method public function __set($name, $value) Запись свойства @@ -31,35 +21,23 @@ use Exception; * * @package mirzaev\vk\robots * @author Arsen Mirzaev Tatyano-Muradovich ->>>>>>> a45b5c327511a74d1fae5ab0e3a1dcc68e7dc3b4 */ final class group extends robot { /** -<<<<<<< HEAD - * $longpoll LongPoll-сессия -======= * @var longpoll $longpoll LongPoll-сессия ->>>>>>> a45b5c327511a74d1fae5ab0e3a1dcc68e7dc3b4 */ protected longpoll $longpoll; /** * Запись свойства * -<<<<<<< HEAD - * $name Название - * $value Значение - * - * @see hood\vk\robots\robot Наследуемый метод -======= * @param string $name Название * @param mixed $value Значение * * @see mirzaev\vk\robots\robot Наследуемый метод * * @return void ->>>>>>> a45b5c327511a74d1fae5ab0e3a1dcc68e7dc3b4 */ public function __set(string $name, mixed $value): void { @@ -78,17 +56,11 @@ final class group extends robot /** * Чтение свойства * -<<<<<<< HEAD - * $name Название - * - * @see hood\vk\robots\robot Наследуемый метод -======= * @param string $name Название * * @see mirzaev\vk\robots\robot Наследуемый метод * * @return mixed ->>>>>>> a45b5c327511a74d1fae5ab0e3a1dcc68e7dc3b4 */ public function __get(string $name): mixed { @@ -111,19 +83,11 @@ final class group extends robot /** * Проверка на инициализированность свойства * -<<<<<<< HEAD - * $name Название - * - * @return mixed - */ - public function __isset(string $name) -======= * @param string $name Название * * @return mixed */ public function __isset(string $name): bool ->>>>>>> a45b5c327511a74d1fae5ab0e3a1dcc68e7dc3b4 { try { return parent::__isset($name); diff --git a/mirzaev/vk/system/robots/robot.php b/mirzaev/vk/system/robots/robot.php index a921185..f24c637 100644 --- a/mirzaev/vk/system/robots/robot.php +++ b/mirzaev/vk/system/robots/robot.php @@ -6,11 +6,11 @@ namespace mirzaev\vk\robots; use Exception; -use mirzaev\vk\core; -use mirzaev\vk\proxies\proxy; -use mirzaev\vk\captcha\captcha; -use mirzaev\vk\api\settings as api; -use mirzaev\vk\api\methods\method; +use mirzaev\vk\core, + mirzaev\vk\proxies\proxy, + mirzaev\vk\captcha\captcha, + mirzaev\vk\api\settings as api, + mirzaev\vk\api\methods\method; use mirzaev\accounts\vk as account; @@ -45,232 +45,232 @@ use GuzzleHttp\Client as browser; */ abstract class robot { - /** - * Сессия - */ - protected int $session; + /** + * Сессия + */ + protected int $session; - /** - * Аккаунт - */ - private account $account; + /** + * Аккаунт + */ + private account $account; - /** - * Прокси - */ - protected proxy $proxy; + /** + * Прокси + */ + protected proxy $proxy; - /** - * Обработчик капчи - */ - protected captcha $captcha; + /** + * Обработчик капчи + */ + protected captcha $captcha; - /** - * $messages_mode Режим отправки сообщений - */ - protected int $messages_mode = 1; + /** + * $messages_mode Режим отправки сообщений + */ + protected int $messages_mode = 1; - /** - * Конструктор - * - * @param int|null $id Идентификатор - * @param string|null $key Ключ - */ - public function __construct( - protected int|null $id = null, - protected string|null $key = null - ) { - // Инициализация ядра - $core = core::init(); + /** + * Конструктор + * + * @param int|null $id Идентификатор + * @param string|null $key Ключ + */ + public function __construct( + protected int|null $id = null, + protected string|null $key = null + ) { + // Инициализация ядра + $core = core::init(); - // Идентификация робота - $this->id = $id ?? $core->robots + 1; + // Идентификация робота + $this->id = $id ?? $core->robots + 1; - // Регистрация робота в ядре - $core->write($this->id, $this); + // Регистрация робота в ядре + $core->write($this->id, $this); - // Идентификация сессии робота - $this->session = count($core->read($this->id)); - } + // Идентификация сессии робота + $this->session = count($core->read($this->id)); + } - /** - * Инициализация ключа - * - * @param string $key Ключ - * - * @return self - */ - public function key(string $key): self - { - $this->__set('key', $key); + /** + * Инициализация ключа + * + * @param string $key Ключ + * + * @return self + */ + public function key(string $key): self + { + $this->__set('key', $key); - return $this; - } + return $this; + } - /** - * Инициализация аккаунта - * - * @param account $account Аккаунт - * - * @return self - */ - public function account(account $account): self - { - $this->__set('account', $account); + /** + * Инициализация аккаунта + * + * @param account $account Аккаунт + * + * @return self + */ + public function account(account $account): self + { + $this->__set('account', $account); - return $this; - } + return $this; + } - /** - * Инициализация прокси - * - * @param proxy $proxy Прокси - * - * @return self - */ - public function proxy(proxy $proxy): self - { - $this->__set('proxy', $proxy); + /** + * Инициализация прокси + * + * @param proxy $proxy Прокси + * + * @return self + */ + public function proxy(proxy $proxy): self + { + $this->__set('proxy', $proxy); - return $this; - } + return $this; + } - /** - * Инициализация обработчика капчи - * - * @param captcha $captcha Обработчик капчи - * - * @return self - */ - public function captcha(captcha $captcha): self - { - $this->__set('captcha', $captcha); + /** + * Инициализация обработчика капчи + * + * @param captcha $captcha Обработчик капчи + * + * @return self + */ + public function captcha(captcha $captcha): self + { + $this->__set('captcha', $captcha); - return $this; - } + return $this; + } - /** - * Записать свойство - * - * @param string $name Название - * @param mixed $value Значение - * - * @return void - */ - public function __set(string $name, mixed $value): void - { - match ($name) { - 'id' => isset($this->id) ? throw new Exception('Запрещено перезаписывать идентификатор', 500) : $this->id = (int) $value, - 'session' => isset($this->session) ? throw new Exception('Запрещено перезаписывать сессию', 500) : $this->session = (int) $value, - 'key' => isset($this->key) ? throw new Exception('Запрещено перезаписывать ключ', 500) : $this->key = (string) $value, - 'api' => isset($this->api) ? throw new Exception('Запрещено перезаписывать API', 500) : $this->api = $value, - 'account' => isset($this->account) ? throw new Exception('Запрещено перезаписывать аккаунт', 500) : $this->account = $value, - 'browser' => isset($this->browser) ? throw new Exception('Запрещено перезаписывать браузер', 500) : $this->browser = $value, - 'proxy' => $this->proxy = $value, - 'captcha' => $this->captcha = $value, - 'messages_new' => $this->messages_new = (int) $value, - default => throw new Exception("Свойство $name не найдено", 404) - }; - } + /** + * Записать свойство + * + * @param string $name Название + * @param mixed $value Значение + * + * @return void + */ + public function __set(string $name, mixed $value): void + { + match ($name) { + 'id' => isset($this->id) ? throw new Exception('Запрещено перезаписывать идентификатор', 500) : $this->id = (int) $value, + 'session' => isset($this->session) ? throw new Exception('Запрещено перезаписывать сессию', 500) : $this->session = (int) $value, + 'key' => isset($this->key) ? throw new Exception('Запрещено перезаписывать ключ', 500) : $this->key = (string) $value, + 'api' => isset($this->api) ? throw new Exception('Запрещено перезаписывать API', 500) : $this->api = $value, + 'account' => isset($this->account) ? throw new Exception('Запрещено перезаписывать аккаунт', 500) : $this->account = $value, + 'browser' => isset($this->browser) ? throw new Exception('Запрещено перезаписывать браузер', 500) : $this->browser = $value, + 'proxy' => $this->proxy = $value, + 'captcha' => $this->captcha = $value, + 'messages_new' => $this->messages_new = (int) $value, + default => throw new Exception("Свойство $name не найдено", 404) + }; + } - /** - * Прочитать свойство - * - * @param string $name Название - * - * @return mixed - */ - public function __get(string $name): mixed - { - return match ($name) { - 'id' => $this->id ?? throw new Exception('Идентификатор не инициализирован', 500), - 'session' => $this->session ?? throw new Exception('Сессия не инициализирована', 500), - 'key' => $this->key ?? throw new Exception('Ключ не инициализирован', 500), - 'api' => $this->api ?? $this->api = new api($this), - 'account' => $this->account ?? throw new Exception('Аккаунт не инициализирован', 500), - 'browser' => $this->browser ?? $this->browser = new browser([ - 'base_uri' => 'https://api.vk.com/method/', - 'cookies' => true - ]), - 'proxy' => $this->proxy, - 'captcha' => $this->captcha, - 'messages_new' => $this->messages_new, - default => throw new Exception("Свойство $name не найдено", 404) - }; - } + /** + * Прочитать свойство + * + * @param string $name Название + * + * @return mixed + */ + public function __get(string $name): mixed + { + return match ($name) { + 'id' => $this->id ?? throw new Exception('Идентификатор не инициализирован', 500), + 'session' => $this->session ?? throw new Exception('Сессия не инициализирована', 500), + 'key' => $this->key ?? throw new Exception('Ключ не инициализирован', 500), + 'api' => $this->api ?? $this->api = new api($this), + 'account' => $this->account ?? throw new Exception('Аккаунт не инициализирован', 500), + 'browser' => $this->browser ?? $this->browser = new browser([ + 'base_uri' => 'https://api.vk.com/method/', + 'cookies' => true + ]), + 'proxy' => $this->proxy, + 'captcha' => $this->captcha, + 'messages_new' => $this->messages_new, + default => throw new Exception("Свойство $name не найдено", 404) + }; + } - /** - * Проверить свойство на инициализированность - * - * @param string $name Название - * - * @return mixed - */ - public function __isset(string $name): bool - { - return match ($name) { - 'id' => isset($this->id), - 'session' => isset($this->session), - 'key' => isset($this->key), - 'account' => isset($this->account), - 'api' => isset($this->api), - 'browser' => isset($this->browser), - 'proxy' => isset($this->proxy), - 'captcha' => isset($this->captcha), - 'messages_new' => isset($this->messages_new), - default => throw new Exception("Свойство $name не найдено", 404) - }; - } + /** + * Проверить свойство на инициализированность + * + * @param string $name Название + * + * @return mixed + */ + public function __isset(string $name): bool + { + return match ($name) { + 'id' => isset($this->id), + 'session' => isset($this->session), + 'key' => isset($this->key), + 'account' => isset($this->account), + 'api' => isset($this->api), + 'browser' => isset($this->browser), + 'proxy' => isset($this->proxy), + 'captcha' => isset($this->captcha), + 'messages_new' => isset($this->messages_new), + default => throw new Exception("Свойство $name не найдено", 404) + }; + } - /** - * Вызвать метод - * - * Ищет класс описывающий метод API ВКонтакте, - * создаёт и возвращает его объект - * - * @param string $method Метод - * @param array $params Параметры - * - * @return method - */ - public function __call(string $method, array $params): method - { - if (class_exists($class = '\\mirzaev\\vk\\api\\methods\\' . $method . 's')) { - // Если найден класс реализующий запрошенный метод - return new $class($this, ...$params); - } + /** + * Вызвать метод + * + * Ищет класс описывающий метод API ВКонтакте, + * создаёт и возвращает его объект + * + * @param string $method Метод + * @param array $params Параметры + * + * @return method + */ + public function __call(string $method, array $params): method + { + if (class_exists($class = '\\mirzaev\\vk\\api\\methods\\' . $method . 's')) { + // Если найден класс реализующий запрошенный метод + return new $class($this, ...$params); + } - throw new Exception("Метод $method не найден", 404); - } + throw new Exception("Метод $method не найден", 404); + } - /** - * Вызвать статический метод - * - * Ищет класс описывающий метод API ВКонтакте, - * создаёт и возвращает его объект - * - * @param string $method Метод - * @param array $params Параметры - * - * @return method - */ - public static function __callStatic(string $method, array $params): method - { - if (class_exists($class = '\\mirzaev\\vk\\api\\methods\\' . $method . 's')) { - return $class(self, ...$params); - } + /** + * Вызвать статический метод + * + * Ищет класс описывающий метод API ВКонтакте, + * создаёт и возвращает его объект + * + * @param string $method Метод + * @param array $params Параметры + * + * @return method + */ + public static function __callStatic(string $method, array $params): method + { + if (class_exists($class = '\\mirzaev\\vk\\api\\methods\\' . $method . 's')) { + return $class(self, ...$params); + } - throw new Exception("Метод $method не найден", 404); - } + throw new Exception("Метод $method не найден", 404); + } - /** - * Конвертировать в строку - * - * @return string - */ - public function __toString(): string - { - return (string) $this->id; - } + /** + * Конвертировать в строку + * + * @return string + */ + public function __toString(): string + { + return (string) $this->id; + } } diff --git a/mirzaev/vk/system/traits/singleton.php b/mirzaev/vk/system/traits/singleton.php index d5b234d..4f954b5 100644 --- a/mirzaev/vk/system/traits/singleton.php +++ b/mirzaev/vk/system/traits/singleton.php @@ -27,15 +27,6 @@ trait singleton /** * Инициализация -<<<<<<< HEAD:hood/vk/system/traits/singleton.php -<<<<<<< HEAD -======= - * -======= - * ->>>>>>> 579e64b087c763b465464b5ee0d14b16a98d17b2:mirzaev/vk/system/traits/singleton.php - * @return self ->>>>>>> a45b5c327511a74d1fae5ab0e3a1dcc68e7dc3b4 */ public static function init(): self {