Compare commits
3 commits
6d807f59c0
...
320a629561
| Author | SHA1 | Date | |
|---|---|---|---|
| 320a629561 | |||
| caa1f0e442 | |||
| 347c0330b1 |
6 changed files with 61 additions and 19 deletions
29
AGENTS.md
Normal file
29
AGENTS.md
Normal file
|
|
@ -0,0 +1,29 @@
|
|||
# Agent Guidelines for vid-queue
|
||||
|
||||
This document outlines the conventions and commands for agentic coding in this repository.
|
||||
|
||||
## Build/Lint/Test Commands
|
||||
|
||||
* **Tests:** There are no working tests. The user will do manual tests.
|
||||
* **Linting:** Adhere to PSR-12 coding standards. No explicit linting command is configured, but static analysis tools like PHPStan or Psalm may be used locally.
|
||||
|
||||
## Code Style Guidelines
|
||||
|
||||
* **Imports:** Use fully qualified class names and `use` statements at the top of files.
|
||||
* **Formatting:**
|
||||
* Indent with 4 spaces.
|
||||
* Use `lf` for line endings.
|
||||
* Ensure a final newline at the end of files.
|
||||
* Trim trailing whitespace.
|
||||
* **Types:** Utilize PHP 7.4+ type hints for arguments, return types, and properties where appropriate.
|
||||
* **Naming Conventions:**
|
||||
* Classes: PascalCase (e.g., `GetShow`, `TraktLogin`).
|
||||
* Methods/Functions: camelCase.
|
||||
* Variables: camelCase.
|
||||
* **Error Handling:** Use exceptions for error handling.
|
||||
* **Dependency Injection:** Prefer dependency injection over using Facades or resolving from the IOC Container directly.
|
||||
|
||||
## Git Commit Guidelines
|
||||
- **Format**: Prepend commit messages with a gitmoji emoji (see https://gitmoji.dev)
|
||||
- **Style**: Write detailed commit messages that explain what changed and why
|
||||
- **Examples**: `✨ Add JSON export functionality for log entries`, `🐛 Fix date parsing for RFC3339 timestamps`, `📝 Update README with configuration examples`
|
||||
|
|
@ -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'],
|
||||
];
|
||||
|
||||
|
|
|
|||
|
|
@ -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',
|
||||
];
|
||||
|
||||
|
|
|
|||
|
|
@ -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)));
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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'),
|
||||
];
|
||||
}
|
||||
|
||||
|
|
|
|||
11
config/trakt.php
Normal file
11
config/trakt.php
Normal file
|
|
@ -0,0 +1,11 @@
|
|||
<?php
|
||||
|
||||
return [
|
||||
'app_id' => 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),
|
||||
],
|
||||
];
|
||||
Loading…
Add table
Add a link
Reference in a new issue