package nodeinfo

const (
	profileVer = "2.0"
	profile    = "http://nodeinfo.diaspora.software/ns/schema/" + profileVer
)

type Service struct {
	InfoURL string
	Info    NodeInfo

	resolver Resolver
}

func NewService(cfg Config, r Resolver) *Service {
	return &Service{
		InfoURL: cfg.BaseURL + cfg.InfoURL,
		Info: NodeInfo{
			Metadata:  cfg.Metadata,
			Protocols: cfg.Protocols,
			Services:  cfg.Services,
			Software:  cfg.Software,
		},
		resolver: r,
	}
}

func (s Service) BuildInfo() NodeInfo {
	ni := s.Info
	ni.OpenRegistrations, _ = s.resolver.IsOpenRegistration()
	ni.Usage, _ = s.resolver.Usage()
	ni.Version = profileVer
	return ni
}
