package conf

import (
	"github.com/xtls/xray-core/app/metrics"
	"github.com/xtls/xray-core/common/errors"
)

type MetricsConfig struct {
	Tag    string `json:"tag"`
	Listen string `json:"listen"`
}

func (c *MetricsConfig) Build() (*metrics.Config, error) {
	if c.Listen == "" && c.Tag == "" {
		return nil, errors.New("Metrics must have a tag or listen address.")
	}
	// If the tag is empty but have "listen" set a default "Metrics" for compatibility.
	if c.Tag == "" {
		c.Tag = "Metrics"
	}

	return &metrics.Config{
		Tag:    c.Tag,
		Listen: c.Listen,
	}, nil
}