package client

import (
	"context"
	"fmt"

	"forge.cadoles.com/cadoles/bouncer/internal/admin"
	"forge.cadoles.com/cadoles/bouncer/internal/store"
	"github.com/pkg/errors"
)

func (c *Client) GetProxy(ctx context.Context, proxyName store.ProxyName, funcs ...OptionFunc) (*store.Proxy, error) {
	response := withResponse[admin.GetProxyResponse]()

	path := fmt.Sprintf("/api/v1/proxies/%s", proxyName)

	if err := c.apiGet(ctx, path, &response, funcs...); err != nil {
		return nil, errors.WithStack(err)
	}

	if response.Error != nil {
		return nil, errors.WithStack(response.Error)
	}

	return response.Data.Proxy, nil
}