diff --git a/main/dav_response.go b/main/dav_response.go index c4eb08e..08d3e16 100644 --- a/main/dav_response.go +++ b/main/dav_response.go @@ -15,5 +15,11 @@ type PropStat struct { } type Prop struct { - DisplayName string `xml:"displayname"` + DisplayName string `xml:"displayname"` + Type ResourceType `xml:"resourcetype"` +} + +type ResourceType struct { + Collection *struct{} `xml:"DAV: collection"` + Calendar *struct{} `xml:"urn:ietf:params:xml:ns:caldav calendar"` } diff --git a/main/dav_server.go b/main/dav_server.go index 2ad85fb..824cd26 100644 --- a/main/dav_server.go +++ b/main/dav_server.go @@ -26,9 +26,13 @@ func init_dav_client() { client = &http.Client{} } +type Calandar struct { + DisplayName string +} + type SimpleCalDavData struct { DisplayName string - Calandars []string + Calandars []Calandar } // this makes stalwart assumptions @@ -60,8 +64,23 @@ func get_caldav_data(username string, password string) SimpleCalDavData { log.Fatal(err) } + fmt.Print(string(body)) + + calandars := []Calandar{} + for i := range len(davResp.Responses) { + if davResp.Responses[i].PropStat[0].Prop.Type.Calendar == nil { + continue + } + + var new_cal Calandar = Calandar{ + DisplayName: davResp.Responses[i].PropStat[0].Prop.DisplayName, + } + + calandars = append(calandars, new_cal) + } + return SimpleCalDavData{ DisplayName: davResp.Responses[0].PropStat[0].Prop.DisplayName, - Calandars: []string{}, + Calandars: calandars, } } diff --git a/main/main.go b/main/main.go index b5e36f6..aa79f23 100644 --- a/main/main.go +++ b/main/main.go @@ -6,5 +6,12 @@ func main() { read_config() init_dav_client() calDavData := get_caldav_data(serverConfig.Username, serverConfig.Password) - fmt.Printf("Users display name: {%s}\n", calDavData.DisplayName) + + fmt.Println() + + fmt.Printf("Users display name: %s\n", calDavData.DisplayName) + fmt.Printf("Calandar Count: %d\n", len(calDavData.Calandars)) + for i := range len(calDavData.Calandars) { + fmt.Printf("Cal %d is named %s\n", i, calDavData.Calandars[i].DisplayName) + } }