From a16390ccc139f13cf6e20b7b48188240d48de180 Mon Sep 17 00:00:00 2001 From: Derrick Hammer Date: Thu, 28 Mar 2024 17:52:01 -0400 Subject: [PATCH] refactor: add tus uploads to the pins response --- api/s5/s5.go | 35 ++++++++++++++++++++++++++++++++++- 1 file changed, 34 insertions(+), 1 deletion(-) diff --git a/api/s5/s5.go b/api/s5/s5.go index d7d2357..4f85491 100644 --- a/api/s5/s5.go +++ b/api/s5/s5.go @@ -865,7 +865,13 @@ func (s *S5API) accountPins(jc jape.Context) { return } - pins := make([]AccountPin, len(pinsRet)) + tusRet, err := s.tusHandler.Uploads(jc.Request.Context(), userID) + if err != nil { + s.sendErrorResponse(jc, NewS5Error(ErrKeyStorageOperationFailed, err)) + return + } + + pins := make([]AccountPin, len(pinsRet)+len(tusRet)) for i, pin := range pinsRet { cid, err := encoding.CIDFromHash(pin.Upload.Hash, pin.Upload.Size, types.CIDTypeRaw, types.HashTypeBlake3) @@ -886,6 +892,33 @@ func (s *S5API) accountPins(jc jape.Context) { } } + for i, tus := range tusRet { + size, err := s.tusHandler.GetUploadSize(jc.Request.Context(), tus.Hash) + if err != nil { + s.sendErrorResponse(jc, NewS5Error(ErrKeyInternalError, err)) + return + } + + cid, err := encoding.CIDFromHash(tus.Hash, uint64(size), types.CIDTypeRaw, types.HashTypeBlake3) + if err != nil { + s.sendErrorResponse(jc, NewS5Error(ErrKeyInternalError, err)) + return + } + + base64Url, err := cid.Hash.ToBase64Url() + if err != nil { + s.sendErrorResponse(jc, NewS5Error(ErrKeyInternalError, err)) + return + } + + pins[i+len(pinsRet)] = AccountPin{ + Hash: base64Url, + Size: uint64(size), + PinnedAt: tus.CreatedAt, + MimeType: tus.MimeType, + } + } + jc.Encode(&AccountPinResponse{Pins: pins}) }