aboutsummaryrefslogtreecommitdiffstats
path: root/plugins/caldav/plugin.go
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/caldav/plugin.go')
-rw-r--r--plugins/caldav/plugin.go16
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 {