diff --git a/app/Commands/TraktLogin.php b/app/Commands/TraktLogin.php index 592080a..1be6a85 100644 --- a/app/Commands/TraktLogin.php +++ b/app/Commands/TraktLogin.php @@ -5,16 +5,16 @@ declare(strict_types=1); namespace App\Commands; use App\Services\Trakt; +use Illuminate\Contracts\Config\Repository; class TraktLogin extends Command { protected $signature = 'trakt:login'; protected $description = 'Login and get new token.'; - - public function handle(Trakt $trakt): int + public function handle(Trakt $trakt, Repository $config): int { $data = [ - 'client_id' => env('TRAKT_APP_ID'), + 'client_id' => $config->get('trakt.app_id'), ]; $resp = $trakt->requestNoAuth()->post('/oauth/device/code', $data); @@ -33,8 +33,8 @@ class TraktLogin extends Command $this->line("TRAKT_DEVICE_RESP='" . json_encode($body) . "'"); $data = [ - 'client_id' => env('TRAKT_APP_ID'), - 'client_secret' => env('TRAKT_APP_SECRET'), + 'client_id' => $config->get('trakt.app_id'), + 'client_secret' => $config->get('trakt.app_secret'), 'code' => $body['device_code'], ]; diff --git a/app/Commands/TraktRefreshLogin.php b/app/Commands/TraktRefreshLogin.php index b17b3c4..3baf499 100644 --- a/app/Commands/TraktRefreshLogin.php +++ b/app/Commands/TraktRefreshLogin.php @@ -5,25 +5,25 @@ declare(strict_types=1); namespace App\Commands; use App\Services\Trakt; +use Illuminate\Contracts\Config\Repository; class TraktRefreshLogin extends Command { protected $signature = 'trakt:refresh'; protected $description = 'Refresh access token.'; - - public function handle(Trakt $trakt): int + public function handle(Trakt $trakt, Repository $config): int { - $oauth_resp = json_decode(env('TRAKT_OAUTH_RESP'), true); - if (empty($oauth_resp)) { - $this->line("Failed to get OAuth response"); + $refresh_token = $config->get('trakt.login.oauth.refresh_token'); + if (empty($refresh_token)) { + $this->line("Failed to get refresh token"); return static::FAILURE; } $data = [ - 'refresh_token' => $oauth_resp['refresh_token'], - 'client_id' => env('TRAKT_APP_ID'), - 'client_secret' => env('TRAKT_APP_SECRET'), - 'redirect_uri' => env('TRAKT_REDIRECT_URI'), + 'refresh_token' => $refresh_token, + 'client_id' => $config->get('trakt.app_id'), + 'client_secret' => $config->get('trakt.app_secret'), + 'redirect_uri' => $config->get('trakt.redirect_uri'), 'grant_type' => 'refresh_token', ]; diff --git a/app/Providers/AppServiceProvider.php b/app/Providers/AppServiceProvider.php index 8c37147..93d92fa 100644 --- a/app/Providers/AppServiceProvider.php +++ b/app/Providers/AppServiceProvider.php @@ -7,6 +7,7 @@ use Illuminate\Support\ServiceProvider; use Illuminate\Contracts\Queue\Factory as QueueFactoryContract; use App\Queue\DatabaseConnector; use App\Services\Trakt; +use Illuminate\Contracts\Config\Repository; class AppServiceProvider extends ServiceProvider { @@ -29,6 +30,6 @@ class AppServiceProvider extends ServiceProvider public function register() { $this->app->instance(ProcessInput::class, new ProcessInput()); - $this->app->instance(Trakt::class, new Trakt()); + $this->app->singleton(Trakt::class, fn ($app) => new Trakt($app->make(Repository::class))); } } diff --git a/app/Services/Trakt.php b/app/Services/Trakt.php index 127406d..3a4c3f9 100644 --- a/app/Services/Trakt.php +++ b/app/Services/Trakt.php @@ -6,18 +6,19 @@ use App\Data\WatchData; use Illuminate\Http\Client\PendingRequest; use Illuminate\Http\Client\Response; use Illuminate\Support\Facades\Http; +use Illuminate\Contracts\Config\Repository; use Symfony\Component\Console\Output\OutputInterface; class Trakt { - protected $headers = []; + protected array $headers = []; - public function __construct() + public function __construct(Repository $config) { $this->headers = [ 'trakt-api-version' => 2, - 'trakt-api-key' => env('TRAKT_APP_ID'), - 'Authorization' => 'Bearer ' . env('TRAKT_OAUTH_TOKEN'), + 'trakt-api-key' => $config->get('trakt.app_id'), + 'Authorization' => 'Bearer ' . $config->get('trakt.login.oauth.access_token'), ]; } diff --git a/config/trakt.php b/config/trakt.php new file mode 100644 index 0000000..5b91722 --- /dev/null +++ b/config/trakt.php @@ -0,0 +1,11 @@ + env('TRAKT_APP_ID'), + 'app_secret' => env('TRAKT_APP_secret'), + 'redirect_uri' => env('TRAKT_REDIRECT_URI', 'urn:ietf:wg:oauth:2.0:oob'), + 'login' => [ + 'device' => json_decode(env('TRAKT_DEVICE_RESP', '{}}'), true), + 'oauth' => json_decode(env('TRAKT_OAUTH_RESP', '{}}'), true), + ], +];