Support retrieving avatar by tid
This commit is contained in:
parent
6c6cecc5bd
commit
6102d27530
@ -117,6 +117,47 @@ class TextureController extends Controller
|
|||||||
} else {
|
} else {
|
||||||
abort(404, trans('general.texture-not-uploaded', ['type' => $type]));
|
abort(404, trans('general.texture-not-uploaded', ['type' => $type]));
|
||||||
}
|
}
|
||||||
|
} // @codeCoverageIgnore
|
||||||
|
|
||||||
|
public function avatarByTid($tid, $size = 128)
|
||||||
|
{
|
||||||
|
if ($t = Texture::find($tid)) {
|
||||||
|
try {
|
||||||
|
if (Storage::disk('textures')->has($t->hash)) {
|
||||||
|
$responses = event(new GetAvatarPreview($t, $size));
|
||||||
|
|
||||||
|
if (isset($responses[0]) && $responses[0] instanceof SymfonyResponse) {
|
||||||
|
return $responses[0]; // @codeCoverageIgnore
|
||||||
|
} else {
|
||||||
|
$png = Minecraft::generateAvatarFromSkin(Storage::disk('textures')->read($t->hash), $size);
|
||||||
|
|
||||||
|
ob_start();
|
||||||
|
imagepng($png);
|
||||||
|
imagedestroy($png);
|
||||||
|
$image = ob_get_contents();
|
||||||
|
ob_end_clean();
|
||||||
|
|
||||||
|
return Response::png($image);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} catch (Exception $e) {
|
||||||
|
report($e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
$png = imagecreatefromstring(base64_decode(static::getDefaultAvatar()));
|
||||||
|
ob_start();
|
||||||
|
imagepng($png);
|
||||||
|
imagedestroy($png);
|
||||||
|
$image = ob_get_contents();
|
||||||
|
ob_end_clean();
|
||||||
|
|
||||||
|
return Response::png($image);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function avatarByTidWithSize($size, $tid)
|
||||||
|
{
|
||||||
|
return $this->avatarByTid($tid, $size);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function avatar($base64_email, UserRepository $users, $size = 128)
|
public function avatar($base64_email, UserRepository $users, $size = 128)
|
||||||
@ -124,31 +165,7 @@ class TextureController extends Controller
|
|||||||
$user = $users->get(base64_decode($base64_email), 'email');
|
$user = $users->get(base64_decode($base64_email), 'email');
|
||||||
|
|
||||||
if ($user) {
|
if ($user) {
|
||||||
$tid = $user->getAvatarId();
|
return $this->avatarByTid($user->getAvatarId());
|
||||||
|
|
||||||
if ($t = Texture::find($tid)) {
|
|
||||||
try {
|
|
||||||
if (Storage::disk('textures')->has($t->hash)) {
|
|
||||||
$responses = event(new GetAvatarPreview($t, $size));
|
|
||||||
|
|
||||||
if (isset($responses[0]) && $responses[0] instanceof SymfonyResponse) {
|
|
||||||
return $responses[0]; // @codeCoverageIgnore
|
|
||||||
} else {
|
|
||||||
$png = Minecraft::generateAvatarFromSkin(Storage::disk('textures')->read($t->hash), $size);
|
|
||||||
|
|
||||||
ob_start();
|
|
||||||
imagepng($png);
|
|
||||||
imagedestroy($png);
|
|
||||||
$image = ob_get_contents();
|
|
||||||
ob_end_clean();
|
|
||||||
|
|
||||||
return Response::png($image);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} catch (Exception $e) {
|
|
||||||
report($e);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
$png = imagecreatefromstring(base64_decode(static::getDefaultAvatar()));
|
$png = imagecreatefromstring(base64_decode(static::getDefaultAvatar()));
|
||||||
|
@ -30,6 +30,8 @@ Route::get('/{api}/textures/{hash}', 'TextureController@textureWithAp
|
|||||||
|
|
||||||
Route::get('/avatar/{base64_email}.png', 'TextureController@avatar');
|
Route::get('/avatar/{base64_email}.png', 'TextureController@avatar');
|
||||||
Route::get('/avatar/{size}/{base64_email}.png', 'TextureController@avatarWithSize');
|
Route::get('/avatar/{size}/{base64_email}.png', 'TextureController@avatarWithSize');
|
||||||
|
Route::get('/avatar/{tid}', 'TextureController@avatarByTid');
|
||||||
|
Route::get('/avatar/{size}/{tid}', 'TextureController@avatarByTidWithSize');
|
||||||
|
|
||||||
Route::get('/raw/{tid}.png', 'TextureController@raw');
|
Route::get('/raw/{tid}.png', 'TextureController@raw');
|
||||||
|
|
||||||
|
@ -161,6 +161,16 @@ class TextureControllerTest extends TestCase
|
|||||||
->assertSee(trans('general.texture-deleted'));
|
->assertSee(trans('general.texture-deleted'));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function testAvatarByTid()
|
||||||
|
{
|
||||||
|
$this->get('/avatar/1')->assertHeader('Content-Type', 'image/png');
|
||||||
|
}
|
||||||
|
|
||||||
|
public function testAvatarByTidWithSize()
|
||||||
|
{
|
||||||
|
$this->get('/avatar/50/1')->assertHeader('Content-Type', 'image/png');
|
||||||
|
}
|
||||||
|
|
||||||
public function testAvatar()
|
public function testAvatar()
|
||||||
{
|
{
|
||||||
$base64_email = base64_encode('a@b.c');
|
$base64_email = base64_encode('a@b.c');
|
||||||
|
Loading…
Reference in New Issue
Block a user