Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
gitpod-io
GitHub Repository: gitpod-io/gitpod
Path: blob/main/components/content-service/pkg/service/content-service.go
2499 views
1
// Copyright (c) 2021 Gitpod GmbH. All rights reserved.
2
// Licensed under the GNU Affero General Public License (AGPL).
3
// See License.AGPL.txt in the project root for license information.
4
5
package service
6
7
import (
8
"context"
9
10
"github.com/opentracing/opentracing-go"
11
"google.golang.org/grpc/codes"
12
"google.golang.org/grpc/status"
13
14
"github.com/gitpod-io/gitpod/common-go/log"
15
"github.com/gitpod-io/gitpod/common-go/tracing"
16
"github.com/gitpod-io/gitpod/content-service/api"
17
"github.com/gitpod-io/gitpod/content-service/api/config"
18
"github.com/gitpod-io/gitpod/content-service/pkg/storage"
19
)
20
21
// ContentService implements ContentServiceServer
22
type ContentService struct {
23
cfg config.StorageConfig
24
s storage.PresignedAccess
25
26
api.UnimplementedContentServiceServer
27
}
28
29
// NewContentService create a new content service
30
func NewContentService(cfg config.StorageConfig) (res *ContentService, err error) {
31
s, err := storage.NewPresignedAccess(&cfg)
32
if err != nil {
33
return nil, err
34
}
35
return &ContentService{cfg: cfg, s: s}, nil
36
}
37
38
// DeleteUserContent deletes all content associated with a user.
39
func (cs *ContentService) DeleteUserContent(ctx context.Context, req *api.DeleteUserContentRequest) (resp *api.DeleteUserContentResponse, err error) {
40
span, ctx := opentracing.StartSpanFromContext(ctx, "DeleteUserContent")
41
span.SetTag("user", req.OwnerId)
42
defer tracing.FinishSpan(span, &err)
43
44
bucket := cs.s.Bucket(req.OwnerId)
45
err = cs.s.DeleteBucket(ctx, req.OwnerId, bucket)
46
// TODO
47
if err == storage.ErrNotFound {
48
log.WithFields(log.OWI(req.OwnerId, "", "")).Debug("DeleteUserContent: NotFound")
49
return &api.DeleteUserContentResponse{}, nil
50
}
51
if err != nil {
52
log.WithFields(log.OWI(req.OwnerId, "", "")).WithError(err).Error("DeleteUserContent: failed")
53
return nil, status.Error(codes.Unknown, err.Error())
54
}
55
log.WithFields(log.OWI(req.OwnerId, "", "")).Debug("DeleteUserContent: done")
56
return &api.DeleteUserContentResponse{}, nil
57
}
58
59