The basic types related to queries and filtering are missing some features specified in the RFC (as also noted in the TODO comments). This adds several of the missing elements, working towards being able to handle all RFC-compliant queries. The work is not fully done, e.g. the collation for text-match is still not handled, but it's getting pretty close.
72 lines
1.1 KiB
Go
72 lines
1.1 KiB
Go
// Package caldav provides a client and server CalDAV implementation.
|
|
//
|
|
// CalDAV is defined in RFC 4791.
|
|
package caldav
|
|
|
|
import (
|
|
"time"
|
|
|
|
"github.com/emersion/go-ical"
|
|
)
|
|
|
|
type Calendar struct {
|
|
Path string
|
|
Name string
|
|
Description string
|
|
MaxResourceSize int64
|
|
}
|
|
|
|
type CalendarCompRequest struct {
|
|
Name string
|
|
|
|
AllProps bool
|
|
Props []string
|
|
|
|
AllComps bool
|
|
Comps []CalendarCompRequest
|
|
}
|
|
|
|
type CompFilter struct {
|
|
Name string
|
|
IsNotDefined bool
|
|
Start, End time.Time
|
|
Props []PropFilter
|
|
Comps []CompFilter
|
|
}
|
|
|
|
type ParamFilter struct {
|
|
Name string
|
|
IsNotDefined bool
|
|
TextMatch *TextMatch
|
|
}
|
|
|
|
type PropFilter struct {
|
|
Name string
|
|
IsNotDefined bool
|
|
Start, End time.Time
|
|
TextMatch *TextMatch
|
|
ParamFilter []ParamFilter
|
|
}
|
|
|
|
type TextMatch struct {
|
|
Text string
|
|
NegateCondition bool
|
|
}
|
|
|
|
type CalendarQuery struct {
|
|
CompRequest CalendarCompRequest
|
|
CompFilter CompFilter
|
|
}
|
|
|
|
type CalendarMultiGet struct {
|
|
Paths []string
|
|
CompRequest CalendarCompRequest
|
|
}
|
|
|
|
type CalendarObject struct {
|
|
Path string
|
|
ModTime time.Time
|
|
ETag string
|
|
Data *ical.Calendar
|
|
}
|