mirror of
https://github.com/elyby/accounts.git
synced 2025-05-31 14:11:46 +05:30
Написал простецкую обёртку над Mojang API (пока только метод запроса uuid по нику).
Зафиксировал минорные версии для библиотек Composer
This commit is contained in:
49
common/components/Mojang/Api.php
Normal file
49
common/components/Mojang/Api.php
Normal file
@@ -0,0 +1,49 @@
|
||||
<?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();
|
||||
}
|
||||
|
||||
}
|
@@ -0,0 +1,8 @@
|
||||
<?php
|
||||
namespace common\components\Mojang\exceptions;
|
||||
|
||||
use Exception;
|
||||
|
||||
class MojangApiException extends Exception {
|
||||
|
||||
}
|
@@ -0,0 +1,6 @@
|
||||
<?php
|
||||
namespace common\components\Mojang\exceptions;
|
||||
|
||||
class NoContentException extends MojangApiException {
|
||||
|
||||
}
|
29
common/components/Mojang/response/UsernameToUUIDResponse.php
Normal file
29
common/components/Mojang/response/UsernameToUUIDResponse.php
Normal file
@@ -0,0 +1,29 @@
|
||||
<?php
|
||||
namespace common\components\Mojang\response;
|
||||
|
||||
/**
|
||||
* http://wiki.vg/Mojang_API#Username_-.3E_UUID_at_time
|
||||
*/
|
||||
class UsernameToUUIDResponse {
|
||||
|
||||
/**
|
||||
* @var string uuid пользователя без разделения на дефисы
|
||||
*/
|
||||
public $id;
|
||||
|
||||
/**
|
||||
* @var string ник пользователя в настоящем времени
|
||||
*/
|
||||
public $name;
|
||||
|
||||
/**
|
||||
* @var bool если имеет значение true, то значит аккаунт не мигрирован в Mojang аккаунт
|
||||
*/
|
||||
public $legacy = false;
|
||||
|
||||
/**
|
||||
* @var bool будет иметь значение true, если аккаунт находится в демо-режиме (не приобретена лицензия)
|
||||
*/
|
||||
public $demo = false;
|
||||
|
||||
}
|
Reference in New Issue
Block a user