diff --git a/term.go b/term.go new file mode 100644 index 0000000..7431596 --- /dev/null +++ b/term.go @@ -0,0 +1,26 @@ +package myradio + +import ( + "time" +) + +// Term represents information about a MyRadio scheduling term +type Term struct { + TermID int `json:"term_id"` + Start int64 `json:"start"` + Description string `json:"descr"` + NumWeeks int `json:"num_weeks"` + WeekNames []string `json:"week_names"` +} + +// StartTime returns the start of the term as a time.Time object +func (t *Term) StartTime() (time.Time) { + return time.Unix(t.Start, 0) +} + +// GetAllTerms retrieves all the terms MyRadio is aware of (past and future) +func (s *Session) GetAllTerms() (terms []Term, err error) { + err = s.get("/term/allterms/").Into(&terms) + return +} + diff --git a/training.go b/training.go new file mode 100644 index 0000000..1b00777 --- /dev/null +++ b/training.go @@ -0,0 +1,26 @@ +package myradio + +import ( + "time" + + "github.com/UniversityRadioYork/myradio-go/api" +) + +type TrainingSession struct { + StartTimeRaw string `json:"demo_time"` + Host string `json:"member"` + HostMemberID int `json:"memberid"` +} + +func (ts *TrainingSession) StartTime() time.Time { + t, _ := time.Parse("Mon 02 Jan 15:04", ts.StartTimeRaw) + + return time.Date(time.Now().Year(), t.Month(), t.Day(), t.Hour(), t.Minute(), 0, 0, time.Local) +} + +func (s *Session) GetFutureTrainingSessions() (sessions []TrainingSession, err error) { + rq := api.NewRequestf("/demo/listdemos") + err = s.do(rq).Into(&sessions) + + return +} diff --git a/user.go b/user.go index 0ada041..83c6444 100644 --- a/user.go +++ b/user.go @@ -27,6 +27,7 @@ type Officership struct { FromDate time.Time TillDateRaw string `json:"till_date,omitempty"` TillDate time.Time + Officer OfficerPosition `json:"officer"` } // Photo represents a photo of a user. @@ -51,6 +52,11 @@ type College struct { CollegeName string `json:"text"` } +type Training struct { + StatusID int `json:"status_id"` + Title string `json:"title"` +} + // GetUser retrieves the User with the given ID. // This consumes one API request. func (s *Session) GetUser(id int) (user *User, err error) { @@ -156,3 +162,8 @@ func (s *Session) GetColleges() (colleges []College, err error) { err = s.get("/user/colleges").Into(&colleges) return } + +func (s *Session) GetUserTraining(userID int) (trainings []Training, err error) { + err = s.getf("/user/%d/alltraining", userID).Into(&trainings) + return +}