diff options
author | 2023-12-27 23:34:20 +0100 | |
---|---|---|
committer | 2023-12-27 23:34:20 +0100 | |
commit | ae1d0a873b7dc8bee3669c7639c36f5743335636 (patch) | |
tree | 7656f0318e3d038a543af0f199a0c10dc362c9f0 | |
parent | 84a72320e2309c6e3f60574e22cb61a5eefd9c15 (diff) | |
download | alps-ae1d0a873b7dc8bee3669c7639c36f5743335636.tar.gz alps-ae1d0a873b7dc8bee3669c7639c36f5743335636.tar.bz2 alps-ae1d0a873b7dc8bee3669c7639c36f5743335636.zip |
plugins/caldav: implement discovery
-rw-r--r-- | plugins/caldav/plugin.go | 16 |
1 files changed, 12 insertions, 4 deletions
diff --git a/plugins/caldav/plugin.go b/plugins/caldav/plugin.go index b5677fb..cf2fd29 100644 --- a/plugins/caldav/plugin.go +++ b/plugins/caldav/plugin.go @@ -1,10 +1,13 @@ package alpscaldav import ( + "context" "fmt" "net/http" "net/url" + "github.com/emersion/go-webdav/caldav" + "git.sr.ht/~migadu/alps" ) @@ -46,10 +49,15 @@ func newPlugin(srv *alps.Server) (alps.Plugin, error) { u.Scheme = "http" } if u.Scheme == "" { - // TODO - err := fmt.Errorf("discovery not yet implemented") - srv.Logger().Printf("caldav: failed to discover CalDAV server: %v", err) - return nil, nil + s, err := caldav.DiscoverContextURL(context.Background(), u.Host) + if err != nil { + srv.Logger().Printf("caldav: failed to discover CalDAV server: %v", err) + return nil, nil + } + u, err = url.Parse(s) + if err != nil { + return nil, fmt.Errorf("caldav: Discover returned an invalid URL: %v", err) + } } if err := sanityCheckURL(u); err != nil { |