♻️ Move validation to Input class
This commit is contained in:
parent
b1f1f77b17
commit
3246004e58
5 changed files with 79 additions and 37 deletions
|
|
@ -4,22 +4,52 @@ namespace App\Models;
|
|||
|
||||
use App\Exceptions\Quit;
|
||||
|
||||
class Input
|
||||
class Input extends Model
|
||||
{
|
||||
public ?array $files;
|
||||
public ?string $url;
|
||||
public ?string $destination;
|
||||
public ?string $title;
|
||||
public bool $low;
|
||||
public bool $sync;
|
||||
|
||||
public function assertValid(): void
|
||||
public function assertValid(): self
|
||||
{
|
||||
// @todo probably should use a validator for this
|
||||
throw_if(
|
||||
empty($this->files) && empty($this->url),
|
||||
Quit::class,
|
||||
'Must have either a valid file or URL'
|
||||
);
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
public function hasURL(): bool
|
||||
{
|
||||
return !empty($this->url);
|
||||
}
|
||||
|
||||
public function setInput(?array $files): void
|
||||
{
|
||||
$this->setFiles($files);
|
||||
}
|
||||
|
||||
public function setFiles(?array $files): void
|
||||
{
|
||||
$this->files = array_map(function (string $file) {
|
||||
if (!file_exists($file)) {
|
||||
throw new Quit("$file is not a valid file");
|
||||
}
|
||||
|
||||
return realpath($file);
|
||||
}, $files ?? []);
|
||||
}
|
||||
|
||||
public function setDestination(?string $dir): void
|
||||
{
|
||||
throw_if(!is_dir($dir), Quit::class, "$dir is not a valid directory");
|
||||
$this->destination = $dir;
|
||||
// @todo get title from .nfo file, if available
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue