package ical import ( "bytes" "github.com/jordic/goics" "htwkalender-ical/model" "htwkalender-ical/service/connector" "time" ) const expirationTime = 5 * time.Minute func Feed(token string) (string, error) { // get feed by token feed, err := connector.GetFeedByToken(token) if err != nil { return "", err } var events model.Events for _, module := range feed.Modules { moduleWithEvents, err := connector.GetModuleWithEvents(module) if err != nil { return "", err } events = append(events, moduleWithEvents.Events...) } // Sorte events by start date events.Sort() modules := make(map[string]model.FeedCollection) for _, module := range feed.Modules { modules[module.UUID] = model.FeedCollection(module) } b := bytes.Buffer{} goics.NewICalEncode(&b).Encode(IcalModel{Events: events, Mapping: modules}) icalFeed := &model.FeedModel{Content: b.String(), ExpiresAt: model.JSONTime(time.Now().Add(expirationTime))} return icalFeed.Content, nil } func FeedRecord(token string) (model.FeedRecord, error) { feedRecord, err := connector.GetFeedByToken(token) if err != nil { return model.FeedRecord{}, err } return feedRecord, nil }