From bb8c6c7badd085f3e36c6d022e5b4f153364ab5d Mon Sep 17 00:00:00 2001 From: Mark Ferrell <major@homeonderanged.org> Date: Tue, 14 Jan 2025 07:34:16 -0800 Subject: [PATCH] feat: support for Create/Delete file revisions Extracted from fork https://github.com/henrybear327/go-proton-api --- link_file.go | 20 ++++++++++++++++++++ link_file_types.go | 4 ++++ 2 files changed, 24 insertions(+) diff --git a/link_file.go b/link_file.go index e682682..5c4a28e 100644 --- a/link_file.go +++ b/link_file.go @@ -53,3 +53,23 @@ func (c *Client) UpdateRevision(ctx context.Context, shareID, linkID, revisionID return r.SetBody(req).Put("/drive/shares/" + shareID + "/files/" + linkID + "/revisions/" + revisionID) }) } + +func (c *Client) DeleteRevision(ctx context.Context, shareID, linkID, revisionID string) error { + return c.do(ctx, func(r *resty.Request) (*resty.Response, error) { + return r.Delete("/drive/shares/" + shareID + "/files/" + linkID + "/revisions/" + revisionID) + }) +} + +func (c *Client) CreateRevision(ctx context.Context, shareID, linkID string) (CreateRevisionRes, error) { + var res struct { + Revision CreateRevisionRes + } + + if err := c.do(ctx, func(r *resty.Request) (*resty.Response, error) { + return r.SetResult(&res).Post("/drive/shares/" + shareID + "/files/" + linkID + "/revisions") + }); err != nil { + return CreateRevisionRes{}, err + } + + return res.Revision, nil +} diff --git a/link_file_types.go b/link_file_types.go index 16344e0..91e9756 100644 --- a/link_file_types.go +++ b/link_file_types.go @@ -22,6 +22,10 @@ type CreateFileRes struct { RevisionID string // Encrypted Revision ID } +type CreateRevisionRes struct { + ID string // Encrypted Revision ID +} + type UpdateRevisionReq struct { BlockList []BlockToken State RevisionState