Skip to content

Commit

Permalink
update cs3apis and implement the updated share api
Browse files Browse the repository at this point in the history
  • Loading branch information
David Christofas committed May 10, 2021
1 parent 50066eb commit 5e81d88
Show file tree
Hide file tree
Showing 4 changed files with 13 additions and 84 deletions.
44 changes: 6 additions & 38 deletions internal/grpc/services/gateway/usershareprovider.go
Original file line number Diff line number Diff line change
Expand Up @@ -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")
Expand All @@ -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
}
}
Expand Down Expand Up @@ -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
Expand Down
6 changes: 4 additions & 2 deletions internal/grpc/services/usershareprovider/usershareprovider.go
Original file line number Diff line number Diff line change
Expand Up @@ -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"),
Expand All @@ -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
}
Expand Down Expand Up @@ -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"),
Expand All @@ -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
}
Original file line number Diff line number Diff line change
Expand Up @@ -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 {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -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,
},
},
}
Expand Down

0 comments on commit 5e81d88

Please sign in to comment.