From b5e70aec2e558f1232d3535783263db399f21dea Mon Sep 17 00:00:00 2001 From: Dan Jones Date: Sat, 29 Oct 2022 12:33:22 -0500 Subject: [PATCH] =?UTF-8?q?=E2=9C=A8=20Watch=20episode=20directly?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/Commands/TraktWatch.php | 34 ++++++++++++++++++++++++++ app/Data/DataPipes/ReadExportFiles.php | 8 +++++- 2 files changed, 41 insertions(+), 1 deletion(-) create mode 100644 app/Commands/TraktWatch.php diff --git a/app/Commands/TraktWatch.php b/app/Commands/TraktWatch.php new file mode 100644 index 0000000..07333d6 --- /dev/null +++ b/app/Commands/TraktWatch.php @@ -0,0 +1,34 @@ +argument('file')); + + $watchData = WatchData::from(['rawData' => [$file->toArray()]]); + $data = $watchData->structuredData; + + $headers = [ + 'trakt-api-version' => 2, + 'trakt-api-key' => env('TRAKT_APP_ID'), + 'Authorization' => 'Bearer ' . env('TRAKT_OAUTH_TOKEN'), + ]; + + $this->info(sprintf('Submitting %s to trakt with headers %s', json_encode($data), json_encode($headers))); + $response = Http::withHeaders($headers)->post('https://api.trakt.tv/sync/history', $data); + + $this->line('Response: ' . PHP_EOL . json_encode($response->json(), JSON_PRETTY_PRINT)); + + return static::SUCCESS; + } +} diff --git a/app/Data/DataPipes/ReadExportFiles.php b/app/Data/DataPipes/ReadExportFiles.php index 261770e..a76046b 100644 --- a/app/Data/DataPipes/ReadExportFiles.php +++ b/app/Data/DataPipes/ReadExportFiles.php @@ -3,7 +3,9 @@ namespace App\Data\DataPipes; use App\Data\FileData; +use App\Data\WatchExport; use Illuminate\Support\Collection; +use Spatie\LaravelData\DataCollection; use Spatie\LaravelData\DataPipes\DataPipe; use Spatie\LaravelData\Lazy; use Spatie\LaravelData\Optional; @@ -15,7 +17,11 @@ class ReadExportFiles implements DataPipe { public function handle(mixed $payload, DataClass $class, Collection $properties): Collection { - if (!$properties->has('files') || !$properties->get('files')->count()) { + if (!$properties->has('files')) { + $properties['files'] = new DataCollection(WatchExport::class, []); + } + + if (!$properties->get('files')->count()) { return $properties; }