mirror of
https://github.com/elyby/accounts.git
synced 2024-12-27 07:30:18 +05:30
50 lines
1.5 KiB
PHP
50 lines
1.5 KiB
PHP
|
<?php
|
||
|
namespace common\components\Mojang;
|
||
|
|
||
|
use common\components\Mojang\exceptions\MojangApiException;
|
||
|
use common\components\Mojang\exceptions\NoContentException;
|
||
|
use common\components\Mojang\response\UsernameToUUIDResponse;
|
||
|
use GuzzleHttp\Client as GuzzleClient;
|
||
|
|
||
|
class Api {
|
||
|
|
||
|
/**
|
||
|
* @param string $username
|
||
|
* @param int $atTime
|
||
|
*
|
||
|
* @return UsernameToUUIDResponse
|
||
|
* @throws MojangApiException
|
||
|
* @throws NoContentException
|
||
|
*/
|
||
|
public function usernameToUUID($username, $atTime = null) {
|
||
|
$client = $this->createClient();
|
||
|
$request = $client->createRequest('GET', 'https://api.mojang.com/users/profiles/minecraft/' . $username);
|
||
|
$queryParams = [];
|
||
|
if ($atTime !== null) {
|
||
|
$queryParams['atTime'] = $atTime;
|
||
|
}
|
||
|
|
||
|
$request->setQuery($queryParams);
|
||
|
$response = $client->send($request);
|
||
|
if ($response->getStatusCode() === 204) {
|
||
|
throw new NoContentException('Username not found');
|
||
|
} elseif ($response->getStatusCode()) {
|
||
|
throw new MojangApiException('Unexpected request result');
|
||
|
}
|
||
|
|
||
|
$data = $response->json(['object' => false]);
|
||
|
$responseObj = new UsernameToUUIDResponse();
|
||
|
$responseObj->id = $data['id'];
|
||
|
$responseObj->name = $data['name'];
|
||
|
$responseObj->legacy = isset($data['legacy']);
|
||
|
$responseObj->demo = isset($data['demo']);
|
||
|
|
||
|
return $responseObj;
|
||
|
}
|
||
|
|
||
|
protected function createClient() {
|
||
|
return new GuzzleClient();
|
||
|
}
|
||
|
|
||
|
}
|