From 6f942addb0dc34a508b5bf75b46f99dd9d8984ce Mon Sep 17 00:00:00 2001 From: Sami Mazouz Date: Sat, 2 Mar 2024 11:34:10 +0100 Subject: [PATCH] chore: merge conflicts --- composer.json | 2 +- .../tags/src/Api/Resource/TagResource.php | 2 +- .../core/src/Api/Resource/UserResource.php | 26 +++++++++++++++++-- .../tests/integration/extenders/ModelTest.php | 10 ++++--- 4 files changed, 32 insertions(+), 8 deletions(-) diff --git a/composer.json b/composer.json index 2c88dd2b5..2b95c0c5c 100644 --- a/composer.json +++ b/composer.json @@ -108,7 +108,7 @@ "php": "^8.1", "ext-json": "*", "components/font-awesome": "^5.15.0", - "composer/composer": "^2.0", + "composer/composer": "^2.7", "dflydev/fig-cookies": "^3.0", "doctrine/dbal": "^3.6.2", "dragonmantank/cron-expression": "^3.3", diff --git a/extensions/tags/src/Api/Resource/TagResource.php b/extensions/tags/src/Api/Resource/TagResource.php index 271620c1b..9da1aa580 100644 --- a/extensions/tags/src/Api/Resource/TagResource.php +++ b/extensions/tags/src/Api/Resource/TagResource.php @@ -93,7 +93,7 @@ class TagResource extends AbstractDatabaseResource Schema\Str::make('color') ->writable() ->nullable() - ->regex('/^#([a-f0-9]{6}|[a-f0-9]{3})$/i'), + ->rule('hex_color'), Schema\Str::make('icon') ->writable() ->nullable(), diff --git a/framework/core/src/Api/Resource/UserResource.php b/framework/core/src/Api/Resource/UserResource.php index f7c1b9d25..1a399edb6 100644 --- a/framework/core/src/Api/Resource/UserResource.php +++ b/framework/core/src/Api/Resource/UserResource.php @@ -18,6 +18,7 @@ use Flarum\User\Event\Saving; use Flarum\User\Exception\NotAuthenticatedException; use Flarum\User\RegistrationToken; use Flarum\User\User; +use GuzzleHttp\Client; use Illuminate\Database\Eloquent\Builder; use Illuminate\Support\Arr; use Illuminate\Support\Str; @@ -393,9 +394,30 @@ class UserResource extends AbstractDatabaseResource ]); } - $image = $this->imageManager->make($url); + $urlContents = $this->retrieveAvatarFromUrl($url); - $this->avatarUploader->upload($user, $image); + if ($urlContents !== null) { + $image = $this->imageManager->read($urlContents); + + $this->avatarUploader->upload($user, $image); + } + } + + private function retrieveAvatarFromUrl(string $url): ?string + { + $client = new Client(); + + try { + $response = $client->get($url); + } catch (\Exception $e) { + return null; + } + + if ($response->getStatusCode() !== 200) { + return null; + } + + return $response->getBody()->getContents(); } private function fulfillToken(User $user, RegistrationToken $token): void diff --git a/framework/core/tests/integration/extenders/ModelTest.php b/framework/core/tests/integration/extenders/ModelTest.php index af90dcfcf..dd6643d94 100644 --- a/framework/core/tests/integration/extenders/ModelTest.php +++ b/framework/core/tests/integration/extenders/ModelTest.php @@ -306,11 +306,13 @@ class ModelTest extends TestCase $this->app(); - $group1 = new Group; - $group2 = new Group; + Group::boot(); - $this->assertEquals(1, $group1->counter); - $this->assertEquals(2, $group2->counter); + $group1 = new Group(); + $group2 = new Group(); + + $this->assertEquals(3, $group1->counter); + $this->assertEquals(4, $group2->counter); } /**