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