Skip to content
This repository was archived by the owner on Jul 16, 2024. It is now read-only.

Commit f664db9

Browse files
gmgigi96vascoguita
authored andcommitted
Add description to public links + internal public links (cs3org#3305)
* use update go cs3apis (temporary) * Add description in db public link * add description in the sql driver * update go cs3apis * add description in xml response for public links * create and update a public link with description * hide tags by description in sql driver * update cs3apis * add description during creation * updated cli cmd for public share description * fix linting * fix query to hide tags * add changelog * add option to hide public shares * updated go-cs3apis
1 parent caf6666 commit f664db9

File tree

14 files changed

+86
-35
lines changed

14 files changed

+86
-35
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
Enhancement: Add description to public link
2+
3+
https://github.com/cs3org/reva/pull/3305

cmd/reva/public-share-create.go

+7-3
Original file line numberDiff line numberDiff line change
@@ -35,9 +35,11 @@ func publicShareCreateCommand() *command {
3535
cmd.Description = func() string { return "create a public share" }
3636
cmd.Usage = func() string { return "Usage: public-share-create [-flags] <path>" }
3737
rol := cmd.String("rol", "viewer", "the permission for the share (viewer or editor)")
38+
description := cmd.String("description", "", "the description for the share")
39+
internal := cmd.Bool("internal", false, "mark the public share as internal")
3840

3941
cmd.ResetFlags = func() {
40-
*rol = "viewer"
42+
*rol, *description, *internal = "viewer", "", false
4143
}
4244

4345
cmd.Action = func(w ...io.Writer) error {
@@ -78,6 +80,8 @@ func publicShareCreateCommand() *command {
7880
shareRequest := &link.CreatePublicShareRequest{
7981
ResourceInfo: res.Info,
8082
Grant: grant,
83+
Description: *description,
84+
Internal: *internal,
8185
}
8286

8387
shareRes, err := client.CreatePublicShare(ctx, shareRequest)
@@ -91,11 +95,11 @@ func publicShareCreateCommand() *command {
9195

9296
t := table.NewWriter()
9397
t.SetOutputMirror(os.Stdout)
94-
t.AppendHeader(table.Row{"#", "Owner.Idp", "Owner.OpaqueId", "ResourceId", "Permissions", "Token", "Expiration", "Created", "Updated"})
98+
t.AppendHeader(table.Row{"#", "Owner.Idp", "Owner.OpaqueId", "ResourceId", "Permissions", "Token", "Expiration", "Created", "Updated", "Description"})
9599

96100
s := shareRes.Share
97101
t.AppendRows([]table.Row{
98-
{s.Id.OpaqueId, s.Owner.Idp, s.Owner.OpaqueId, s.ResourceId.String(), s.Permissions.String(), s.Token, s.Expiration.String(), time.Unix(int64(s.Ctime.Seconds), 0), time.Unix(int64(s.Mtime.Seconds), 0)},
102+
{s.Id.OpaqueId, s.Owner.Idp, s.Owner.OpaqueId, s.ResourceId.String(), s.Permissions.String(), s.Token, s.Expiration.String(), time.Unix(int64(s.Ctime.Seconds), 0), time.Unix(int64(s.Mtime.Seconds), 0), s.Description},
99103
})
100104
t.Render()
101105

cmd/reva/public-share-list.go

+2-2
Original file line numberDiff line numberDiff line change
@@ -76,11 +76,11 @@ func publicShareListCommand() *command {
7676
if len(w) == 0 {
7777
t := table.NewWriter()
7878
t.SetOutputMirror(os.Stdout)
79-
t.AppendHeader(table.Row{"#", "Owner.Idp", "Owner.OpaqueId", "ResourceId", "Permissions", "Token", "Expiration", "Created", "Updated"})
79+
t.AppendHeader(table.Row{"#", "Owner.Idp", "Owner.OpaqueId", "ResourceId", "Permissions", "Token", "Expiration", "Created", "Updated", "Description"})
8080

8181
for _, s := range shareRes.Share {
8282
t.AppendRows([]table.Row{
83-
{s.Id.OpaqueId, s.Owner.Idp, s.Owner.OpaqueId, s.ResourceId.String(), s.Permissions.String(), s.Token, s.Expiration.String(), time.Unix(int64(s.Ctime.Seconds), 0), time.Unix(int64(s.Mtime.Seconds), 0)},
83+
{s.Id.OpaqueId, s.Owner.Idp, s.Owner.OpaqueId, s.ResourceId.String(), s.Permissions.String(), s.Token, s.Expiration.String(), time.Unix(int64(s.Ctime.Seconds), 0), time.Unix(int64(s.Mtime.Seconds), 0), s.Description},
8484
})
8585
}
8686
t.Render()

cmd/reva/public-share-update.go

+29-8
Original file line numberDiff line numberDiff line change
@@ -32,9 +32,10 @@ func publicShareUpdateCommand() *command {
3232
cmd.Description = func() string { return "update a public share" }
3333
cmd.Usage = func() string { return "Usage: public-share-update [-flags] <share_id>" }
3434
rol := cmd.String("rol", "viewer", "the permission for the share (viewer or editor)")
35+
description := cmd.String("description", "", "the description for the share")
3536

3637
cmd.ResetFlags = func() {
37-
*rol = "viewer"
38+
*rol, *description = "viewer", ""
3839
}
3940
cmd.Action = func(w ...io.Writer) error {
4041
if cmd.NArg() < 1 {
@@ -59,7 +60,9 @@ func publicShareUpdateCommand() *command {
5960
return err
6061
}
6162

62-
shareRequest := &link.UpdatePublicShareRequest{
63+
var updates []*link.UpdatePublicShareRequest
64+
65+
updates = append(updates, &link.UpdatePublicShareRequest{
6366
Ref: &link.PublicShareReference{
6467
Spec: &link.PublicShareReference_Id{
6568
Id: &link.PublicShareId{
@@ -75,15 +78,33 @@ func publicShareUpdateCommand() *command {
7578
},
7679
},
7780
},
78-
}
81+
})
7982

80-
shareRes, err := shareClient.UpdatePublicShare(ctx, shareRequest)
81-
if err != nil {
82-
return err
83+
if *description != "" {
84+
updates = append(updates, &link.UpdatePublicShareRequest{
85+
Ref: &link.PublicShareReference{
86+
Spec: &link.PublicShareReference_Id{
87+
Id: &link.PublicShareId{
88+
OpaqueId: id,
89+
},
90+
},
91+
},
92+
Update: &link.UpdatePublicShareRequest_Update{
93+
Type: link.UpdatePublicShareRequest_Update_TYPE_DESCRIPTION,
94+
Description: *description,
95+
},
96+
})
8397
}
8498

85-
if shareRes.Status.Code != rpc.Code_CODE_OK {
86-
return formatError(shareRes.Status)
99+
for _, u := range updates {
100+
shareRes, err := shareClient.UpdatePublicShare(ctx, u)
101+
if err != nil {
102+
return err
103+
}
104+
105+
if shareRes.Status.Code != rpc.Code_CODE_OK {
106+
return formatError(shareRes.Status)
107+
}
87108
}
88109

89110
fmt.Println("OK")

go.mod

+1-1
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ require (
1818
github.com/cheggaaa/pb v1.0.29
1919
github.com/coreos/go-oidc v2.2.1+incompatible
2020
github.com/cs3org/cato v0.0.0-20200828125504-e418fc54dd5e
21-
github.com/cs3org/go-cs3apis v0.0.0-20220929083235-bb0b1a236d6c
21+
github.com/cs3org/go-cs3apis v0.0.0-20221004162747-f20ee4756d90
2222
github.com/cubewise-code/go-mime v0.0.0-20200519001935-8c5762b177d8
2323
github.com/dgraph-io/ristretto v0.1.0
2424
github.com/eventials/go-tus v0.0.0-20200718001131-45c7ec8f5d59

go.sum

+4-6
Original file line numberDiff line numberDiff line change
@@ -224,12 +224,8 @@ github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ3
224224
github.com/creack/pty v1.1.11/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E=
225225
github.com/cs3org/cato v0.0.0-20200828125504-e418fc54dd5e h1:tqSPWQeueWTKnJVMJffz4pz0o1WuQxJ28+5x5JgaHD8=
226226
github.com/cs3org/cato v0.0.0-20200828125504-e418fc54dd5e/go.mod h1:XJEZ3/EQuI3BXTp/6DUzFr850vlxq11I6satRtz0YQ4=
227-
github.com/cs3org/go-cs3apis v0.0.0-20220330081745-2ad58f5932b9 h1:SuPu5Mc2mpz+J059XML+cMd0i5FZR4t/kROS3SaIsnU=
228-
github.com/cs3org/go-cs3apis v0.0.0-20220330081745-2ad58f5932b9/go.mod h1:UXha4TguuB52H14EMoSsCqDj7k8a/t7g4gVP+bgY5LY=
229-
github.com/cs3org/go-cs3apis v0.0.0-20220719130120-361e9f987d64 h1:cFnankJOCWndnOns4sKRG7yzH61ammK2Am6rEGWCK40=
230-
github.com/cs3org/go-cs3apis v0.0.0-20220719130120-361e9f987d64/go.mod h1:UXha4TguuB52H14EMoSsCqDj7k8a/t7g4gVP+bgY5LY=
231-
github.com/cs3org/go-cs3apis v0.0.0-20220929083235-bb0b1a236d6c h1:b+YTmOGlf43mnF8MzO0fsy8/Ho8JLu44Iq5Y0fKLJMM=
232-
github.com/cs3org/go-cs3apis v0.0.0-20220929083235-bb0b1a236d6c/go.mod h1:UXha4TguuB52H14EMoSsCqDj7k8a/t7g4gVP+bgY5LY=
227+
github.com/cs3org/go-cs3apis v0.0.0-20221004162747-f20ee4756d90 h1:zYg2UzwpChLgXktwt7MJEMv46GQPtluifRnynkSw80Y=
228+
github.com/cs3org/go-cs3apis v0.0.0-20221004162747-f20ee4756d90/go.mod h1:UXha4TguuB52H14EMoSsCqDj7k8a/t7g4gVP+bgY5LY=
233229
github.com/cubewise-code/go-mime v0.0.0-20200519001935-8c5762b177d8 h1:Z9lwXumT5ACSmJ7WGnFl+OMLLjpz5uR2fyz7dC255FI=
234230
github.com/cubewise-code/go-mime v0.0.0-20200519001935-8c5762b177d8/go.mod h1:4abs/jPXcmJzYoYGF91JF9Uq9s/KL5n1jvFDix8KcqY=
235231
github.com/cyberdelia/templates v0.0.0-20141128023046-ca7fffd4298c/go.mod h1:GyV+0YP4qX0UQ7r2MoYZ+AvYDp12OF5yg4q8rGnyNh4=
@@ -287,6 +283,8 @@ github.com/gdexlab/go-render v1.0.1/go.mod h1:wRi5nW2qfjiGj4mPukH4UV0IknS1cHD4Vg
287283
github.com/getkin/kin-openapi v0.13.0/go.mod h1:WGRs2ZMM1Q8LR1QBEwUxC6RJEfaBcD0s+pcEVXFuAjw=
288284
github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04=
289285
github.com/gliderlabs/ssh v0.2.2/go.mod h1:U7qILu1NlMHj9FlMhZLlkCdDnU1DBEAqr0aevW3Awn0=
286+
github.com/gmgigi96/go-cs3apis v0.0.0-20221004074314-b2292f6a794c h1:mC9jwnDK3weg0S3md2euO0iIvlD33JE/MsFQGaZ/zX0=
287+
github.com/gmgigi96/go-cs3apis v0.0.0-20221004074314-b2292f6a794c/go.mod h1:UXha4TguuB52H14EMoSsCqDj7k8a/t7g4gVP+bgY5LY=
290288
github.com/go-acme/lego/v4 v4.4.0/go.mod h1:l3+tFUFZb590dWcqhWZegynUthtaHJbG2fevUpoOOE0=
291289
github.com/go-asn1-ber/asn1-ber v1.5.4 h1:vXT6d/FNDiELJnLb6hGNa309LMsrCoYFvpwHDF0+Y1A=
292290
github.com/go-asn1-ber/asn1-ber v1.5.4/go.mod h1:hEBeB/ic+5LoWskz+yKT7vGhhPYkProFKoKdwZRWMe0=

internal/grpc/services/publicshareprovider/publicshareprovider.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -146,7 +146,7 @@ func (s *service) CreatePublicShare(ctx context.Context, req *link.CreatePublicS
146146
log.Error().Msg("error getting user from context")
147147
}
148148

149-
share, err := s.sm.CreatePublicShare(ctx, u, req.ResourceInfo, req.Grant)
149+
share, err := s.sm.CreatePublicShare(ctx, u, req.ResourceInfo, req.Grant, req.Description, req.Internal)
150150
if err != nil {
151151
log.Debug().Err(err).Str("createShare", "shares").Msg("error connecting to storage provider")
152152
}

internal/http/services/owncloud/ocs/conversions/main.go

+3
Original file line numberDiff line numberDiff line change
@@ -145,6 +145,8 @@ type ShareData struct {
145145
// PasswordProtected represents a public share is password protected
146146
// PasswordProtected bool `json:"password_protected,omitempty" xml:"password_protected,omitempty"`
147147
Quicklink bool `json:"quicklink,omitempty" xml:"quicklink,omitempty"`
148+
// Description of the public share
149+
Description string `json:"description" xml:"description"`
148150
}
149151

150152
// ShareeData holds share recipient search results
@@ -217,6 +219,7 @@ func PublicShare2ShareData(share *link.PublicShare, r *http.Request, publicURL s
217219
UIDOwner: LocalUserIDToString(share.Creator),
218220
UIDFileOwner: LocalUserIDToString(share.Owner),
219221
Quicklink: share.Quicklink,
222+
Description: share.Description,
220223
}
221224
if share.Id != nil {
222225
sd.ID = share.Id.OpaqueId

internal/http/services/owncloud/ocs/handlers/apps/sharing/shares/public.go

+15
Original file line numberDiff line numberDiff line change
@@ -110,6 +110,8 @@ func (h *Handler) createPublicLinkShare(w http.ResponseWriter, r *http.Request,
110110
newPermissions = conversions.RoleFromOCSPermissions(permissions).CS3ResourcePermissions()
111111
}
112112

113+
internal, _ := strconv.ParseBool(r.FormValue("internal"))
114+
113115
req := link.CreatePublicShareRequest{
114116
ResourceInfo: statInfo,
115117
Grant: &link.Grant{
@@ -118,6 +120,8 @@ func (h *Handler) createPublicLinkShare(w http.ResponseWriter, r *http.Request,
118120
},
119121
Password: r.FormValue("password"),
120122
},
123+
Description: r.FormValue("description"),
124+
Internal: internal,
121125
}
122126

123127
expireTimeString, ok := r.Form["expireDate"]
@@ -359,6 +363,17 @@ func (h *Handler) updatePublicShare(w http.ResponseWriter, r *http.Request, shar
359363
})
360364
}
361365

366+
// Description
367+
description, ok := r.Form["description"]
368+
if ok {
369+
updatesFound = true
370+
logger.Info().Str("shares", "update").Msg("description updated")
371+
updates = append(updates, &link.UpdatePublicShareRequest_Update{
372+
Type: link.UpdatePublicShareRequest_Update_TYPE_DESCRIPTION,
373+
Description: description[0],
374+
})
375+
}
376+
362377
publicShare := before.Share
363378

364379
// Updates are atomical. See: https://github.com/cs3org/cs3apis/pull/67#issuecomment-617651428 so in order to get the latest updated version

pkg/cbox/publicshare/sql/sql.go

+14-11
Original file line numberDiff line numberDiff line change
@@ -128,7 +128,7 @@ func New(m map[string]interface{}) (publicshare.Manager, error) {
128128
return &mgr, nil
129129
}
130130

131-
func (m *manager) CreatePublicShare(ctx context.Context, u *user.User, rInfo *provider.ResourceInfo, g *link.Grant) (*link.PublicShare, error) {
131+
func (m *manager) CreatePublicShare(ctx context.Context, u *user.User, rInfo *provider.ResourceInfo, g *link.Grant, description string, internal bool) (*link.PublicShare, error) {
132132

133133
tkn := utils.RandString(15)
134134
now := time.Now().Unix()
@@ -156,8 +156,8 @@ func (m *manager) CreatePublicShare(ctx context.Context, u *user.User, rInfo *pr
156156
fileSource = 0
157157
}
158158

159-
query := "insert into oc_share set share_type=?,uid_owner=?,uid_initiator=?,item_type=?,fileid_prefix=?,item_source=?,file_source=?,permissions=?,stime=?,token=?,share_name=?,quicklink=?"
160-
params := []interface{}{publicShareType, owner, creator, itemType, prefix, itemSource, fileSource, permissions, now, tkn, displayName, quicklink}
159+
query := "insert into oc_share set share_type=?,uid_owner=?,uid_initiator=?,item_type=?,fileid_prefix=?,item_source=?,file_source=?,permissions=?,stime=?,token=?,share_name=?,quicklink=?,description=?,internal=?"
160+
params := []interface{}{publicShareType, owner, creator, itemType, prefix, itemSource, fileSource, permissions, now, tkn, displayName, quicklink, description, internal}
161161

162162
var passwordProtected bool
163163
password := g.Password
@@ -206,6 +206,7 @@ func (m *manager) CreatePublicShare(ctx context.Context, u *user.User, rInfo *pr
206206
Expiration: g.Expiration,
207207
DisplayName: displayName,
208208
Quicklink: quicklink,
209+
Description: description,
209210
}, nil
210211
}
211212

@@ -234,6 +235,8 @@ func (m *manager) UpdatePublicShare(ctx context.Context, u *user.User, req *link
234235
}
235236
paramsMap["share_with"] = h
236237
}
238+
case link.UpdatePublicShareRequest_Update_TYPE_DESCRIPTION:
239+
paramsMap["description"] = req.Update.GetDescription()
237240
default:
238241
return nil, fmt.Errorf("invalid update type: %v", req.GetUpdate().GetType())
239242
}
@@ -267,8 +270,8 @@ func (m *manager) UpdatePublicShare(ctx context.Context, u *user.User, req *link
267270

268271
func (m *manager) getByToken(ctx context.Context, token string, u *user.User) (*link.PublicShare, string, error) {
269272
s := conversions.DBShare{Token: token}
270-
query := "select coalesce(uid_owner, '') as uid_owner, coalesce(uid_initiator, '') as uid_initiator, coalesce(share_with, '') as share_with, coalesce(fileid_prefix, '') as fileid_prefix, coalesce(item_source, '') as item_source, coalesce(item_type, '') as item_type, coalesce(expiration, '') as expiration, coalesce(share_name, '') as share_name, id, stime, permissions, quicklink FROM oc_share WHERE (orphan = 0 or orphan IS NULL) AND share_type=? AND token=?"
271-
if err := m.db.QueryRow(query, publicShareType, token).Scan(&s.UIDOwner, &s.UIDInitiator, &s.ShareWith, &s.Prefix, &s.ItemSource, &s.ItemType, &s.Expiration, &s.ShareName, &s.ID, &s.STime, &s.Permissions, &s.Quicklink); err != nil {
273+
query := "select coalesce(uid_owner, '') as uid_owner, coalesce(uid_initiator, '') as uid_initiator, coalesce(share_with, '') as share_with, coalesce(fileid_prefix, '') as fileid_prefix, coalesce(item_source, '') as item_source, coalesce(item_type, '') as item_type, coalesce(expiration, '') as expiration, coalesce(share_name, '') as share_name, id, stime, permissions, quicklink, description FROM oc_share WHERE (orphan = 0 or orphan IS NULL) AND share_type=? AND token=?"
274+
if err := m.db.QueryRow(query, publicShareType, token).Scan(&s.UIDOwner, &s.UIDInitiator, &s.ShareWith, &s.Prefix, &s.ItemSource, &s.ItemType, &s.Expiration, &s.ShareName, &s.ID, &s.STime, &s.Permissions, &s.Quicklink, &s.Description); err != nil {
272275
if err == sql.ErrNoRows {
273276
return nil, "", errtypes.NotFound(token)
274277
}
@@ -280,8 +283,8 @@ func (m *manager) getByToken(ctx context.Context, token string, u *user.User) (*
280283
func (m *manager) getByID(ctx context.Context, id *link.PublicShareId, u *user.User) (*link.PublicShare, string, error) {
281284
uid := conversions.FormatUserID(u.Id)
282285
s := conversions.DBShare{ID: id.OpaqueId}
283-
query := "select coalesce(uid_owner, '') as uid_owner, coalesce(uid_initiator, '') as uid_initiator, coalesce(share_with, '') as share_with, coalesce(fileid_prefix, '') as fileid_prefix, coalesce(item_source, '') as item_source, coalesce(item_type, '') as item_type, coalesce(token,'') as token, coalesce(expiration, '') as expiration, coalesce(share_name, '') as share_name, stime, permissions, quicklink FROM oc_share WHERE (orphan = 0 or orphan IS NULL) AND share_type=? AND id=? AND (uid_owner=? OR uid_initiator=?)"
284-
if err := m.db.QueryRow(query, publicShareType, id.OpaqueId, uid, uid).Scan(&s.UIDOwner, &s.UIDInitiator, &s.ShareWith, &s.Prefix, &s.ItemSource, &s.ItemType, &s.Token, &s.Expiration, &s.ShareName, &s.STime, &s.Permissions, &s.Quicklink); err != nil {
286+
query := "select coalesce(uid_owner, '') as uid_owner, coalesce(uid_initiator, '') as uid_initiator, coalesce(share_with, '') as share_with, coalesce(fileid_prefix, '') as fileid_prefix, coalesce(item_source, '') as item_source, coalesce(item_type, '') as item_type, coalesce(token,'') as token, coalesce(expiration, '') as expiration, coalesce(share_name, '') as share_name, stime, permissions, quicklink, description FROM oc_share WHERE (orphan = 0 or orphan IS NULL) AND share_type=? AND id=? AND (uid_owner=? OR uid_initiator=?)"
287+
if err := m.db.QueryRow(query, publicShareType, id.OpaqueId, uid, uid).Scan(&s.UIDOwner, &s.UIDInitiator, &s.ShareWith, &s.Prefix, &s.ItemSource, &s.ItemType, &s.Token, &s.Expiration, &s.ShareName, &s.STime, &s.Permissions, &s.Quicklink, &s.Description); err != nil {
285288
if err == sql.ErrNoRows {
286289
return nil, "", errtypes.NotFound(id.OpaqueId)
287290
}
@@ -324,7 +327,7 @@ func (m *manager) GetPublicShare(ctx context.Context, u *user.User, ref *link.Pu
324327
}
325328

326329
func (m *manager) ListPublicShares(ctx context.Context, u *user.User, filters []*link.ListPublicSharesRequest_Filter, md *provider.ResourceInfo, sign bool) ([]*link.PublicShare, error) {
327-
query := "select coalesce(uid_owner, '') as uid_owner, coalesce(uid_initiator, '') as uid_initiator, coalesce(share_with, '') as share_with, coalesce(fileid_prefix, '') as fileid_prefix, coalesce(item_source, '') as item_source, coalesce(item_type, '') as item_type, coalesce(token,'') as token, coalesce(expiration, '') as expiration, coalesce(share_name, '') as share_name, id, stime, permissions, quicklink FROM oc_share WHERE (orphan = 0 or orphan IS NULL) AND (share_type=?)"
330+
query := "select coalesce(uid_owner, '') as uid_owner, coalesce(uid_initiator, '') as uid_initiator, coalesce(share_with, '') as share_with, coalesce(fileid_prefix, '') as fileid_prefix, coalesce(item_source, '') as item_source, coalesce(item_type, '') as item_type, coalesce(token,'') as token, coalesce(expiration, '') as expiration, coalesce(share_name, '') as share_name, id, stime, permissions, quicklink, description FROM oc_share WHERE (orphan = 0 or orphan IS NULL) AND (share_type=?) AND internal=false"
328331
var resourceFilters, ownerFilters, creatorFilters string
329332
var resourceParams, ownerParams, creatorParams []interface{}
330333
params := []interface{}{publicShareType}
@@ -382,7 +385,7 @@ func (m *manager) ListPublicShares(ctx context.Context, u *user.User, filters []
382385
var s conversions.DBShare
383386
shares := []*link.PublicShare{}
384387
for rows.Next() {
385-
if err := rows.Scan(&s.UIDOwner, &s.UIDInitiator, &s.ShareWith, &s.Prefix, &s.ItemSource, &s.ItemType, &s.Token, &s.Expiration, &s.ShareName, &s.ID, &s.STime, &s.Permissions, &s.Quicklink); err != nil {
388+
if err := rows.Scan(&s.UIDOwner, &s.UIDInitiator, &s.ShareWith, &s.Prefix, &s.ItemSource, &s.ItemType, &s.Token, &s.Expiration, &s.ShareName, &s.ID, &s.STime, &s.Permissions, &s.Quicklink, &s.Description); err != nil {
386389
continue
387390
}
388391
cs3Share := conversions.ConvertToCS3PublicShare(s)
@@ -441,8 +444,8 @@ func (m *manager) RevokePublicShare(ctx context.Context, u *user.User, ref *link
441444

442445
func (m *manager) GetPublicShareByToken(ctx context.Context, token string, auth *link.PublicShareAuthentication, sign bool) (*link.PublicShare, error) {
443446
s := conversions.DBShare{Token: token}
444-
query := "select coalesce(uid_owner, '') as uid_owner, coalesce(uid_initiator, '') as uid_initiator, coalesce(share_with, '') as share_with, coalesce(fileid_prefix, '') as fileid_prefix, coalesce(item_source, '') as item_source, coalesce(item_type, '') as item_type, coalesce(expiration, '') as expiration, coalesce(share_name, '') as share_name, id, stime, permissions, quicklink FROM oc_share WHERE share_type=? AND token=?"
445-
if err := m.db.QueryRow(query, publicShareType, token).Scan(&s.UIDOwner, &s.UIDInitiator, &s.ShareWith, &s.Prefix, &s.ItemSource, &s.ItemType, &s.Expiration, &s.ShareName, &s.ID, &s.STime, &s.Permissions, &s.Quicklink); err != nil {
447+
query := "select coalesce(uid_owner, '') as uid_owner, coalesce(uid_initiator, '') as uid_initiator, coalesce(share_with, '') as share_with, coalesce(fileid_prefix, '') as fileid_prefix, coalesce(item_source, '') as item_source, coalesce(item_type, '') as item_type, coalesce(expiration, '') as expiration, coalesce(share_name, '') as share_name, id, stime, permissions, quicklink, description FROM oc_share WHERE share_type=? AND token=?"
448+
if err := m.db.QueryRow(query, publicShareType, token).Scan(&s.UIDOwner, &s.UIDInitiator, &s.ShareWith, &s.Prefix, &s.ItemSource, &s.ItemType, &s.Expiration, &s.ShareName, &s.ID, &s.STime, &s.Permissions, &s.Quicklink, &s.Description); err != nil {
446449
if err == sql.ErrNoRows {
447450
return nil, errtypes.NotFound(token)
448451
}

pkg/cbox/utils/conversions.go

+2
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,7 @@ type DBShare struct {
4949
FileTarget string
5050
State int
5151
Quicklink bool
52+
Description string
5253
}
5354

5455
// FormatGrantee formats a CS3API grantee to a string
@@ -252,5 +253,6 @@ func ConvertToCS3PublicShare(s DBShare) *link.PublicShare {
252253
Ctime: ts,
253254
Mtime: ts,
254255
Quicklink: s.Quicklink,
256+
Description: s.Description,
255257
}
256258
}

0 commit comments

Comments
 (0)