<?php

declare(strict_types=1);

namespace WerkraumMedia\Events\Service\DestinationDataImportService;

use TYPO3\CMS\Core\Http\Uri;
use WerkraumMedia\Events\Domain\Model\Import;

/**
 * Factory to create URLs used during import of Destination Data.
 */
final class UrlFactory
{
    public function __construct(
        private readonly ConfigurationServiceInterface $configuration,
    ) {
    }

    /**
     * URL used to fetch initial set of data.
     */
    public function createSearchResultUrl(
        Import $import
    ): string {
        $parameter = [
            'experience' => $import->getRestExperience(),
            'licensekey' => $this->configuration->getLicenseKey(),
            'type' => $this->configuration->getRestType(),
            'mode' => $this->configuration->getRestMode(),
            'limit' => $this->configuration->getRestLimit(),
            'template' => $this->configuration->getRestTemplate(),
            'q' => $import->getSearchQuery(),
        ];

        $parameter = array_filter($parameter);

        $url = new Uri($this->configuration->getRestUrl());
        $url = $url->withQuery(http_build_query($parameter));
        return (string)$url;
    }
}