From 1fddaf3f6773fd56f15dccbc2424fc99cc4420f4 Mon Sep 17 00:00:00 2001 From: Gregory Wells Date: Mon, 3 Aug 2026 21:01:58 -0400 Subject: [PATCH] reformat some stuff --- auth/auth.go | 42 +++++++++++++++++++++++++++++++ auth/token.go | 1 + {main => caldav}/dav_response.go | 2 +- {main => caldav}/dav_server.go | 14 ++++++----- {main => caldav}/helpers.go | 2 +- go.mod | 5 +++- go.sum | 2 ++ main/main.go | 43 +++----------------------------- 8 files changed, 63 insertions(+), 48 deletions(-) create mode 100644 auth/auth.go create mode 100644 auth/token.go rename {main => caldav}/dav_response.go (97%) rename {main => caldav}/dav_server.go (87%) rename {main => caldav}/helpers.go (90%) diff --git a/auth/auth.go b/auth/auth.go new file mode 100644 index 0000000..38f0ddf --- /dev/null +++ b/auth/auth.go @@ -0,0 +1,42 @@ +package auth + +import ( + "fmt" + "strings" + + "astraltech.xyz/calendar/v2/caldav" + ics "github.com/arran4/golang-ical" +) + +func HandleAuthRequest(username string, password string) bool { + calDavData := caldav.GetCalDAVData(username, password) + + fmt.Printf("Users display name: %s\n", calDavData.DisplayName) + fmt.Printf("Calandar Count: %d\n", len(calDavData.Calandars)) + for i := range len(calDavData.Calandars) { + calDavData.Calandars[i] = caldav.GetCalendarData(calDavData.Calandars[i], username, password) + + 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 + start, _ := events[k].GetStartAt() + end, _ := events[k].GetEndAt() + time := end.Sub(start) + fmt.Printf("\t\tEvent name: %s\n", name) + fmt.Printf("\t\t\tEvent start date: %s\n", end.UTC().String()) + fmt.Printf("\t\t\tEvent length date: %s\n", time.String()) + + } + } + } + + return true +} diff --git a/auth/token.go b/auth/token.go new file mode 100644 index 0000000..8832b06 --- /dev/null +++ b/auth/token.go @@ -0,0 +1 @@ +package auth diff --git a/main/dav_response.go b/caldav/dav_response.go similarity index 97% rename from main/dav_response.go rename to caldav/dav_response.go index 0b62cc9..24ec156 100644 --- a/main/dav_response.go +++ b/caldav/dav_response.go @@ -1,4 +1,4 @@ -package main +package caldav type MultiStatus struct { Responses []Response `xml:"response"` diff --git a/main/dav_server.go b/caldav/dav_server.go similarity index 87% rename from main/dav_server.go rename to caldav/dav_server.go index d8a06d2..1b39aad 100644 --- a/main/dav_server.go +++ b/caldav/dav_server.go @@ -1,4 +1,4 @@ -package main +package caldav import ( "encoding/xml" @@ -21,9 +21,11 @@ const neededXML string = ` ` var client *http.Client +var serverURL string -func init_dav_client() { +func InitDavClient(url string) { client = &http.Client{} + serverURL = url } type Event struct { @@ -42,10 +44,10 @@ type SimpleCalDavData struct { } // this makes stalwart assumptions -func get_caldav_data(username string, password string) SimpleCalDavData { +func GetCalDAVData(username string, password string) SimpleCalDavData { req, _ := http.NewRequest( "PROPFIND", - serverConfig.URL+"/dav/cal/"+convert_username_into_url(username), + serverURL+"/dav/cal/"+convert_username_into_url(username), strings.NewReader(neededXML), ) @@ -78,7 +80,7 @@ func get_caldav_data(username string, password string) SimpleCalDavData { var new_cal Calandar = Calandar{ DisplayName: davResp.Responses[i].PropStat[0].Prop.DisplayName, - Link: serverConfig.URL + davResp.Responses[i].Href, + Link: serverURL + davResp.Responses[i].Href, } calandars = append(calandars, new_cal) @@ -107,7 +109,7 @@ const XML_cal string = ` ` -func get_calandar_data(cal Calandar, username string, password string) Calandar { +func GetCalendarData(cal Calandar, username string, password string) Calandar { req, _ := http.NewRequest( "REPORT", cal.Link, diff --git a/main/helpers.go b/caldav/helpers.go similarity index 90% rename from main/helpers.go rename to caldav/helpers.go index 3ad6aef..27ba08b 100644 --- a/main/helpers.go +++ b/caldav/helpers.go @@ -1,4 +1,4 @@ -package main +package caldav import "strings" diff --git a/go.mod b/go.mod index 58e6481..a232a13 100644 --- a/go.mod +++ b/go.mod @@ -2,4 +2,7 @@ module astraltech.xyz/calendar/v2 go 1.26.1 -require github.com/arran4/golang-ical v0.3.5 // indirect +require ( + github.com/arran4/golang-ical v0.3.5 // indirect + golang.org/x/oauth2 v0.36.0 // indirect +) diff --git a/go.sum b/go.sum index e62917d..3faf480 100644 --- a/go.sum +++ b/go.sum @@ -1,2 +1,4 @@ github.com/arran4/golang-ical v0.3.5 h1:bbz6ld4dC+MmCKiFfOd6SkmIGnhNMBACZ485ULh7p9A= github.com/arran4/golang-ical v0.3.5/go.mod h1:OnguFgjN0Hmx8jzpmWcC+AkHio94ujmLHKoaef7xQh8= +golang.org/x/oauth2 v0.36.0 h1:peZ/1z27fi9hUOFCAZaHyrpWG5lwe0RJEEEeH0ThlIs= +golang.org/x/oauth2 v0.36.0/go.mod h1:YDBUJMTkDnJS+A4BP4eZBjCqtokkg1hODuPjwiGPO7Q= diff --git a/main/main.go b/main/main.go index c128a6f..afcd6f0 100644 --- a/main/main.go +++ b/main/main.go @@ -1,53 +1,18 @@ package main import ( - "fmt" - "strings" - + "astraltech.xyz/calendar/v2/auth" + "astraltech.xyz/calendar/v2/caldav" "astraltech.xyz/calendar/v2/webserver" - ics "github.com/arran4/golang-ical" ) -func HandleAuthRequest(username string, password string) bool { - calDavData := get_caldav_data(username, password) - - fmt.Printf("Users display name: %s\n", calDavData.DisplayName) - fmt.Printf("Calandar Count: %d\n", len(calDavData.Calandars)) - for i := range len(calDavData.Calandars) { - calDavData.Calandars[i] = get_calandar_data(calDavData.Calandars[i], username, password) - - 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 - start, _ := events[k].GetStartAt() - end, _ := events[k].GetEndAt() - time := end.Sub(start) - fmt.Printf("\t\tEvent name: %s\n", name) - fmt.Printf("\t\t\tEvent start date: %s\n", end.UTC().String()) - fmt.Printf("\t\t\tEvent length date: %s\n", time.String()) - - } - } - } - - return true -} - func main() { read_config() - init_dav_client() + caldav.InitDavClient(serverConfig.URL) webserver.ServeLoginPage("/login", webserver.CustomizableLoginData{ ServiceName: "Astral Calendar", - AuthRequestFunction: HandleAuthRequest, + AuthRequestFunction: auth.HandleAuthRequest, }) webserver.EnableLogoRoute() webserver.EnableStaticRoute()