php namespace Teleguru Client Console Command use File File use Socket

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
<?php
namespace Teleguru\Client\Console\Command;
use File\File;
use Socket\Socket;
use Socket\ServerSocket;
use Teleguru\Client\Client;
use Teleguru\Client\Utils\Log;
use Symfony\Component\Dotenv\Dotenv;
use Teleguru\Client\Auth\Session\Session;
use Symfony\Component\Console\Command\Command;
use Symfony\Component\Console\Input\InputInterface;
use Symfony\Component\Console\Output\OutputInterface;
/**
* Undocumented class
*/
class ServeCommand extends Command
{
protected $rootDir;
public function __construct($rootDir)
{
parent::__construct();
$this->rootDir = $rootDir;
}
public function configure()
{
$this
->setName("serve");
}
public function execute(InputInterface $in, OutputInterface $out)
{
Log::d("Run server socket..");
$server = new ServerSocket(4001);
$dotenv = new Dotenv();
$dotenv->load($this->rootDir."/.env");
$client = new Client([
"config" => [
"api_id" => getenv("API_ID"),
"api_hash" => getenv("API_HASH")
]
]);
$client->setRootDir($this->rootDir);
$client->boot();
$client->setSession(Session::factory( $this->rootDir."/temp/session.dat" ));
// $client->authorize();
$server->run(function(Socket $socket) use($client)
{
try
{
$body = $socket->read(1024000);
if (0 == \strlen($body))
return true;
$data = \json_decode($body, true);
switch(isset($data['method']) && is_string($data['method']) ? $data['method'] : null)
{
case "resolveUsername":
{
$content = $client->resolveUsername($data['username']);
//\var_dump($content);
$socket->write([
\json_encode($content)
]);
}
break;
case "sendCode":
{
$content = $client->__sendMessage(
$data['username'],
"Код подтверждения: " . $data['code'] . ". Никому не давайте код!"
. "\n\nЭтот код используется для аутнификации вашей учетной записи в сервисе teleguru."
. "\n\nЕсли вы не запрашивали код, проигнорируйте сообщение."
);
// \var_dump($content);
}
break;
default:
{
}
}
} catch(\Exception $e) {
}
$client->getSession()->update();
return true;
});
}
}