vk/sources/Robots/RobotAbstract.php

136 lines
3.8 KiB
PHP
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?php
declare(strict_types=1);
namespace VK\Robots;
use VK\Robots\RobotAbstract;
use VK\Browsers\BrowserAbstract;
use VK\Proxies\ProxyAbstract;
abstract class RobotAbstract
{
/**
* Идентификатор в регистре
*
* @var string
*/
private int $id_registry;
/**
* Используемый браузер
*
* @var BrowserAbstract
*/
protected BrowserAbstract $browser;
/**
* Прокси-сервер
*
* @var ProxyAbstract
*/
protected ProxyAbstract $proxy;
/**
* Обработчик капчи
*
* @var CaptchaAbstract
*/
protected CaptchaAbstract $captcha;
/**
* Установка идентификатора
*
* @return int
*/
public function setID(int $id): int
{
return $this->id_registry = $id;
}
/**
* Получение идентификатора
*
* @return int
*/
public function getID(): int
{
return $this->id;
}
/**
* Получение браузера
*
* @return int
*/
public function getBrowser(): BrowserAbstract
{
// return $this->browser;
return new \VK\Browsers\Curl;
}
/**
* Метод получения токена аккаунта
*
* @return string
*/
public function getToken($captcha_key = null, $captcha_id = null): string
{
if (!empty($_ENV['ACCOUNT_TOKEN'])) {
return $_ENV['ACCOUNT_TOKEN'];
} else if ($this->mobile) {
$this->token_access = $this->genTokenMobile($captcha_key, $this->captcha_id ?? $captcha_id);
} else {
$this->token_access = $this->genToken();
}
return $this->token_access;
}
abstract protected function genToken(): string;
abstract protected function genTokenMobile(string $captcha_key, int $captcha_id): string;
// /**
// * @param null $access_groups
// * @param bool $resend
// * @return mixed
// * @throws VkApiException
// */
// private function getTokenAccess($scope = null, $resend = false)
// {
// $get_url_token = Curl::getToken('https://oauth.vk.com/authorize?client_id=' . $_ENV['APP_ID'] .
// '&scope=' . $_ENV['ACCESS_GROUPS'] . ($resend ? '&revoke=1' : '') .
// '&response_type=token');
// echo 'https://oauth.vk.com/authorize?client_id=' . $_ENV['APP_ID'] .
// '&scope=' . $_ENV['ACCESS_GROUPS'] . ($resend ? '&revoke=1' : '') .
// '&response_type=token', PHP_EOL;
// if ($get_url_token['body'] !== false) {
// if (isset($get_url_token['header']['location'][0]))
// $url_token = $get_url_token['header']['location'][0];
// else {
// preg_match('!location.href = "(.*)"\+addr!s', $get_url_token['body'], $url_token);
// if (!isset($url_token[1])) {
// throw new VkApiException("Не получилось получить токен на этапе получения ссылки подтверждения");
// }
// $url_token = $url_token[1];
// }
// } else {
// echo 'жопа';
// die;
// }
// echo $url_token, PHP_EOL;
// die;
// $access_token_location = Curl::getToken($url_token)['header']['location'][0];
// if (preg_match("!access_token=(.*?)&!s", $access_token_location, $access_token) != 1)
// throw new Exception("Не удалось найти access_token в строке ридеректа, ошибка:" . Curl::getToken($access_token_location, null, false)['body']);
// echo $url_token, PHP_EOL;
// die;
// return $access_token[1];
// }
}