47 lines
1.1 KiB
Go
47 lines
1.1 KiB
Go
package main
|
|
|
|
import (
|
|
"github.com/gidsi/ics-golang"
|
|
"log"
|
|
)
|
|
|
|
func getCalendars() {
|
|
spaceDataArray := readSpacedata()
|
|
|
|
for _, spaceData := range spaceDataArray {
|
|
parser := ics.New()
|
|
parserChan := parser.GetInputChan()
|
|
parserChan <- spaceData.Feeds.Calendar.Url
|
|
outputChan := parser.GetOutputChan()
|
|
calendar := Calendar{}
|
|
calendar.Space = spaceData.Space
|
|
var events []Event
|
|
go func() {
|
|
for event := range outputChan {
|
|
events = append(events, mapEventObject(event))
|
|
}
|
|
}()
|
|
parser.Wait()
|
|
calendar.Events = events
|
|
writeCalendar(calendar)
|
|
log.Println("calendar write done for " + spaceData.Space)
|
|
}
|
|
}
|
|
|
|
func mapEventObject(event *ics.Event) Event {
|
|
eventData := Event{}
|
|
|
|
eventData.Start = event.GetStart()
|
|
eventData.ImportedId = event.GetImportedID()
|
|
eventData.Status = event.GetStatus()
|
|
eventData.Description = event.GetDescription()
|
|
eventData.Location = event.GetLocation()
|
|
eventData.Summary = event.GetSummary()
|
|
eventData.Rrule = event.GetRRule()
|
|
eventData.Url = event.GetUrl()
|
|
eventData.Class = event.GetClass()
|
|
eventData.Sequence = event.GetSequence()
|
|
eventData.WholeDayEvent = event.GetWholeDayEvent()
|
|
|
|
return eventData
|
|
}
|