From e906c9f1ecb11fd7afdf144b40cf3086620c975d Mon Sep 17 00:00:00 2001 From: jkoberg Date: Wed, 29 Mar 2023 17:01:39 +0200 Subject: [PATCH] emit event after finishing data extraction Signed-off-by: jkoberg --- services/graph/pkg/service/v0/personaldata.go | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/services/graph/pkg/service/v0/personaldata.go b/services/graph/pkg/service/v0/personaldata.go index 28a6310e54..450be6ad2f 100644 --- a/services/graph/pkg/service/v0/personaldata.go +++ b/services/graph/pkg/service/v0/personaldata.go @@ -9,12 +9,14 @@ import ( "net/http" "path/filepath" "strconv" + "time" gateway "github.com/cs3org/go-cs3apis/cs3/gateway/v1beta1" user "github.com/cs3org/go-cs3apis/cs3/identity/user/v1beta1" rpc "github.com/cs3org/go-cs3apis/cs3/rpc/v1beta1" provider "github.com/cs3org/go-cs3apis/cs3/storage/provider/v1beta1" revactx "github.com/cs3org/reva/v2/pkg/ctx" + "github.com/cs3org/reva/v2/pkg/events" "github.com/cs3org/reva/v2/pkg/rhttp" "github.com/cs3org/reva/v2/pkg/utils" ) @@ -47,7 +49,7 @@ func (g Graph) ExportPersonalData(w http.ResponseWriter, r *http.Request) { default: g.logger.Info().Str("path", loc).Msg("invalid location") w.WriteHeader(http.StatusBadRequest) - w.Write([]byte("only json format is supported for personal data export")) + _, _ = w.Write([]byte("only json format is supported for personal data export")) return case ".json": marsh = json.Marshal @@ -87,8 +89,18 @@ func (g Graph) GatherPersonalData(usr *user.User, ref *provider.Reference, token } // upload + var errmsg string if err := g.upload(usr, by, ref, token); err != nil { g.logger.Error().Err(err).Msg("failed uploading personal data export") + errmsg = err.Error() + } + + if err := events.Publish(g.eventsPublisher, events.PersonalDataExtracted{ + Executant: usr.GetId(), + Timestamp: time.Now(), + ErrorMsg: errmsg, + }); err != nil { + g.logger.Error().Err(err).Msg("cannot publish event") } } @@ -138,7 +150,7 @@ func (g Graph) upload(u *user.User, data []byte, ref *provider.Reference, th str return nil } -// touches the file, creating folders if neccessary +// touches the file, creating folders if necessary func mustTouchFile(ctx context.Context, ref *provider.Reference, gwc gateway.GatewayAPIClient) error { if err := touchFile(ctx, ref, gwc); err == nil { return nil