mirror of
https://github.com/elyby/mojang-api.git
synced 2024-12-21 23:59:47 +05:30
Remove static create method and clear the constructor. Add CHANGELOG.md
This commit is contained in:
parent
e55c5f3b14
commit
c5f432b659
26
CHANGELOG.md
Normal file
26
CHANGELOG.md
Normal file
@ -0,0 +1,26 @@
|
||||
# Changelog
|
||||
All notable changes to this project will be documented in this file.
|
||||
|
||||
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
||||
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
||||
|
||||
## [Unreleased]
|
||||
|
||||
## [0.2.0] - no date
|
||||
### Added
|
||||
- This CHANGELOG.md file.
|
||||
- `\Ely\Mojang\Api::setClient()` method to override default HTTP client.
|
||||
|
||||
### Changed
|
||||
- The constructor no longer has arguments.
|
||||
|
||||
### Removed
|
||||
- `\Ely\Mojang\Api::create()` static method. Use constructor instead.
|
||||
|
||||
## [0.1.0] - 2019-04-01
|
||||
### Added
|
||||
- Initial implementation
|
||||
|
||||
[Unreleased]: https://github.com/elyby/mojang-api/compare/v0.2.0...HEAD
|
||||
[0.2.0]: https://github.com/elyby/mojang-api/compare/v0.1.0...v0.2.0
|
||||
[0.1.0]: https://github.com/elyby/mojang-api/releases/tag/0.1.0
|
@ -23,11 +23,11 @@ composer require ely/mojang-api
|
||||
|
||||
## Usage
|
||||
|
||||
To get the configured `Api` object right away, just use the static `create()` method:
|
||||
To start using this library just create a new `Api` class instance and call the necessary endpoint:
|
||||
|
||||
```php
|
||||
<?php
|
||||
$api = \Ely\Mojang\Api::create();
|
||||
$api = new \Ely\Mojang\Api();
|
||||
$response = $api->usernameToUUID('erickskrauch');
|
||||
echo $response->getId();
|
||||
```
|
||||
|
37
src/Api.php
37
src/Api.php
@ -20,29 +20,10 @@ class Api {
|
||||
*/
|
||||
private $client;
|
||||
|
||||
public function __construct(ClientInterface $client) {
|
||||
public function setClient(ClientInterface $client): void {
|
||||
$this->client = $client;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param callable $handler HTTP handler function to use with the stack. If no
|
||||
* handler is provided, the best handler for your
|
||||
* system will be utilized.
|
||||
*
|
||||
* @return static
|
||||
*/
|
||||
public static function create(callable $handler = null): self {
|
||||
$stack = HandlerStack::create($handler);
|
||||
// use after method because middleware executes in reverse order
|
||||
$stack->after('http_errors', ResponseConverterMiddleware::create(), 'mojang_response_converter');
|
||||
$stack->push(RetryMiddleware::create(), 'retry');
|
||||
|
||||
return new static(new GuzzleClient([
|
||||
'handler' => $stack,
|
||||
'timeout' => 10,
|
||||
]));
|
||||
}
|
||||
|
||||
/**
|
||||
* @param string $username
|
||||
* @param int $atTime
|
||||
@ -255,9 +236,25 @@ class Api {
|
||||
* @return ClientInterface
|
||||
*/
|
||||
protected function getClient(): ClientInterface {
|
||||
if ($this->client === null) {
|
||||
$this->client = $this->createDefaultClient();
|
||||
}
|
||||
|
||||
return $this->client;
|
||||
}
|
||||
|
||||
private function createDefaultClient(): ClientInterface {
|
||||
$stack = HandlerStack::create();
|
||||
// use after method because middleware executes in reverse order
|
||||
$stack->after('http_errors', ResponseConverterMiddleware::create(), 'mojang_response_converter');
|
||||
$stack->push(RetryMiddleware::create(), 'retry');
|
||||
|
||||
return new GuzzleClient([
|
||||
'handler' => $stack,
|
||||
'timeout' => 10,
|
||||
]);
|
||||
}
|
||||
|
||||
private function decode(string $response): array {
|
||||
return json_decode($response, true);
|
||||
}
|
||||
|
@ -9,6 +9,7 @@ use Ely\Mojang\Middleware\ResponseConverterMiddleware;
|
||||
use Ely\Mojang\Middleware\RetryMiddleware;
|
||||
use Ely\Mojang\Response\Properties\TexturesProperty;
|
||||
use GuzzleHttp\Client;
|
||||
use GuzzleHttp\ClientInterface;
|
||||
use GuzzleHttp\Handler\MockHandler;
|
||||
use GuzzleHttp\HandlerStack;
|
||||
use GuzzleHttp\Middleware;
|
||||
@ -42,11 +43,8 @@ class ApiTest extends TestCase {
|
||||
$handlerStack->after('http_errors', ResponseConverterMiddleware::create(), 'mojang_responses');
|
||||
$handlerStack->push(RetryMiddleware::create(), 'retry');
|
||||
$client = new Client(['handler' => $handlerStack]);
|
||||
$this->api = new Api($client);
|
||||
}
|
||||
|
||||
public function testCreate() {
|
||||
$this->assertInstanceOf(Api::class, Api::create());
|
||||
$this->api = new Api();
|
||||
$this->api->setClient($client);
|
||||
}
|
||||
|
||||
public function testUsernameToUuid() {
|
||||
@ -340,6 +338,15 @@ class ApiTest extends TestCase {
|
||||
$this->api->hasJoinedServer('MockedUsername', 'ad72fe1efe364e6eb78c644a9fba1d30');
|
||||
}
|
||||
|
||||
public function testGetClient() {
|
||||
$child = new class extends Api {
|
||||
public function getDefaultClient() {
|
||||
return $this->getClient();
|
||||
}
|
||||
};
|
||||
$this->assertInstanceOf(ClientInterface::class, $child->getDefaultClient());
|
||||
}
|
||||
|
||||
private function createResponse(int $statusCode, array $response): ResponseInterface {
|
||||
return new Response($statusCode, ['content-type' => 'json'], json_encode($response));
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user