<?php

namespace Pterodactyl\Transformers\Api\Client;

use Pterodactyl\Models\EggVariable;
use Pterodactyl\Transformers\Api\Transformer;

class EggVariableTransformer extends Transformer
{
    public function getResourceName(): string
    {
        return EggVariable::RESOURCE_NAME;
    }

    public function transform(EggVariable $model): array
    {
        // This guards against someone incorrectly retrieving variables (haha, me) and then passing
        // them into the transformer and along to the user. Just throw an exception and break the entire
        // pathway since you should never be exposing these types of variables to a client.
        if (!$model->user_viewable) {
            throw new \BadMethodCallException('Cannot transform a hidden egg variable in a client transformer.');
        }

        return [
            'name' => $model->name,
            'description' => $model->description,
            'env_variable' => $model->env_variable,
            'default_value' => $model->default_value,
            'server_value' => $model->server_value,
            'is_editable' => $model->user_editable,
            'rules' => $model->rules,
        ];
    }
}