<?php

namespace App\Actions\FileManager;

use App\Exceptions\SSHError;
use App\Models\File;
use App\Models\Server;
use App\Models\User;
use Illuminate\Validation\Rule;

class FetchFiles
{
    /**
     * @param  array<string, mixed>  $input
     *
     * @throws SSHError
     */
    public function fetch(User $user, Server $server, array $input): void
    {
        File::parse(
            $user,
            $server,
            $input['path'],
            $input['user'],
            $server->os()->ls($input['path'], $input['user'])
        );
    }

    /**
     * @return array<string, array<string>>
     */
    public static function rules(Server $server): array
    {
        return [
            'path' => [
                'required',
            ],
            'user' => [
                'required',
                Rule::in($server->getSshUsers()),
            ],
        ];
    }
}