Resolve AT Protocol DIDs, handles, and schemas with intelligent caching for Laravel
at dev 2.2 kB view raw
1<?php 2 3namespace SocialDept\AtpResolver; 4 5use Illuminate\Support\ServiceProvider; 6use SocialDept\AtpResolver\Cache\LaravelCacheStore; 7use SocialDept\AtpResolver\Contracts\CacheStore; 8use SocialDept\AtpResolver\Contracts\DidResolver; 9use SocialDept\AtpResolver\Contracts\HandleResolver; 10use SocialDept\AtpResolver\Resolvers\AtProtoHandleResolver; 11use SocialDept\AtpResolver\Resolvers\DidResolverManager; 12 13class ResolverServiceProvider extends ServiceProvider 14{ 15 /** 16 * Register any package services. 17 */ 18 public function register(): void 19 { 20 $this->mergeConfigFrom(__DIR__.'/../config/resolver.php', 'resolver'); 21 22 // Register cache store 23 $this->app->singleton(CacheStore::class, function ($app) { 24 return new LaravelCacheStore($app->make('cache')->store()); 25 }); 26 27 // Register DID resolver 28 $this->app->singleton(DidResolver::class, function ($app) { 29 return new DidResolverManager(); 30 }); 31 32 // Register handle resolver 33 $this->app->singleton(HandleResolver::class, function ($app) { 34 return new AtProtoHandleResolver(); 35 }); 36 37 // Register Resolver service 38 $this->app->singleton('resolver', function ($app) { 39 return new Resolver( 40 $app->make(DidResolver::class), 41 $app->make(HandleResolver::class), 42 $app->make(CacheStore::class), 43 ); 44 }); 45 46 $this->app->alias('resolver', Resolver::class); 47 } 48 49 /** 50 * Bootstrap the application services. 51 */ 52 public function boot(): void 53 { 54 if ($this->app->runningInConsole()) { 55 $this->bootForConsole(); 56 } 57 } 58 59 /** 60 * Get the services provided by the provider. 61 * 62 * @return array<string> 63 */ 64 public function provides(): array 65 { 66 return ['resolver', Resolver::class]; 67 } 68 69 /** 70 * Console-specific booting. 71 */ 72 protected function bootForConsole(): void 73 { 74 // Publish config 75 $this->publishes([ 76 __DIR__.'/../config/resolver.php' => config_path('resolver.php'), 77 ], 'resolver-config'); 78 } 79}