mirror of
https://github.com/YGGverse/nex-php.git
synced 2025-03-13 06:01:25 +00:00
update client api
This commit is contained in:
parent
687af4849e
commit
f8e0d0e035
34
README.md
34
README.md
@ -12,34 +12,32 @@ composer require yggverse/nex
|
||||
|
||||
PHP interface for Nex protocol queries
|
||||
|
||||
### Request
|
||||
|
||||
``` php
|
||||
$request = new \Yggverse\Nex\Client\Request(
|
||||
'nex://nightfall.city/nex/'
|
||||
);
|
||||
$client = new \Yggverse\Nex\Client;
|
||||
```
|
||||
|
||||
#### Request::getResponse
|
||||
#### Client::request
|
||||
|
||||
Execute requested URL and return raw response
|
||||
Request data from URL
|
||||
|
||||
``` php
|
||||
var_dump(
|
||||
$request->getResponse()
|
||||
$client->request(
|
||||
'nex://nightfall.city/nex/'
|
||||
)
|
||||
);
|
||||
```
|
||||
|
||||
#### Request::setHost
|
||||
#### Request::getHost
|
||||
#### Request::setPort
|
||||
#### Request::getPort
|
||||
#### Request::setPath
|
||||
#### Request::getPath
|
||||
#### Request::setQuery
|
||||
#### Request::getQuery
|
||||
#### Request::getOptions
|
||||
#### Request::setOptions
|
||||
#### Client::setHost
|
||||
#### Client::getHost
|
||||
#### Client::setPort
|
||||
#### Client::getPort
|
||||
#### Client::setPath
|
||||
#### Client::getPath
|
||||
#### Client::setQuery
|
||||
#### Client::getQuery
|
||||
#### Client::getOptions
|
||||
#### Client::setOptions
|
||||
|
||||
## Server
|
||||
|
||||
|
@ -2,9 +2,9 @@
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace Yggverse\Nex\Client;
|
||||
namespace Yggverse\Nex;
|
||||
|
||||
class Request
|
||||
class Client
|
||||
{
|
||||
private string $_host;
|
||||
private int $_port;
|
||||
@ -13,59 +13,13 @@ class Request
|
||||
|
||||
private array $_options = [];
|
||||
|
||||
public function __construct(string $url)
|
||||
{
|
||||
if ($host = parse_url($url, PHP_URL_HOST))
|
||||
public function __construct(
|
||||
?string $request = null
|
||||
) {
|
||||
if ($request)
|
||||
{
|
||||
$this->setHost(
|
||||
$host
|
||||
);
|
||||
}
|
||||
|
||||
else
|
||||
{
|
||||
throw new Exception(); // @TODO
|
||||
}
|
||||
|
||||
if ($port = parse_url($url, PHP_URL_PORT))
|
||||
{
|
||||
$this->setPort(
|
||||
$port
|
||||
);
|
||||
}
|
||||
|
||||
else
|
||||
{
|
||||
$this->setPort(
|
||||
1900
|
||||
);
|
||||
}
|
||||
|
||||
if ($path = parse_url($url, PHP_URL_PATH))
|
||||
{
|
||||
$this->setPath(
|
||||
$path
|
||||
);
|
||||
}
|
||||
|
||||
else
|
||||
{
|
||||
$this->setPath(
|
||||
''
|
||||
);
|
||||
}
|
||||
|
||||
if ($query = parse_url($url, PHP_URL_QUERY))
|
||||
{
|
||||
$this->setQuery(
|
||||
$query
|
||||
);
|
||||
}
|
||||
|
||||
else
|
||||
{
|
||||
$this->setQuery(
|
||||
''
|
||||
$this->_init(
|
||||
$request
|
||||
);
|
||||
}
|
||||
}
|
||||
@ -120,7 +74,8 @@ class Request
|
||||
return $this->_query;
|
||||
}
|
||||
|
||||
public function getResponse(
|
||||
public function request(
|
||||
string $address, // URL|URI
|
||||
int $timeout = 30, // socket timeout, useful for offline resources
|
||||
?int $limit = null, // content length, null for unlimited
|
||||
?int &$length = 0, // initial response length, do not change without special needs
|
||||
@ -129,6 +84,10 @@ class Request
|
||||
string &$response = '' // response init, also returning by this method
|
||||
): ?string
|
||||
{
|
||||
$this->_init(
|
||||
$address
|
||||
);
|
||||
|
||||
$connection = stream_socket_client(
|
||||
sprintf(
|
||||
'tcp://%s:%d',
|
||||
@ -178,4 +137,89 @@ class Request
|
||||
|
||||
return $response;
|
||||
}
|
||||
|
||||
|
||||
private function _url(
|
||||
?string $value
|
||||
): bool
|
||||
{
|
||||
if (!$value)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
if ('nex' != parse_url($value, PHP_URL_SCHEME))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
if ($host = parse_url($value, PHP_URL_HOST))
|
||||
{
|
||||
$this->setHost(
|
||||
$host
|
||||
);
|
||||
}
|
||||
|
||||
else
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
if ($port = parse_url($value, PHP_URL_PORT))
|
||||
{
|
||||
$this->setPort(
|
||||
$port
|
||||
);
|
||||
}
|
||||
|
||||
else
|
||||
{
|
||||
$this->setPort(
|
||||
1900
|
||||
);
|
||||
}
|
||||
|
||||
if ($path = parse_url($value, PHP_URL_PATH))
|
||||
{
|
||||
$this->setPath(
|
||||
$path
|
||||
);
|
||||
}
|
||||
|
||||
else
|
||||
{
|
||||
$this->setPath(
|
||||
''
|
||||
);
|
||||
}
|
||||
|
||||
if ($query = parse_url($value, PHP_URL_QUERY))
|
||||
{
|
||||
$this->setQuery(
|
||||
$query
|
||||
);
|
||||
}
|
||||
|
||||
else
|
||||
{
|
||||
$this->setQuery(
|
||||
''
|
||||
);
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
private function _init(
|
||||
string $request
|
||||
): void
|
||||
{
|
||||
if (!$this->_url($request))
|
||||
{
|
||||
if (!$this->_host || !$this->_port)
|
||||
{
|
||||
throw new \Exception();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user