mirror of
https://github.com/ProtonMail/go-proton-api.git
synced 2025-12-23 15:47:52 -05:00
feat: Add share events
This commit is contained in:
@@ -20,18 +20,32 @@ func (c *Client) GetLatestVolumeEventID(ctx context.Context, volumeID string) (s
|
||||
return res.EventID, nil
|
||||
}
|
||||
|
||||
func (c *Client) GetVolumeEvent(ctx context.Context, volumeID, eventID string) (VolumeEvent, error) {
|
||||
func (c *Client) GetLatestShareEventID(ctx context.Context, shareID string) (string, error) {
|
||||
var res struct {
|
||||
EventID string
|
||||
}
|
||||
|
||||
if err := c.do(ctx, func(r *resty.Request) (*resty.Response, error) {
|
||||
return r.SetResult(&res).Get("/drive/shares/" + shareID + "/events/latest")
|
||||
}); err != nil {
|
||||
return "", err
|
||||
}
|
||||
|
||||
return res.EventID, nil
|
||||
}
|
||||
|
||||
func (c *Client) GetVolumeEvent(ctx context.Context, volumeID, eventID string) (DriveEvent, error) {
|
||||
event, more, err := c.getVolumeEvent(ctx, volumeID, eventID)
|
||||
if err != nil {
|
||||
return VolumeEvent{}, err
|
||||
return DriveEvent{}, err
|
||||
}
|
||||
|
||||
for more {
|
||||
var next VolumeEvent
|
||||
var next DriveEvent
|
||||
|
||||
next, more, err = c.getVolumeEvent(ctx, volumeID, event.EventID)
|
||||
if err != nil {
|
||||
return VolumeEvent{}, err
|
||||
return DriveEvent{}, err
|
||||
}
|
||||
|
||||
event.Events = append(event.Events, next.Events...)
|
||||
@@ -40,9 +54,29 @@ func (c *Client) GetVolumeEvent(ctx context.Context, volumeID, eventID string) (
|
||||
return event, nil
|
||||
}
|
||||
|
||||
func (c *Client) getVolumeEvent(ctx context.Context, volumeID, eventID string) (VolumeEvent, bool, error) {
|
||||
func (c *Client) GetShareEvent(ctx context.Context, shareID, eventID string) (DriveEvent, error) {
|
||||
event, more, err := c.getShareEvent(ctx, shareID, eventID)
|
||||
if err != nil {
|
||||
return DriveEvent{}, err
|
||||
}
|
||||
|
||||
for more {
|
||||
var next DriveEvent
|
||||
|
||||
next, more, err = c.getShareEvent(ctx, shareID, event.EventID)
|
||||
if err != nil {
|
||||
return DriveEvent{}, err
|
||||
}
|
||||
|
||||
event.Events = append(event.Events, next.Events...)
|
||||
}
|
||||
|
||||
return event, nil
|
||||
}
|
||||
|
||||
func (c *Client) getVolumeEvent(ctx context.Context, volumeID, eventID string) (DriveEvent, bool, error) {
|
||||
var res struct {
|
||||
VolumeEvent
|
||||
DriveEvent
|
||||
|
||||
More Bool
|
||||
}
|
||||
@@ -50,8 +84,24 @@ func (c *Client) getVolumeEvent(ctx context.Context, volumeID, eventID string) (
|
||||
if err := c.do(ctx, func(r *resty.Request) (*resty.Response, error) {
|
||||
return r.SetResult(&res).Get("/drive/volumes/" + volumeID + "/events/" + eventID)
|
||||
}); err != nil {
|
||||
return VolumeEvent{}, false, err
|
||||
return DriveEvent{}, false, err
|
||||
}
|
||||
|
||||
return res.VolumeEvent, bool(res.More), nil
|
||||
return res.DriveEvent, bool(res.More), nil
|
||||
}
|
||||
|
||||
func (c *Client) getShareEvent(ctx context.Context, shareID, eventID string) (DriveEvent, bool, error) {
|
||||
var res struct {
|
||||
DriveEvent
|
||||
|
||||
More Bool
|
||||
}
|
||||
|
||||
if err := c.do(ctx, func(r *resty.Request) (*resty.Response, error) {
|
||||
return r.SetResult(&res).Get("/drive/shares/" + shareID + "/events/" + eventID)
|
||||
}); err != nil {
|
||||
return DriveEvent{}, false, err
|
||||
}
|
||||
|
||||
return res.DriveEvent, bool(res.More), nil
|
||||
}
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
package proton
|
||||
|
||||
type VolumeEvent struct {
|
||||
type DriveEvent struct {
|
||||
EventID string
|
||||
|
||||
Events []LinkEvent
|
||||
|
||||
Reference in New Issue
Block a user