<?php

declare(strict_types=1);

namespace openvk\Web\Presenters;

use openvk\Web\Themes\Themepacks;

final class ThemepacksPresenter extends OpenVKPresenter
{
    protected $banTolerant = true;

    public function renderResource(string $themepack, string $version, string $resClass, string $resource): void
    {
        if (!isset(Themepacks::i()[$themepack])) {
            $this->notFound();
        } else {
            $theme = Themepacks::i()[$themepack];
        }

        if ($resClass === "resource") {
            $data = $theme->fetchStaticResource(chandler_escape_url($resource));
        } elseif ($resClass === "stylesheet") {
            if ($resource !== "styles.css") {
                $this->notFound();
            } else {
                $data = $theme->fetchStyleSheet();
            }
        } else {
            $this->notFound();
        }

        if (!$data) {
            $this->notFound();
        }

        header("Content-Type: " . system_extension_mime_type($resource) ?? "text/plain; charset=unknown-8bit");
        header("Content-Size: " . strlen($data));
        header("Cache-Control: public, no-transform, max-age=31536000");
        exit($data);
    }
}