diff --git a/changelog/unreleased/file-downloaded-activity.md b/changelog/unreleased/file-downloaded-activity.md new file mode 100644 index 0000000000..3501fb3b18 --- /dev/null +++ b/changelog/unreleased/file-downloaded-activity.md @@ -0,0 +1,5 @@ +Enhancement: FileDownloaded Activity + +Add an activity when a file gets downloaded via public link + +https://github.com/owncloud/ocis/pull/10161 diff --git a/services/activitylog/pkg/command/server.go b/services/activitylog/pkg/command/server.go index 4989abb1c3..96601df47e 100644 --- a/services/activitylog/pkg/command/server.go +++ b/services/activitylog/pkg/command/server.go @@ -31,6 +31,7 @@ var _registeredEvents = []events.Unmarshaller{ events.UploadReady{}, events.FileTouched{}, events.ContainerCreated{}, + events.FileDownloaded{}, events.ItemTrashed{}, events.ItemPurged{}, events.ItemMoved{}, diff --git a/services/activitylog/pkg/service/http.go b/services/activitylog/pkg/service/http.go index d01dfe8659..349f8787a5 100644 --- a/services/activitylog/pkg/service/http.go +++ b/services/activitylog/pkg/service/http.go @@ -135,6 +135,10 @@ func (s *ActivitylogService) HandleGetItemActivities(w http.ResponseWriter, r *h message = MessageResourceCreated ts = utils.TSToTime(ev.Timestamp) vars, err = s.GetVars(ctx, WithResource(ev.Ref, false), WithUser(ev.Executant, nil, ev.ImpersonatingUser)) + case events.FileDownloaded: + message = MessageResourceDownloaded + ts = utils.TSToTime(ev.Timestamp) + vars, err = s.GetVars(ctx, WithResource(ev.Ref, false), WithUser(ev.Executant, nil, ev.ImpersonatingUser), WithVar("token", "", ev.ImpersonatingUser.GetId().GetOpaqueId())) case events.ContainerCreated: message = MessageResourceCreated ts = utils.TSToTime(ev.Timestamp) diff --git a/services/activitylog/pkg/service/response.go b/services/activitylog/pkg/service/response.go index e2c4477887..61417770f5 100644 --- a/services/activitylog/pkg/service/response.go +++ b/services/activitylog/pkg/service/response.go @@ -21,19 +21,20 @@ import ( // Translations var ( - MessageResourceCreated = l10n.Template("{user} added {resource} to {folder}") - MessageResourceUpdated = l10n.Template("{user} updated {resource} in {folder}") - MessageResourceTrashed = l10n.Template("{user} deleted {resource} from {folder}") - MessageResourceMoved = l10n.Template("{user} moved {resource} to {folder}") - MessageResourceRenamed = l10n.Template("{user} renamed {oldResource} to {resource}") - MessageShareCreated = l10n.Template("{user} shared {resource} with {sharee}") - MessageShareUpdated = l10n.Template("{user} updated {field} for the {resource}") - MessageShareDeleted = l10n.Template("{user} removed {sharee} from {resource}") - MessageLinkCreated = l10n.Template("{user} shared {resource} via link") - MessageLinkUpdated = l10n.Template("{user} updated {field} for a link {token} on {resource}") - MessageLinkDeleted = l10n.Template("{user} removed link to {resource}") - MessageSpaceShared = l10n.Template("{user} added {sharee} as member of {space}") - MessageSpaceUnshared = l10n.Template("{user} removed {sharee} from {space}") + MessageResourceCreated = l10n.Template("{user} added {resource} to {folder}") + MessageResourceUpdated = l10n.Template("{user} updated {resource} in {folder}") + MessageResourceDownloaded = l10n.Template("{resource} was downloaded via public link {token}") + MessageResourceTrashed = l10n.Template("{user} deleted {resource} from {folder}") + MessageResourceMoved = l10n.Template("{user} moved {resource} to {folder}") + MessageResourceRenamed = l10n.Template("{user} renamed {oldResource} to {resource}") + MessageShareCreated = l10n.Template("{user} shared {resource} with {sharee}") + MessageShareUpdated = l10n.Template("{user} updated {field} for the {resource}") + MessageShareDeleted = l10n.Template("{user} removed {sharee} from {resource}") + MessageLinkCreated = l10n.Template("{user} shared {resource} via link") + MessageLinkUpdated = l10n.Template("{user} updated {field} for a link {token} on {resource}") + MessageLinkDeleted = l10n.Template("{user} removed link to {resource}") + MessageSpaceShared = l10n.Template("{user} added {sharee} as member of {space}") + MessageSpaceUnshared = l10n.Template("{user} removed {sharee} from {space}") StrSomeField = l10n.Template("some field") StrPermission = l10n.Template("permission") diff --git a/services/activitylog/pkg/service/service.go b/services/activitylog/pkg/service/service.go index 33aa2e4f81..302349c12b 100644 --- a/services/activitylog/pkg/service/service.go +++ b/services/activitylog/pkg/service/service.go @@ -100,6 +100,11 @@ func (a *ActivitylogService) Run() { err = a.AddActivity(ev.FileRef, e.ID, utils.TSToTime(ev.Timestamp)) case events.FileTouched: err = a.AddActivity(ev.Ref, e.ID, utils.TSToTime(ev.Timestamp)) + case events.FileDownloaded: + // we are only interested in public link downloads - so no need to store others. + if ev.ImpersonatingUser.GetDisplayName() == "Public" { + err = a.AddActivity(ev.Ref, e.ID, utils.TSToTime(ev.Timestamp)) + } case events.ContainerCreated: err = a.AddActivity(ev.Ref, e.ID, utils.TSToTime(ev.Timestamp)) case events.ItemTrashed: