$reason], ); } /** * Create a skipped result. */ public static function skipped(string $reason = '', ?string $providerName = null): self { return new self( status: self::STATUS_SKIPPED, providerName: $providerName, debug: ['reason' => $reason], ); } /** * Create a pending result. */ public static function pending(): self { return new self(status: self::STATUS_PENDING); } /** * Check if the result is a successful match. */ public function isMatched(): bool { return $this->status === self::STATUS_MATCHED; } /** * Check if processing should continue to the next provider. */ public function shouldContinueProcessing(): bool { return ! $this->isMatched(); } /** * Get the box cover URL if available. */ public function getBoxCover(): ?string { return $this->movieData['boxcover'] ?? null; } /** * Get the back cover URL if available. */ public function getBackCover(): ?string { return $this->movieData['backcover'] ?? null; } /** * Get the synopsis if available. */ public function getSynopsis(): ?string { return $this->movieData['synopsis'] ?? null; } /** * Get the direct URL if available. */ public function getDirectUrl(): ?string { return $this->movieData['directurl'] ?? null; } }