51 lines
917 B
Go
51 lines
917 B
Go
package ical
|
|
|
|
import (
|
|
"time"
|
|
)
|
|
|
|
type CalendarEvent struct {
|
|
Id string
|
|
Summary string
|
|
Description string
|
|
Location string
|
|
URL string
|
|
CreatedAtUTC *time.Time
|
|
ModifiedAtUTC *time.Time
|
|
StartAt *time.Time
|
|
EndAt *time.Time
|
|
}
|
|
|
|
func (this *CalendarEvent) StartAtUTC() *time.Time {
|
|
return inUTC(this.StartAt)
|
|
}
|
|
|
|
func (this *CalendarEvent) EndAtUTC() *time.Time {
|
|
return inUTC(this.EndAt)
|
|
}
|
|
|
|
func (this *CalendarEvent) Serialize() string {
|
|
buffer := new(strBuffer)
|
|
return this.serializeWithBuffer(buffer)
|
|
}
|
|
|
|
func (this *CalendarEvent) ToICS() string {
|
|
return this.Serialize()
|
|
}
|
|
|
|
func (this *CalendarEvent) serializeWithBuffer(buffer *strBuffer) string {
|
|
serializer := calEventSerializer{
|
|
event: this,
|
|
buffer: buffer,
|
|
}
|
|
return serializer.serialize()
|
|
}
|
|
|
|
func inUTC(t *time.Time) *time.Time {
|
|
if t == nil {
|
|
return nil
|
|
}
|
|
|
|
tUTC := t.UTC()
|
|
return &tUTC
|
|
}
|