From d773ea3522574dab6ef5b8f7c0a664825db67f51 Mon Sep 17 00:00:00 2001 From: James Dolan Date: Fri, 25 Sep 2020 19:51:27 +0100 Subject: [PATCH 1/3] Add api methods getNext and getInRange for Events --- event.go | 38 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 event.go diff --git a/event.go b/event.go new file mode 100644 index 0000000..8822d20 --- /dev/null +++ b/event.go @@ -0,0 +1,38 @@ +package myradio + +import ( + "github.com/UniversityRadioYork/myradio-go/api" + "strconv" +) + +type Event struct { + ID int `json:"id"` + Title string + Description string + Start string + End string + Host User +} + +func (s *Session) GetEventsNext(n int) ([]Event, error) { + req := api.NewRequest("/event/next") + req.Params["n"] = []string{strconv.Itoa(n)} + var events []Event + err := s.do(req).Into(events) + if err != nil { + return nil, err + } + return events, nil +} + +func (s *Session) GetEventsInRange(start string, end string) ([]Event, error) { + req := api.NewRequest("/event/inrange") + req.Params["start"] = []string{start} + req.Params["end"] = []string{end} + var events []Event + err := s.do(req).Into(events) + if err != nil { + return nil, err + } + return events, nil +} From 39ba206b84bc80ff6154301440a7c38e3f7c4a60 Mon Sep 17 00:00:00 2001 From: James Dolan Date: Fri, 25 Sep 2020 21:21:18 +0100 Subject: [PATCH 2/3] Fix pointer error --- event.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/event.go b/event.go index 8822d20..8d85849 100644 --- a/event.go +++ b/event.go @@ -18,7 +18,7 @@ func (s *Session) GetEventsNext(n int) ([]Event, error) { req := api.NewRequest("/event/next") req.Params["n"] = []string{strconv.Itoa(n)} var events []Event - err := s.do(req).Into(events) + err := s.do(req).Into(&events) if err != nil { return nil, err } @@ -30,7 +30,7 @@ func (s *Session) GetEventsInRange(start string, end string) ([]Event, error) { req.Params["start"] = []string{start} req.Params["end"] = []string{end} var events []Event - err := s.do(req).Into(events) + err := s.do(req).Into(&events) if err != nil { return nil, err } From 3b95164b65508af32dc56c5fcb7bdcaf04fa7253 Mon Sep 17 00:00:00 2001 From: michael-grace Date: Sun, 6 Feb 2022 02:39:26 +0000 Subject: [PATCH 3/3] update to time types --- event.go | 50 ++++++++++++++++++++++++++++++++++++++++---------- 1 file changed, 40 insertions(+), 10 deletions(-) diff --git a/event.go b/event.go index 8d85849..08bf99f 100644 --- a/event.go +++ b/event.go @@ -1,17 +1,31 @@ package myradio import ( - "github.com/UniversityRadioYork/myradio-go/api" "strconv" + "time" + + "github.com/UniversityRadioYork/myradio-go/api" ) type Event struct { - ID int `json:"id"` - Title string - Description string - Start string - End string - Host User + ID int `json:"id"` + Title string `json:"title"` + HTMLDescription string `json:"description_html"` + StartTime time.Time + StartTimeRaw string `json:"start"` + EndTime time.Time + EndTimeRaw string `json:"end"` + Host User `json:"host"` +} + +func (e *Event) populateEventTimes() (err error) { + e.StartTime, err = time.Parse(time.RFC3339, e.StartTimeRaw) + if err != nil { + return + } + + e.EndTime, err = time.Parse(time.RFC3339, e.EndTimeRaw) + return } func (s *Session) GetEventsNext(n int) ([]Event, error) { @@ -22,17 +36,33 @@ func (s *Session) GetEventsNext(n int) ([]Event, error) { if err != nil { return nil, err } + + for k := range events { + err = events[k].populateEventTimes() + if err != nil { + return nil, err + } + } + return events, nil } -func (s *Session) GetEventsInRange(start string, end string) ([]Event, error) { +func (s *Session) GetEventsInRange(start time.Time, end time.Time) ([]Event, error) { req := api.NewRequest("/event/inrange") - req.Params["start"] = []string{start} - req.Params["end"] = []string{end} + req.Params["start"] = []string{start.String()} + req.Params["end"] = []string{end.String()} var events []Event err := s.do(req).Into(&events) if err != nil { return nil, err } + + for k := range events { + err = events[k].populateEventTimes() + if err != nil { + return nil, err + } + } + return events, nil }