protonmail: add ListCalendars, ListCalendarEvents
This commit is contained in:
parent
1557b45d88
commit
0b790847d9
|
@ -0,0 +1,99 @@
|
||||||
|
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 int64
|
||||||
|
LastEditTime int64
|
||||||
|
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
|
||||||
|
|
||||||
|
}
|
Loading…
Reference in New Issue