Bugfixes for my.telegram.org wrapper
This commit is contained in:
parent
74ab5d2ff5
commit
caae5a8fd9
@ -89,12 +89,12 @@ foreach (['methods', 'constructors'] as $type) {
|
||||
|
||||
$url = getUrl($name, $type);
|
||||
foreach ($final_new_args as $name => $ttype) {
|
||||
if (!isset($final_old_args[$name])) {
|
||||
if (!isset($final_old_args[$name]) && $name !== 'flags') {
|
||||
$res .= "Added $name param to $url\n";
|
||||
}
|
||||
}
|
||||
foreach ($final_old_args as $name => $ttype) {
|
||||
if (!isset($final_new_args[$name])) {
|
||||
if (!isset($final_new_args[$name]) && $name !== 'flags') {
|
||||
$res .= "Removed $name param from $url\n";
|
||||
}
|
||||
}
|
||||
|
@ -55,6 +55,7 @@ use danog\MadelineProto\Stream\Transport\WssStream;
|
||||
use danog\MadelineProto\Stream\Transport\WsStream;
|
||||
use function Amp\call;
|
||||
use function Amp\Socket\Internal\parseUri;
|
||||
use Amp\Artax\Cookie\CookieJar;
|
||||
|
||||
/**
|
||||
* Manages datacenters.
|
||||
@ -71,13 +72,14 @@ class DataCenter
|
||||
private $HTTPClient;
|
||||
private $DoHClient;
|
||||
private $NonProxiedDoHClient;
|
||||
private $CookieJar;
|
||||
|
||||
public function __sleep()
|
||||
{
|
||||
return ['sockets', 'curdc', 'dclist', 'settings'];
|
||||
}
|
||||
|
||||
public function __magic_construct($API, $dclist, $settings)
|
||||
public function __magic_construct($API, $dclist, $settings, CookieJar $jar = null)
|
||||
{
|
||||
$this->API = $API;
|
||||
$this->dclist = $dclist;
|
||||
@ -92,10 +94,11 @@ class DataCenter
|
||||
unset($this->sockets[$key]);
|
||||
}
|
||||
}
|
||||
$this->HTTPClient = new DefaultClient(new ArrayCookieJar(), new HttpSocketPool(new ProxySocketPool([$this, 'rawConnectAsync'])));
|
||||
$this->CookieJar = $jar ?? new ArrayCookieJar;
|
||||
$this->HTTPClient = new DefaultClient($this->CookieJar, new HttpSocketPool(new ProxySocketPool([$this, 'rawConnectAsync'])));
|
||||
|
||||
$DoHHTTPClient = new DefaultClient(
|
||||
new ArrayCookieJar(),
|
||||
$this->CookieJar,
|
||||
new HttpSocketPool(
|
||||
new ProxySocketPool(
|
||||
function (string $uri, CancellationToken $token = null, ClientConnectContext $ctx = null) {
|
||||
@ -679,6 +682,16 @@ class DataCenter
|
||||
{
|
||||
return $this->HTTPClient;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get Artax async HTTP client.
|
||||
*
|
||||
* @return \Amp\Artax\CookieJar
|
||||
*/
|
||||
public function getCookieJar(): CookieJar
|
||||
{
|
||||
return $this->CookieJar;
|
||||
}
|
||||
/**
|
||||
* Get DNS over HTTPS async DNS client.
|
||||
*
|
||||
|
@ -19,6 +19,7 @@
|
||||
namespace danog\MadelineProto;
|
||||
|
||||
use Amp\Artax\Request;
|
||||
use Amp\Artax\Cookie\ArrayCookieJar;
|
||||
|
||||
/**
|
||||
* Wrapper for my.telegram.org.
|
||||
@ -29,16 +30,16 @@ class MyTelegramOrgWrapper
|
||||
|
||||
private $logged = false;
|
||||
private $hash = '';
|
||||
private $token;
|
||||
private $number;
|
||||
private $creation_hash;
|
||||
private $settings = [];
|
||||
private $async = true;
|
||||
private $jar;
|
||||
const MY_TELEGRAM_URL = 'https://my.telegram.org';
|
||||
|
||||
public function __sleep()
|
||||
{
|
||||
return ['logged', 'hash', 'token', 'number', 'creation_hash', 'settings', 'async'];
|
||||
return ['logged', 'hash', 'number', 'creation_hash', 'settings', 'async', 'jar'];
|
||||
}
|
||||
|
||||
public function __construct($settings = [])
|
||||
@ -52,6 +53,9 @@ class MyTelegramOrgWrapper
|
||||
if ($this->settings === null) {
|
||||
$this->settings = [];
|
||||
}
|
||||
if (!$this->jar) {
|
||||
$this->jar = new ArrayCookieJar;
|
||||
}
|
||||
$this->settings = MTProto::getSettings($this->settings);
|
||||
$this->datacenter = new DataCenter(
|
||||
new class($this->settings)
|
||||
@ -62,7 +66,8 @@ class MyTelegramOrgWrapper
|
||||
}
|
||||
},
|
||||
[],
|
||||
$this->settings['connection_settings']
|
||||
$this->settings['connection_settings'],
|
||||
$this->jar
|
||||
);
|
||||
}
|
||||
|
||||
@ -94,7 +99,8 @@ class MyTelegramOrgWrapper
|
||||
$request = $request->withHeader('user-agent', 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.13) Gecko/20080311 Firefox/2.0.0.13');
|
||||
$response = yield $this->datacenter->getHTTPClient()->request($request);
|
||||
$result = yield $response->getBody();
|
||||
|
||||
|
||||
|
||||
switch ($result) {
|
||||
case 'true':
|
||||
//Logger::log(['Login OK'], Logger::VERBOSE);
|
||||
@ -103,8 +109,6 @@ class MyTelegramOrgWrapper
|
||||
throw new Exception($result);
|
||||
}
|
||||
|
||||
$this->token = explode(';', explode('stel_token=', $response->getHeader('Set-Cookie'))[1])[0];
|
||||
|
||||
return $this->logged = true;
|
||||
}
|
||||
|
||||
@ -126,13 +130,16 @@ class MyTelegramOrgWrapper
|
||||
|
||||
$title = explode('</title>', explode('<title>', $result)[1])[0];
|
||||
switch ($title) {
|
||||
case 'App configuration':return true;
|
||||
case 'App configuration':
|
||||
return true;
|
||||
case 'Create new application':
|
||||
$this->creation_hash = explode('"/>', explode('<input type="hidden" name="hash" value="', $result)[1])[0];
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
$this->logged = false;
|
||||
|
||||
throw new Exception($title);
|
||||
}
|
||||
|
||||
@ -169,7 +176,7 @@ class MyTelegramOrgWrapper
|
||||
if (yield $this->has_app_async()) {
|
||||
throw new Exception('The app was already created!');
|
||||
}
|
||||
|
||||
|
||||
$request = new Request(self::MY_TELEGRAM_URL.'/apps/create', 'POST');
|
||||
$request = $request->withHeaders($this->getHeaders('app'));
|
||||
$request = $request->withBody(http_build_query(['hash' => $this->creation_hash, 'app_title' => $settings['app_title'], 'app_shortname' => $settings['app_shortname'], 'app_url' => $settings['app_url'], 'app_platform' => $settings['app_platform'], 'app_desc' => $settings['app_desc']]));
|
||||
@ -177,7 +184,7 @@ class MyTelegramOrgWrapper
|
||||
$result = yield $response->getBody();
|
||||
|
||||
if ($result) {
|
||||
throw new Exception($result);
|
||||
throw new Exception(html_entity_decode($result));
|
||||
}
|
||||
|
||||
$request = new Request(self::MY_TELEGRAM_URL.'/apps');
|
||||
|
Loading…
Reference in New Issue
Block a user