<?php

namespace Pterodactyl\Repositories\Wings;

use Pterodactyl\Models\Node;
use Pterodactyl\Models\Server;
use GuzzleHttp\Exception\TransferException;
use Pterodactyl\Exceptions\Http\Connection\DaemonConnectionException;

class DaemonTransferRepository extends DaemonRepository
{
    /**
     * @param Server $server
     * @param array $data
     * @param Node $node
     * @param string $token
     *
     * @throws DaemonConnectionException
     */
    public function notify(Server $server, array $data, Node $node, string $token): void
    {
        try {
            $this->getHttpClient()->post('/api/transfer', [
                'json' => [
                    'server_id' => $server->uuid,
                    'url' => $node->getConnectionAddress() . sprintf('/api/servers/%s/archive', $server->uuid),
                    'token' => 'Bearer ' . $token,
                    'server' => $data,
                ],
            ]);
        } catch (TransferException $exception) {
            throw new DaemonConnectionException($exception);
        }
    }
}