100 lines
2.0 KiB
Go
100 lines
2.0 KiB
Go
package protonmail
|
|
|
|
import (
|
|
"net/http"
|
|
"net/url"
|
|
"strconv"
|
|
)
|
|
|
|
type CalendarFlags int
|
|
|
|
type Calendar struct {
|
|
ID string
|
|
Name string
|
|
Description string
|
|
Color string
|
|
Display int
|
|
Flags CalendarFlags
|
|
}
|
|
|
|
type CalendarEventPermissions int
|
|
|
|
type CalendarEvent struct {
|
|
ID string
|
|
CalendarID string
|
|
CalendarKeyPacket string
|
|
CreateTime Timestamp
|
|
LastEditTime Timestamp
|
|
Author string
|
|
Permissions CalendarEventPermissions
|
|
SharedKeyPacket string
|
|
SharedEvents []CalendarEventCard
|
|
CalendarEvents interface{}
|
|
PersonalEvent []CalendarEventCard
|
|
}
|
|
|
|
type CalendarEventCardType int
|
|
|
|
type CalendarEventCard struct {
|
|
Type CalendarEventCardType
|
|
Data string
|
|
Signature string
|
|
MemberID string
|
|
}
|
|
|
|
func (c *Client) ListCalendars(page, pageSize int) ([]*Calendar, error) {
|
|
v := url.Values{}
|
|
v.Set("Page", strconv.Itoa(page))
|
|
if pageSize > 0 {
|
|
v.Set("PageSize", strconv.Itoa(pageSize))
|
|
}
|
|
|
|
req, err := c.newRequest(http.MethodGet, "/calendars?"+v.Encode(), nil)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
var respData struct {
|
|
resp
|
|
Calendars []*Calendar
|
|
}
|
|
if err := c.doJSON(req, &respData); err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
return respData.Calendars, nil
|
|
}
|
|
|
|
type CalendarEventFilter struct {
|
|
Start, End int64
|
|
Timezone string
|
|
Page, PageSize int
|
|
}
|
|
|
|
func (c *Client) ListCalendarEvents(calendarID string, filter *CalendarEventFilter) ([]*CalendarEvent, error) {
|
|
v := url.Values{}
|
|
v.Set("Start", strconv.FormatInt(filter.Start, 10))
|
|
v.Set("End", strconv.FormatInt(filter.End, 10))
|
|
v.Set("Timezone", filter.Timezone)
|
|
v.Set("Page", strconv.Itoa(filter.Page))
|
|
if filter.PageSize > 0 {
|
|
v.Set("PageSize", strconv.Itoa(filter.PageSize))
|
|
}
|
|
|
|
req, err := c.newRequest(http.MethodGet, "/calendars/"+calendarID+"/events?"+v.Encode(), nil)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
var respData struct {
|
|
resp
|
|
Events []*CalendarEvent
|
|
}
|
|
if err := c.doJSON(req, &respData); err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
return respData.Events, nil
|
|
|
|
}
|