From ff5a284c789f3affc8cec8a538317b9e52403247 Mon Sep 17 00:00:00 2001 From: Trevor Morris Date: Sun, 12 Feb 2023 15:06:23 +0000 Subject: [PATCH] feat: bind resource to the container and inject in controller --- composer.json | 2 +- .../Wellknown/WebfingerController.php | 7 +++-- src/LaravelWebfingerServiceProvider.php | 27 ++++++++++++++++--- 3 files changed, 27 insertions(+), 9 deletions(-) diff --git a/composer.json b/composer.json index 4252537..6500e2e 100644 --- a/composer.json +++ b/composer.json @@ -1,7 +1,7 @@ { "name": "surface/laravel-webfinger", "description": "A Laravel package to create an ActivityPub webfinger", - "version": "1.0.0", + "version": "1.1.0", "keywords": [ "trovster", "laravel", diff --git a/src/Http/Controllers/Wellknown/WebfingerController.php b/src/Http/Controllers/Wellknown/WebfingerController.php index 627293d..34eda2e 100644 --- a/src/Http/Controllers/Wellknown/WebfingerController.php +++ b/src/Http/Controllers/Wellknown/WebfingerController.php @@ -7,17 +7,16 @@ use Illuminate\Http\JsonResponse; use Illuminate\Http\Request; use Illuminate\Routing\Controller; -use Surface\LaravelWebfinger\Http\Resources\Webfinger; -use Surface\LaravelWebfinger\Service\Webfinger as Service; +use Surface\LaravelWebfinger\Http\Resources\Webfinger as Resource; final class WebfingerController extends Controller { - public function __construct(protected Service $service) + public function __construct(protected Resource $resource) { } public function __invoke(Request $request): JsonResponse { - return Webfinger::make(...$this->service->toArray())->toResponse($request); + return $this->resource->toResponse($request); } } diff --git a/src/LaravelWebfingerServiceProvider.php b/src/LaravelWebfingerServiceProvider.php index 156a5b0..21d54f5 100644 --- a/src/LaravelWebfingerServiceProvider.php +++ b/src/LaravelWebfingerServiceProvider.php @@ -4,9 +4,10 @@ namespace Surface\LaravelWebfinger; -use Illuminate\Support\Facades\Config; +use Illuminate\Foundation\Application; use Illuminate\Support\ServiceProvider; -use Surface\LaravelWebfinger\Service\Webfinger; +use Surface\LaravelWebfinger\Http\Resources\Webfinger as Resource; +use Surface\LaravelWebfinger\Service\Webfinger as Service; class LaravelWebfingerServiceProvider extends ServiceProvider { @@ -34,8 +35,26 @@ protected function bootRoutes(): void protected function bindService(): void { $this->app->bind( - Webfinger::class, - static fn () => new Webfinger(...Config::get('webfinger', [])) + Service::class, + static function (Application $app): Service { + /** @var \Illuminate\Config\Repository $config */ + $config = $app->get('config'); + + /** @var array $items */ + $items = $config->get('webfinger', []); + + return new Service(...$items); + } + ); + + $this->app->bind( + Resource::class, + static function (Application $app): Resource { + /** @var \Surface\LaravelWebfinger\Service\Webfinger $service */ + $service = $app->make(Service::class); + + return new Resource(...$service); + } ); } }