Ещё исправления и тест + нашел мусор Кости

This commit is contained in:
Arsen Mirzaev Tatyano-Muradovich 2021-07-27 15:09:33 +10:00
parent 19f5275fe9
commit 864ea8ca6d
5 changed files with 224 additions and 375 deletions

View File

@ -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

View File

@ -14,8 +14,6 @@ abstract class logger
{
/**
* Экземпляр класса журналиста
*
* @var logger
*/
public static $logger;

View File

@ -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 <red@hood.su>
=======
* @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 <red@hood.su>
>>>>>>> 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);

View File

@ -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;
}
}

View File

@ -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
{