Skip to content

Commit

Permalink
feat: Add share events
Browse files Browse the repository at this point in the history
  • Loading branch information
jameshoulahan committed Feb 27, 2023
1 parent 3e9d508 commit c024f24
Show file tree
Hide file tree
Showing 2 changed files with 59 additions and 9 deletions.
66 changes: 58 additions & 8 deletions event_drive.go
Original file line number Diff line number Diff line change
Expand Up @@ -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...)
Expand All @@ -40,18 +54,54 @@ 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
}

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.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.VolumeEvent, bool(res.More), nil
return res.DriveEvent, bool(res.More), nil
}
2 changes: 1 addition & 1 deletion event_drive_types.go
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package proton

type VolumeEvent struct {
type DriveEvent struct {
EventID string

Events []LinkEvent
Expand Down

0 comments on commit c024f24

Please sign in to comment.