diff --git a/internal/grpc/services/gateway/usershareprovider.go b/internal/grpc/services/gateway/usershareprovider.go index 12cfe3df552..920518473de 100644 --- a/internal/grpc/services/gateway/usershareprovider.go +++ b/internal/grpc/services/gateway/usershareprovider.go @@ -196,23 +196,9 @@ func (s *svc) UpdateShare(ctx context.Context, req *collaboration.UpdateShareReq // TODO(labkode): if both commits are enabled they could be done concurrently. if s.c.CommitShareToStorageGrant { - getShareReq := &collaboration.GetShareRequest{ - Ref: req.Ref, - } - getShareRes, err := c.GetShare(ctx, getShareReq) - if err != nil { - return nil, errors.Wrap(err, "gateway: error calling GetShare") - } - - if getShareRes.Status.Code != rpc.Code_CODE_OK { - return &collaboration.UpdateShareResponse{ - Status: status.NewInternal(ctx, status.NewErrorFromCode(getShareRes.Status.Code, "gateway"), - "error getting share when committing to the share"), - }, nil - } - updateGrantStatus, err := s.updateGrant(ctx, getShareRes.GetShare().GetResourceId(), - getShareRes.GetShare().GetGrantee(), - getShareRes.GetShare().GetPermissions().GetPermissions()) + updateGrantStatus, err := s.updateGrant(ctx, res.GetShare().GetResourceId(), + res.GetShare().GetGrantee(), + res.GetShare().GetPermissions().GetPermissions()) if err != nil { return nil, errors.Wrap(err, "gateway: error calling updateGrant") @@ -221,6 +207,7 @@ func (s *svc) UpdateShare(ctx context.Context, req *collaboration.UpdateShareReq if updateGrantStatus.Code != rpc.Code_CODE_OK { return &collaboration.UpdateShareResponse{ Status: updateGrantStatus, + Share: res.Share, }, nil } } @@ -309,33 +296,14 @@ func (s *svc) UpdateReceivedShare(ctx context.Context, req *collaboration.Update // share display name and storage filename. if req.Field.GetState() != collaboration.ShareState_SHARE_STATE_INVALID { if req.Field.GetState() == collaboration.ShareState_SHARE_STATE_ACCEPTED { - getShareReq := &collaboration.GetReceivedShareRequest{Ref: req.Ref} - getShareRes, err := s.GetReceivedShare(ctx, getShareReq) - if err != nil { - log.Err(err).Msg("gateway: error calling GetReceivedShare") - return &collaboration.UpdateReceivedShareResponse{ - Status: &rpc.Status{ - Code: rpc.Code_CODE_INTERNAL, - }, - }, nil - } - - if getShareRes.Status.Code != rpc.Code_CODE_OK { - log.Error().Msg("gateway: error calling GetReceivedShare") - return &collaboration.UpdateReceivedShareResponse{ - Status: &rpc.Status{ - Code: rpc.Code_CODE_INTERNAL, - }, - }, nil - } - - share := getShareRes.Share + share := res.Share if share == nil { panic("gateway: error updating a received share: the share is nil") } createRefStatus, err := s.createReference(ctx, share.Share.ResourceId) return &collaboration.UpdateReceivedShareResponse{ Status: createRefStatus, + Share: share, }, err } else if req.Field.GetState() == collaboration.ShareState_SHARE_STATE_REJECTED { // Nothing more to do, return the original result diff --git a/internal/grpc/services/usershareprovider/usershareprovider.go b/internal/grpc/services/usershareprovider/usershareprovider.go index 0e8521d9000..a4997d405bc 100644 --- a/internal/grpc/services/usershareprovider/usershareprovider.go +++ b/internal/grpc/services/usershareprovider/usershareprovider.go @@ -172,7 +172,7 @@ func (s *service) ListShares(ctx context.Context, req *collaboration.ListSharesR } func (s *service) UpdateShare(ctx context.Context, req *collaboration.UpdateShareRequest) (*collaboration.UpdateShareResponse, error) { - _, err := s.sm.UpdateShare(ctx, req.Ref, req.Field.GetPermissions()) // TODO(labkode): check what to update + share, err := s.sm.UpdateShare(ctx, req.Ref, req.Field.GetPermissions()) // TODO(labkode): check what to update if err != nil { return &collaboration.UpdateShareResponse{ Status: status.NewInternal(ctx, err, "error updating share"), @@ -181,6 +181,7 @@ func (s *service) UpdateShare(ctx context.Context, req *collaboration.UpdateShar res := &collaboration.UpdateShareResponse{ Status: status.NewOK(ctx), + Share: share, } return res, nil } @@ -219,7 +220,7 @@ func (s *service) GetReceivedShare(ctx context.Context, req *collaboration.GetRe } func (s *service) UpdateReceivedShare(ctx context.Context, req *collaboration.UpdateReceivedShareRequest) (*collaboration.UpdateReceivedShareResponse, error) { - _, err := s.sm.UpdateReceivedShare(ctx, req.Ref, req.Field) // TODO(labkode): check what to update + share, err := s.sm.UpdateReceivedShare(ctx, req.Ref, req.Field) // TODO(labkode): check what to update if err != nil { return &collaboration.UpdateReceivedShareResponse{ Status: status.NewInternal(ctx, err, "error updating received share"), @@ -228,6 +229,7 @@ func (s *service) UpdateReceivedShare(ctx context.Context, req *collaboration.Up res := &collaboration.UpdateReceivedShareResponse{ Status: status.NewOK(ctx), + Share: share, } return res, nil } diff --git a/internal/http/services/owncloud/ocs/handlers/apps/sharing/shares/pending.go b/internal/http/services/owncloud/ocs/handlers/apps/sharing/shares/pending.go index ab014e14b96..4a7d06684a0 100644 --- a/internal/http/services/owncloud/ocs/handlers/apps/sharing/shares/pending.go +++ b/internal/http/services/owncloud/ocs/handlers/apps/sharing/shares/pending.go @@ -80,24 +80,7 @@ func (h *Handler) updateReceivedShare(w http.ResponseWriter, r *http.Request, sh return } - getRes, err := client.GetReceivedShare(ctx, &collaboration.GetReceivedShareRequest{ - Ref: ref, - }) - if err != nil { - response.WriteOCSError(w, r, response.MetaServerError.StatusCode, "grpc get received share request failed", err) - return - } - - if getRes.Status.Code != rpc.Code_CODE_OK { - if getRes.Status.Code == rpc.Code_CODE_NOT_FOUND { - response.WriteOCSError(w, r, response.MetaNotFound.StatusCode, "not found", nil) - return - } - response.WriteOCSError(w, r, response.MetaServerError.StatusCode, "grpc get share request failed", errors.Errorf("code: %d, message: %s", getRes.Status.Code, getRes.Status.Message)) - return - } - - rs := getRes.Share + rs := shareRes.GetShare() info, status, err := h.getResourceInfoByID(ctx, client, rs.Share.ResourceId) if err != nil || status.Code != rpc.Code_CODE_OK { diff --git a/internal/http/services/owncloud/ocs/handlers/apps/sharing/shares/shares.go b/internal/http/services/owncloud/ocs/handlers/apps/sharing/shares/shares.go index 62e43748663..0f137dba7fb 100644 --- a/internal/http/services/owncloud/ocs/handlers/apps/sharing/shares/shares.go +++ b/internal/http/services/owncloud/ocs/handlers/apps/sharing/shares/shares.go @@ -505,31 +505,7 @@ func (h *Handler) updateShare(w http.ResponseWriter, r *http.Request, shareID st return } - gReq := &collaboration.GetShareRequest{ - Ref: &collaboration.ShareReference{ - Spec: &collaboration.ShareReference_Id{ - Id: &collaboration.ShareId{ - OpaqueId: shareID, - }, - }, - }, - } - gRes, err := client.GetShare(ctx, gReq) - if err != nil { - response.WriteOCSError(w, r, response.MetaServerError.StatusCode, "error sending a grpc get share request", err) - return - } - - if gRes.Status.Code != rpc.Code_CODE_OK { - if gRes.Status.Code == rpc.Code_CODE_NOT_FOUND { - response.WriteOCSError(w, r, response.MetaNotFound.StatusCode, "not found", nil) - return - } - response.WriteOCSError(w, r, response.MetaServerError.StatusCode, "grpc get share request failed", err) - return - } - - share, err := conversions.CS3Share2ShareData(ctx, gRes.Share) + share, err := conversions.CS3Share2ShareData(ctx, uRes.Share) if err != nil { response.WriteOCSError(w, r, response.MetaServerError.StatusCode, "error mapping share data", err) return @@ -538,7 +514,7 @@ func (h *Handler) updateShare(w http.ResponseWriter, r *http.Request, shareID st statReq := provider.StatRequest{ Ref: &provider.Reference{ Spec: &provider.Reference_Id{ - Id: gRes.Share.ResourceId, + Id: uRes.Share.ResourceId, }, }, }