aboutsummaryrefslogtreecommitdiff
path: root/registry/registry.go
diff options
context:
space:
mode:
Diffstat (limited to 'registry/registry.go')
-rw-r--r--registry/registry.go42
1 files changed, 42 insertions, 0 deletions
diff --git a/registry/registry.go b/registry/registry.go
new file mode 100644
index 0000000..04c4565
--- /dev/null
+++ b/registry/registry.go
@@ -0,0 +1,42 @@
+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 &reg
+}
+
+func (r *Registry) LookupResource(name string) *webfinger.Resource {
+ handler, ok := r.handlerMap[name]
+ 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
+}