enhancement(activitylog): enhance activitylog graph endpoint

- make use of libregraph artifacts
- add a basic activity kql ast parser
This commit is contained in:
Florian Schade
2024-06-24 16:23:54 +02:00
committed by jkoberg
parent 5249cbc138
commit 949c5d0848
4 changed files with 50 additions and 44 deletions
+13 -29
View File
@@ -7,6 +7,8 @@ import (
provider "github.com/cs3org/go-cs3apis/cs3/storage/provider/v1beta1"
"github.com/cs3org/reva/v2/pkg/storagespace"
"github.com/cs3org/reva/v2/pkg/utils"
libregraph "github.com/owncloud/libre-graph-api-go"
"github.com/owncloud/ocis/v2/ocis-pkg/l10n"
)
@@ -29,14 +31,7 @@ var (
// GetActivitiesResponse is the response on GET activities requests
type GetActivitiesResponse struct {
Activities []Activity `json:"value"`
}
// Activity represents an activity as it is returned to the client
type Activity struct {
ID string `json:"id"`
Times Times `json:"times"`
Template Template `json:"template"`
Activities []libregraph.Activity `json:"value"`
}
// Resource represents an item such as a file or folder
@@ -51,23 +46,12 @@ type Actor struct {
DisplayName string `json:"displayName"`
}
// Times represents the timestamps of the Activity
type Times struct {
RecordedTime time.Time `json:"recordedTime"`
}
// Template contains activity details
type Template struct {
Message string `json:"message"`
Variables map[string]interface{} `json:"variables"`
}
// NewActivity creates a new activity
func NewActivity(message string, res Resource, user Actor, ts Times, eventID string) Activity {
return Activity{
ID: eventID,
func NewActivity(message string, res Resource, user Actor, ts libregraph.ActivityTimes, eventID string) libregraph.Activity {
return libregraph.Activity{
Id: eventID,
Times: ts,
Template: Template{
Template: libregraph.ActivityTemplate{
Message: message,
Variables: map[string]interface{}{
"resource": res,
@@ -78,26 +62,26 @@ func NewActivity(message string, res Resource, user Actor, ts Times, eventID str
}
// ResponseData returns the relevant response data for the activity
func (s *ActivitylogService) ResponseData(ref *provider.Reference, uid *user.UserId, username string, ts time.Time) (Resource, Actor, Times, error) {
func (s *ActivitylogService) ResponseData(ref *provider.Reference, uid *user.UserId, username string, ts time.Time) (Resource, Actor, libregraph.ActivityTimes, error) {
gwc, err := s.gws.Next()
if err != nil {
return Resource{}, Actor{}, Times{}, err
return Resource{}, Actor{}, libregraph.ActivityTimes{}, err
}
ctx, err := utils.GetServiceUserContext(s.cfg.ServiceAccount.ServiceAccountID, gwc, s.cfg.ServiceAccount.ServiceAccountSecret)
if err != nil {
return Resource{}, Actor{}, Times{}, err
return Resource{}, Actor{}, libregraph.ActivityTimes{}, err
}
info, err := utils.GetResource(ctx, ref, gwc)
if err != nil {
return Resource{}, Actor{}, Times{}, err
return Resource{}, Actor{}, libregraph.ActivityTimes{}, err
}
if username == "" {
u, err := utils.GetUser(uid, gwc)
if err != nil {
return Resource{}, Actor{}, Times{}, err
return Resource{}, Actor{}, libregraph.ActivityTimes{}, err
}
username = u.GetUsername()
}
@@ -108,7 +92,7 @@ func (s *ActivitylogService) ResponseData(ref *provider.Reference, uid *user.Use
}, Actor{
ID: uid.GetOpaqueId(),
DisplayName: username,
}, Times{
}, libregraph.ActivityTimes{
RecordedTime: ts,
}, nil