mirror of
https://gitlab.dit.htwk-leipzig.de/htwk-software/htwkalender.git
synced 2026-01-18 04:22:27 +01:00
feat:#7 extracted ical-service in own microservice
This commit is contained in:
55
backend-ical/service/ical/ical.go
Normal file
55
backend-ical/service/ical/ical.go
Normal file
@@ -0,0 +1,55 @@
|
||||
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
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user