Fixed ical-go package include
This commit is contained in:
parent
a7bbaf7c5f
commit
24f06b2da5
15 changed files with 126 additions and 56 deletions
2
go.mod
2
go.mod
|
@ -44,7 +44,7 @@ require (
|
||||||
github.com/jgautheron/goconst v0.0.0-20170703170152-9740945f5dcb
|
github.com/jgautheron/goconst v0.0.0-20170703170152-9740945f5dcb
|
||||||
github.com/labstack/echo/v4 v4.1.5
|
github.com/labstack/echo/v4 v4.1.5
|
||||||
github.com/labstack/gommon v0.2.8
|
github.com/labstack/gommon v0.2.8
|
||||||
github.com/laurent22/ical-go v0.1.0
|
github.com/laurent22/ical-go v0.1.1-0.20181107184520-7e5d6ade8eef
|
||||||
github.com/mailru/easyjson v0.0.0-20190403194419-1ea4449da983 // indirect
|
github.com/mailru/easyjson v0.0.0-20190403194419-1ea4449da983 // indirect
|
||||||
github.com/mattn/go-oci8 v0.0.0-20181130072307-052f5d97b9b6 // indirect
|
github.com/mattn/go-oci8 v0.0.0-20181130072307-052f5d97b9b6 // indirect
|
||||||
github.com/mattn/go-runewidth v0.0.4 // indirect
|
github.com/mattn/go-runewidth v0.0.4 // indirect
|
||||||
|
|
5
go.sum
5
go.sum
|
@ -27,7 +27,6 @@ github.com/cockroachdb/apd v1.1.0/go.mod h1:8Sl8LxpKi29FqWXR16WEFZRNSz3SoPzUzeMe
|
||||||
github.com/coreos/etcd v3.3.10+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE=
|
github.com/coreos/etcd v3.3.10+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE=
|
||||||
github.com/coreos/go-etcd v2.0.0+incompatible/go.mod h1:Jez6KQU2B/sWsbdaef3ED8NzMklzPG4d5KIOhIy30Tk=
|
github.com/coreos/go-etcd v2.0.0+incompatible/go.mod h1:Jez6KQU2B/sWsbdaef3ED8NzMklzPG4d5KIOhIy30Tk=
|
||||||
github.com/coreos/go-semver v0.2.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk=
|
github.com/coreos/go-semver v0.2.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk=
|
||||||
github.com/cweill/gotests v1.5.3 h1:k3t4wW/x/YNixWZJhUIn+mivmK5iV1tJVOwVYkx0UcU=
|
|
||||||
github.com/d4l3k/messagediff v1.2.1 h1:ZcAIMYsUg0EAp9X+tt8/enBE/Q8Yd5kzPynLyKptt9U=
|
github.com/d4l3k/messagediff v1.2.1 h1:ZcAIMYsUg0EAp9X+tt8/enBE/Q8Yd5kzPynLyKptt9U=
|
||||||
github.com/d4l3k/messagediff v1.2.1/go.mod h1:Oozbb1TVXFac9FtSIxHBMnBCq2qeH/2KkEQxENCrlLo=
|
github.com/d4l3k/messagediff v1.2.1/go.mod h1:Oozbb1TVXFac9FtSIxHBMnBCq2qeH/2KkEQxENCrlLo=
|
||||||
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
|
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
|
||||||
|
@ -122,8 +121,8 @@ github.com/kr/text v0.1.0 h1:45sCR5RtlFHMR4UwH9sdQ5TC8v0qDQCHnXt+kaKSTVE=
|
||||||
github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI=
|
github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI=
|
||||||
github.com/labstack/gommon v0.2.8 h1:JvRqmeZcfrHC5u6uVleB4NxxNbzx6gpbJiQknDbKQu0=
|
github.com/labstack/gommon v0.2.8 h1:JvRqmeZcfrHC5u6uVleB4NxxNbzx6gpbJiQknDbKQu0=
|
||||||
github.com/labstack/gommon v0.2.8/go.mod h1:/tj9csK2iPSBvn+3NLM9e52usepMtrd5ilFYA+wQNJ4=
|
github.com/labstack/gommon v0.2.8/go.mod h1:/tj9csK2iPSBvn+3NLM9e52usepMtrd5ilFYA+wQNJ4=
|
||||||
github.com/laurent22/ical-go v0.1.0 h1:4vZHBD3/+ne+IN+c3B+v6d9Ff8+70pzTjCWsjfDRvL0=
|
github.com/laurent22/ical-go v0.1.1-0.20181107184520-7e5d6ade8eef h1:RZnRnSID1skF35j/15KJ6hKZkdIC/teQClJK5wP5LU4=
|
||||||
github.com/laurent22/ical-go v0.1.0/go.mod h1:4LATl0uhhtytR6p9n1AlktDyIz4u2iUnWEdI3L/hXiw=
|
github.com/laurent22/ical-go v0.1.1-0.20181107184520-7e5d6ade8eef/go.mod h1:4LATl0uhhtytR6p9n1AlktDyIz4u2iUnWEdI3L/hXiw=
|
||||||
github.com/lib/pq v1.0.0 h1:X5PMW56eZitiTeO7tKzZxFCSpbFZJtkMMooicw2us9A=
|
github.com/lib/pq v1.0.0 h1:X5PMW56eZitiTeO7tKzZxFCSpbFZJtkMMooicw2us9A=
|
||||||
github.com/lib/pq v1.0.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo=
|
github.com/lib/pq v1.0.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo=
|
||||||
github.com/magiconair/properties v1.8.0 h1:LLgXmsheXeRoUOBOjtwPQCWIYqM/LU1ayDtDePerRcY=
|
github.com/magiconair/properties v1.8.0 h1:LLgXmsheXeRoUOBOjtwPQCWIYqM/LU1ayDtDePerRcY=
|
||||||
|
|
|
@ -20,7 +20,7 @@ import (
|
||||||
"code.vikunja.io/api/pkg/caldav"
|
"code.vikunja.io/api/pkg/caldav"
|
||||||
"code.vikunja.io/api/pkg/log"
|
"code.vikunja.io/api/pkg/log"
|
||||||
"code.vikunja.io/api/pkg/models"
|
"code.vikunja.io/api/pkg/models"
|
||||||
"github.com/laurent22/ical-go/ical"
|
"github.com/laurent22/ical-go"
|
||||||
"strconv"
|
"strconv"
|
||||||
"time"
|
"time"
|
||||||
)
|
)
|
||||||
|
|
21
vendor/github.com/laurent22/ical-go/LICENSE
generated
vendored
Normal file
21
vendor/github.com/laurent22/ical-go/LICENSE
generated
vendored
Normal file
|
@ -0,0 +1,21 @@
|
||||||
|
MIT License
|
||||||
|
|
||||||
|
Copyright (c) 2018 Laurent Cozic
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
in the Software without restriction, including without limitation the rights
|
||||||
|
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
copies of the Software, and to permit persons to whom the Software is
|
||||||
|
furnished to do so, subject to the following conditions:
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice shall be included in all
|
||||||
|
copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||||
|
SOFTWARE.
|
25
vendor/github.com/laurent22/ical-go/README.md
generated
vendored
Normal file
25
vendor/github.com/laurent22/ical-go/README.md
generated
vendored
Normal file
|
@ -0,0 +1,25 @@
|
||||||
|
# ical-go
|
||||||
|
|
||||||
|
iCal package for Go (Golang)
|
||||||
|
|
||||||
|
## Installation
|
||||||
|
|
||||||
|
go get github.com/laurent22/ical-go
|
||||||
|
|
||||||
|
## Status
|
||||||
|
|
||||||
|
Currently, the package doesn't support the full iCal specification. It's still a work in progress towards that goal.
|
||||||
|
|
||||||
|
The most useful function in the package is:
|
||||||
|
|
||||||
|
```go
|
||||||
|
func ParseCalendar(data string) (*Node, error)
|
||||||
|
```
|
||||||
|
Parses a VCALENDAR string, unwrap and unfold lines, etc. and put all this into a usable structure (a collection of `Node`s with name, value, type, etc.).
|
||||||
|
|
||||||
|
With the `Node` in hand, you can use several of its functions to, e.g., find specific parameters, children, etc.
|
||||||
|
|
||||||
|
|
||||||
|
## License
|
||||||
|
|
||||||
|
MIT
|
|
@ -7,7 +7,7 @@ type Calendar struct {
|
||||||
func (this *Calendar) Serialize() string {
|
func (this *Calendar) Serialize() string {
|
||||||
serializer := calSerializer{
|
serializer := calSerializer{
|
||||||
calendar: this,
|
calendar: this,
|
||||||
buffer: new(strBuffer),
|
buffer: new(strBuffer),
|
||||||
}
|
}
|
||||||
return serializer.serialize()
|
return serializer.serialize()
|
||||||
}
|
}
|
|
@ -5,14 +5,15 @@ import (
|
||||||
)
|
)
|
||||||
|
|
||||||
type CalendarEvent struct {
|
type CalendarEvent struct {
|
||||||
Id string
|
Id string
|
||||||
Summary string
|
Summary string
|
||||||
Description string
|
Description string
|
||||||
Location string
|
Location string
|
||||||
CreatedAtUTC *time.Time
|
URL string
|
||||||
|
CreatedAtUTC *time.Time
|
||||||
ModifiedAtUTC *time.Time
|
ModifiedAtUTC *time.Time
|
||||||
StartAt *time.Time
|
StartAt *time.Time
|
||||||
EndAt *time.Time
|
EndAt *time.Time
|
||||||
}
|
}
|
||||||
|
|
||||||
func (this *CalendarEvent) StartAtUTC() *time.Time {
|
func (this *CalendarEvent) StartAtUTC() *time.Time {
|
||||||
|
@ -34,7 +35,7 @@ func (this *CalendarEvent) ToICS() string {
|
||||||
|
|
||||||
func (this *CalendarEvent) serializeWithBuffer(buffer *strBuffer) string {
|
func (this *CalendarEvent) serializeWithBuffer(buffer *strBuffer) string {
|
||||||
serializer := calEventSerializer{
|
serializer := calEventSerializer{
|
||||||
event: this,
|
event: this,
|
||||||
buffer: buffer,
|
buffer: buffer,
|
||||||
}
|
}
|
||||||
return serializer.serialize()
|
return serializer.serialize()
|
9
vendor/github.com/laurent22/ical-go/ical/properties.go
generated
vendored
9
vendor/github.com/laurent22/ical-go/ical/properties.go
generated
vendored
|
@ -1,9 +0,0 @@
|
||||||
package ical
|
|
||||||
|
|
||||||
const (
|
|
||||||
VCALENDAR = "VCALENDAR"
|
|
||||||
VEVENT = "VEVENT"
|
|
||||||
DTSTART = "DTSTART"
|
|
||||||
DTEND = "DTEND"
|
|
||||||
DURATION = "DURATION"
|
|
||||||
)
|
|
|
@ -1,18 +1,18 @@
|
||||||
package ical
|
package ical
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
"bytes"
|
||||||
"bytes"
|
"fmt"
|
||||||
)
|
)
|
||||||
|
|
||||||
type strBuffer struct {
|
type strBuffer struct {
|
||||||
buffer bytes.Buffer
|
buffer bytes.Buffer
|
||||||
}
|
}
|
||||||
|
|
||||||
func (b *strBuffer) Write(format string, elem ...interface{}) {
|
func (b *strBuffer) Write(format string, elem ...interface{}) {
|
||||||
b.buffer.WriteString(fmt.Sprintf(format, elem...))
|
b.buffer.WriteString(fmt.Sprintf(format, elem...))
|
||||||
}
|
}
|
||||||
|
|
||||||
func (b *strBuffer) String() string {
|
func (b *strBuffer) String() string {
|
||||||
return b.buffer.String()
|
return b.buffer.String()
|
||||||
}
|
}
|
|
@ -1,17 +1,17 @@
|
||||||
package ical
|
package ical
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"time"
|
|
||||||
"regexp"
|
"regexp"
|
||||||
"strconv"
|
"strconv"
|
||||||
|
"time"
|
||||||
)
|
)
|
||||||
|
|
||||||
type Node struct {
|
type Node struct {
|
||||||
Name string
|
Name string
|
||||||
Value string
|
Value string
|
||||||
Type int // 1 = Object, 0 = Name/Value
|
Type int // 1 = Object, 0 = Name/Value
|
||||||
Parameters map[string]string
|
Parameters map[string]string
|
||||||
Children []*Node
|
Children []*Node
|
||||||
}
|
}
|
||||||
|
|
||||||
func (this *Node) ChildrenByName(name string) []*Node {
|
func (this *Node) ChildrenByName(name string) []*Node {
|
||||||
|
@ -44,19 +44,28 @@ func (this *Node) PropString(name string, defaultValue string) string {
|
||||||
|
|
||||||
func (this *Node) PropDate(name string, defaultValue time.Time) time.Time {
|
func (this *Node) PropDate(name string, defaultValue time.Time) time.Time {
|
||||||
node := this.ChildByName(name)
|
node := this.ChildByName(name)
|
||||||
if node == nil { return defaultValue }
|
if node == nil {
|
||||||
|
return defaultValue
|
||||||
|
}
|
||||||
tzid := node.Parameter("TZID", "")
|
tzid := node.Parameter("TZID", "")
|
||||||
|
allDay := node.Parameter("VALUE", "") == "DATE"
|
||||||
var output time.Time
|
var output time.Time
|
||||||
var err error
|
var err error
|
||||||
if tzid != "" {
|
if tzid != "" {
|
||||||
loc, err := time.LoadLocation(tzid)
|
loc, err := time.LoadLocation(tzid)
|
||||||
if err != nil { panic(err) }
|
if err != nil {
|
||||||
|
panic(err)
|
||||||
|
}
|
||||||
output, err = time.ParseInLocation("20060102T150405", node.Value, loc)
|
output, err = time.ParseInLocation("20060102T150405", node.Value, loc)
|
||||||
|
} else if allDay {
|
||||||
|
output, err = time.Parse("20060102", node.Value)
|
||||||
} else {
|
} else {
|
||||||
output, err = time.Parse("20060102T150405Z", node.Value)
|
output, err = time.Parse("20060102T150405Z", node.Value)
|
||||||
}
|
}
|
||||||
|
|
||||||
if err != nil { panic(err) }
|
if err != nil {
|
||||||
|
panic(err)
|
||||||
|
}
|
||||||
return output
|
return output
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -86,29 +95,37 @@ func (this *Node) PropDuration(name string) time.Duration {
|
||||||
min := strToDuration(matches[2])
|
min := strToDuration(matches[2])
|
||||||
sec := strToDuration(matches[3])
|
sec := strToDuration(matches[3])
|
||||||
|
|
||||||
return hours * time.Hour + min * time.Minute + sec * time.Second
|
return hours*time.Hour + min*time.Minute + sec*time.Second
|
||||||
}
|
}
|
||||||
|
|
||||||
func (this *Node) PropInt(name string, defaultValue int) int {
|
func (this *Node) PropInt(name string, defaultValue int) int {
|
||||||
n := this.PropString(name, "")
|
n := this.PropString(name, "")
|
||||||
if n == "" { return defaultValue }
|
if n == "" {
|
||||||
|
return defaultValue
|
||||||
|
}
|
||||||
output, err := strconv.Atoi(n)
|
output, err := strconv.Atoi(n)
|
||||||
if err != nil { panic(err) }
|
if err != nil {
|
||||||
|
panic(err)
|
||||||
|
}
|
||||||
return output
|
return output
|
||||||
}
|
}
|
||||||
|
|
||||||
func (this *Node) DigProperty(propPath... string) (string, bool) {
|
func (this *Node) DigProperty(propPath ...string) (string, bool) {
|
||||||
return this.dig("prop", propPath...)
|
return this.dig("prop", propPath...)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (this *Node) Parameter(name string, defaultValue string) string {
|
func (this *Node) Parameter(name string, defaultValue string) string {
|
||||||
if len(this.Parameters) <= 0 { return defaultValue }
|
if len(this.Parameters) <= 0 {
|
||||||
|
return defaultValue
|
||||||
|
}
|
||||||
v, ok := this.Parameters[name]
|
v, ok := this.Parameters[name]
|
||||||
if !ok { return defaultValue }
|
if !ok {
|
||||||
|
return defaultValue
|
||||||
|
}
|
||||||
return v
|
return v
|
||||||
}
|
}
|
||||||
|
|
||||||
func (this *Node) DigParameter(paramPath... string) (string, bool) {
|
func (this *Node) DigParameter(paramPath ...string) (string, bool) {
|
||||||
return this.dig("param", paramPath...)
|
return this.dig("param", paramPath...)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -120,7 +137,7 @@ func (this *Node) DigParameter(paramPath... string) (string, bool) {
|
||||||
// Example:
|
// Example:
|
||||||
// dig("param", "VCALENDAR", "VEVENT", "DTEND", "TYPE") -> It will search for "VCALENDAR" node,
|
// dig("param", "VCALENDAR", "VEVENT", "DTEND", "TYPE") -> It will search for "VCALENDAR" node,
|
||||||
// then a "VEVENT" node, then a "DTEND" note, then finally the "TYPE" param.
|
// then a "VEVENT" node, then a "DTEND" note, then finally the "TYPE" param.
|
||||||
func (this *Node) dig(valueType string, valuePath... string) (string, bool) {
|
func (this *Node) dig(valueType string, valuePath ...string) (string, bool) {
|
||||||
current := this
|
current := this
|
||||||
lastIndex := len(valuePath) - 1
|
lastIndex := len(valuePath) - 1
|
||||||
for _, v := range valuePath[:lastIndex] {
|
for _, v := range valuePath[:lastIndex] {
|
|
@ -1,8 +1,8 @@
|
||||||
package ical
|
package ical
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"log"
|
|
||||||
"errors"
|
"errors"
|
||||||
|
"log"
|
||||||
"regexp"
|
"regexp"
|
||||||
"strings"
|
"strings"
|
||||||
)
|
)
|
||||||
|
@ -10,7 +10,7 @@ import (
|
||||||
func ParseCalendar(data string) (*Node, error) {
|
func ParseCalendar(data string) (*Node, error) {
|
||||||
r := regexp.MustCompile("([\r|\t| ]*\n[\r|\t| ]*)+")
|
r := regexp.MustCompile("([\r|\t| ]*\n[\r|\t| ]*)+")
|
||||||
lines := r.Split(strings.TrimSpace(data), -1)
|
lines := r.Split(strings.TrimSpace(data), -1)
|
||||||
node, _, err, _ := parseCalendarNode(lines, 0)
|
node, _, err, _ := parseCalendarNode(lines, 0)
|
||||||
|
|
||||||
return node, err
|
return node, err
|
||||||
}
|
}
|
||||||
|
@ -30,11 +30,13 @@ func parseCalendarNode(lines []string, lineIndex int) (*Node, bool, error, int)
|
||||||
parameters = make(map[string]string)
|
parameters = make(map[string]string)
|
||||||
for i := 1; i < len(splitted); i++ {
|
for i := 1; i < len(splitted); i++ {
|
||||||
p := strings.Split(splitted[i], "=")
|
p := strings.Split(splitted[i], "=")
|
||||||
if len(p) != 2 { panic("Invalid parameter format: " + name) }
|
if len(p) != 2 {
|
||||||
|
panic("Invalid parameter format: " + name)
|
||||||
|
}
|
||||||
parameters[p[0]] = p[1]
|
parameters[p[0]] = p[1]
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
value := line[colonIndex+1:len(line)]
|
value := line[colonIndex+1 : len(line)]
|
||||||
|
|
||||||
if name == "BEGIN" {
|
if name == "BEGIN" {
|
||||||
node := new(Node)
|
node := new(Node)
|
||||||
|
@ -76,7 +78,7 @@ func parseCalendarNode(lines []string, lineIndex int) (*Node, bool, error, int)
|
||||||
func parseTextType(lines []string, lineIndex int) (string, int) {
|
func parseTextType(lines []string, lineIndex int) (string, int) {
|
||||||
line := lines[lineIndex]
|
line := lines[lineIndex]
|
||||||
colonIndex := strings.Index(line, ":")
|
colonIndex := strings.Index(line, ":")
|
||||||
output := strings.TrimSpace(line[colonIndex+1:len(line)])
|
output := strings.TrimSpace(line[colonIndex+1 : len(line)])
|
||||||
lineIndex++
|
lineIndex++
|
||||||
for {
|
for {
|
||||||
line := lines[lineIndex]
|
line := lines[lineIndex]
|
9
vendor/github.com/laurent22/ical-go/properties.go
generated
vendored
Normal file
9
vendor/github.com/laurent22/ical-go/properties.go
generated
vendored
Normal file
|
@ -0,0 +1,9 @@
|
||||||
|
package ical
|
||||||
|
|
||||||
|
const (
|
||||||
|
VCALENDAR = "VCALENDAR"
|
||||||
|
VEVENT = "VEVENT"
|
||||||
|
DTSTART = "DTSTART"
|
||||||
|
DTEND = "DTEND"
|
||||||
|
DURATION = "DURATION"
|
||||||
|
)
|
|
@ -1,13 +1,13 @@
|
||||||
package ical
|
package ical
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"time"
|
"strings"
|
||||||
"strings"
|
"time"
|
||||||
)
|
)
|
||||||
|
|
||||||
type calSerializer struct {
|
type calSerializer struct {
|
||||||
calendar *Calendar
|
calendar *Calendar
|
||||||
buffer *strBuffer
|
buffer *strBuffer
|
||||||
}
|
}
|
||||||
|
|
||||||
func (this *calSerializer) serialize() string {
|
func (this *calSerializer) serialize() string {
|
||||||
|
@ -41,7 +41,7 @@ func (this *calSerializer) items() {
|
||||||
}
|
}
|
||||||
|
|
||||||
type calEventSerializer struct {
|
type calEventSerializer struct {
|
||||||
event *CalendarEvent
|
event *CalendarEvent
|
||||||
buffer *strBuffer
|
buffer *strBuffer
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -62,8 +62,9 @@ func (this *calEventSerializer) serializeEvent() {
|
||||||
this.dtstart()
|
this.dtstart()
|
||||||
this.dtend()
|
this.dtend()
|
||||||
this.summary()
|
this.summary()
|
||||||
this.description()
|
this.description()
|
||||||
this.location()
|
this.location()
|
||||||
|
this.url()
|
||||||
this.end()
|
this.end()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -91,6 +92,10 @@ func (this *calEventSerializer) location() {
|
||||||
this.serializeStringProp("LOCATION", this.event.Location)
|
this.serializeStringProp("LOCATION", this.event.Location)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (this *calEventSerializer) url() {
|
||||||
|
this.serializeStringProp("URL", this.event.URL)
|
||||||
|
}
|
||||||
|
|
||||||
func (this *calEventSerializer) dtstart() {
|
func (this *calEventSerializer) dtstart() {
|
||||||
this.serializeTimeProp("DTSTART", this.event.StartAtUTC())
|
this.serializeTimeProp("DTSTART", this.event.StartAtUTC())
|
||||||
}
|
}
|
4
vendor/modules.txt
vendored
4
vendor/modules.txt
vendored
|
@ -88,8 +88,8 @@ github.com/labstack/gommon/log
|
||||||
github.com/labstack/gommon/color
|
github.com/labstack/gommon/color
|
||||||
github.com/labstack/gommon/bytes
|
github.com/labstack/gommon/bytes
|
||||||
github.com/labstack/gommon/random
|
github.com/labstack/gommon/random
|
||||||
# github.com/laurent22/ical-go v0.1.0
|
# github.com/laurent22/ical-go v0.1.1-0.20181107184520-7e5d6ade8eef
|
||||||
github.com/laurent22/ical-go/ical
|
github.com/laurent22/ical-go
|
||||||
# github.com/magiconair/properties v1.8.0
|
# github.com/magiconair/properties v1.8.0
|
||||||
github.com/magiconair/properties
|
github.com/magiconair/properties
|
||||||
# github.com/mailru/easyjson v0.0.0-20190403194419-1ea4449da983
|
# github.com/mailru/easyjson v0.0.0-20190403194419-1ea4449da983
|
||||||
|
|
Loading…
Reference in a new issue