diff --git a/go.mod b/go.mod new file mode 100644 index 0000000..f7737f5 --- /dev/null +++ b/go.mod @@ -0,0 +1,5 @@ +module astraltech.xyz/m/v2 + +go 1.26.1 + +require github.com/arran4/golang-ical v0.3.5 // indirect diff --git a/go.sum b/go.sum new file mode 100644 index 0000000..e62917d --- /dev/null +++ b/go.sum @@ -0,0 +1,2 @@ +github.com/arran4/golang-ical v0.3.5 h1:bbz6ld4dC+MmCKiFfOd6SkmIGnhNMBACZ485ULh7p9A= +github.com/arran4/golang-ical v0.3.5/go.mod h1:OnguFgjN0Hmx8jzpmWcC+AkHio94ujmLHKoaef7xQh8= diff --git a/main/dav_response.go b/main/dav_response.go index 2962b1b..0b62cc9 100644 --- a/main/dav_response.go +++ b/main/dav_response.go @@ -15,14 +15,12 @@ type PropStat struct { } type Prop struct { - DisplayName string `xml:"displayname"` - Type ResourceType `xml:"resourcetype"` + DisplayName string `xml:"displayname"` + Type ResourceType `xml:"resourcetype"` + CalendarData string `xml:"calendar-data"` } type ResourceType struct { Collection *struct{} `xml:"DAV: collection"` Calendar *struct{} `xml:"urn:ietf:params:xml:ns:caldav calendar"` } - -type CalandarData struct { -} diff --git a/main/dav_server.go b/main/dav_server.go index 09f160c..57f10d0 100644 --- a/main/dav_server.go +++ b/main/dav_server.go @@ -27,7 +27,7 @@ func init_dav_client() { } type Event struct { - Link string + CalData string } type Calandar struct { @@ -95,19 +95,18 @@ const XML_cal string = ` xmlns:C="urn:ietf:params:xml:ns:caldav"> + + + + + + + ` -// - -// -// -// -// -// - func get_calandar_data(cal Calandar, username string, password string) Calandar { req, _ := http.NewRequest( "REPORT", @@ -138,7 +137,7 @@ func get_calandar_data(cal Calandar, username string, password string) Calandar for i := range len(davResp.Responses) { newEvent := Event{ - Link: serverConfig.URL + davResp.Responses[i].Href, + CalData: davResp.Responses[i].PropStat[0].Prop.CalendarData, } cal.Events = append(cal.Events, newEvent) } diff --git a/main/main.go b/main/main.go index c477223..919d5ea 100644 --- a/main/main.go +++ b/main/main.go @@ -1,6 +1,11 @@ package main -import "fmt" +import ( + "fmt" + "strings" + + ics "github.com/arran4/golang-ical" +) func main() { read_config() @@ -17,5 +22,18 @@ func main() { fmt.Printf("Cal %d is named %s\n", i, calDavData.Calandars[i].DisplayName) fmt.Printf("\tLink to cal: %s\n", calDavData.Calandars[i].Link) fmt.Printf("\tEvent count: %d\n", len(calDavData.Calandars[i].Events)) + for j := range len(calDavData.Calandars[i].Events) { + cal, err := ics.ParseCalendar(strings.NewReader(calDavData.Calandars[i].Events[j].CalData)) + if err != nil { + fmt.Print(err.Error()) + } + events := cal.Events() + for k := range len(events) { + name := events[k].GetProperty(ics.ComponentProperty(ics.PropertySummary)).Value + date, _ := events[k].GetStartAt() + fmt.Printf("\t\tEvent name: %s\n", name) + fmt.Printf("\t\t\tEvent date: %s\n", date.UTC().String()) + } + } } }