package registry import ( "fmt" "git.capotej.com/capotej/communique/config" "git.capotej.com/capotej/communique/webfinger" ) type Handler struct { handlerCfg config.Handler } type Registry struct { cfg config.Config handlerMap map[string]Handler } func NewRegistry(cfg config.Config) *Registry { reg := Registry{cfg: cfg} reg.handlerMap = make(map[string]Handler) for _, v := range cfg.Handlers { fqdn := fmt.Sprintf("acct:%s@%s", v.Name, cfg.Domain) reg.handlerMap[fqdn] = Handler{handlerCfg: v} } return ® } func (r *Registry) LookupByName(name string) *webfinger.Resource { fqdn := fmt.Sprintf("acct:%s@%s", name, r.cfg.Domain) return r.LookupResource(fqdn) } func (r *Registry) LookupResource(fqdn string) *webfinger.Resource { handler, ok := r.handlerMap[fqdn] if !ok { return nil } rs := webfinger.Resource{ Subject: fmt.Sprintf("acct:%s@%s", handler.handlerCfg.Name, "activitybub.xyz"), Aliases: []string{}, Links: []webfinger.Link{{ Rel: "asd", }}, } return &rs }