even more refactor
This commit is contained in:
@@ -2,75 +2,34 @@ package helper
|
||||
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
"path/filepath"
|
||||
"strings"
|
||||
"time"
|
||||
|
||||
types "git.kapelle.org/niklas/s3browser/internal/types"
|
||||
"github.com/golang-jwt/jwt"
|
||||
"github.com/graph-gophers/dataloader"
|
||||
"github.com/minio/minio-go/v7"
|
||||
log "github.com/sirupsen/logrus"
|
||||
|
||||
types "git.kapelle.org/niklas/s3browser/internal/types"
|
||||
)
|
||||
|
||||
func InvalidateCache(ctx context.Context, id types.ID) error {
|
||||
loader, ok := ctx.Value("loader").(map[string]*dataloader.Loader)
|
||||
if !ok {
|
||||
return fmt.Errorf("Failed to get loader from context")
|
||||
}
|
||||
|
||||
log.Debug("Invalidate cache for id: ", id)
|
||||
|
||||
parent := id.Parent()
|
||||
|
||||
loader["getFile"].Clear(ctx, id)
|
||||
loader["getFiles"].Clear(ctx, parent)
|
||||
loader["listObjects"].Clear(ctx, parent)
|
||||
loader["listObjectsRecursive"].Clear(ctx, parent)
|
||||
return nil
|
||||
}
|
||||
|
||||
func GetFilenameFromKey(id string) string {
|
||||
return filepath.Base(id)
|
||||
}
|
||||
|
||||
func InvalidateCacheForDir(ctx context.Context, path types.ID) error {
|
||||
loader, ok := ctx.Value("loader").(map[string]*dataloader.Loader)
|
||||
if !ok {
|
||||
return fmt.Errorf("Failed to get loader from context")
|
||||
}
|
||||
|
||||
log.Debug("Invalidate cache for dir: ", path)
|
||||
|
||||
parent := GetParentDir(path)
|
||||
|
||||
log.Debug("Cache clear dir: ", path, " parent: ", parent)
|
||||
|
||||
loader["getFile"].Clear(ctx, path)
|
||||
loader["listObjects"].Clear(ctx, path)
|
||||
loader["listObjectsRecursive"].Clear(ctx, path)
|
||||
loader["getFiles"].Clear(ctx, path)
|
||||
loader["getDirs"].Clear(ctx, parent)
|
||||
loader["listObjects"].Clear(ctx, parent)
|
||||
loader["listObjectsRecursive"].Clear(ctx, parent)
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
func DeleteMultiple(ctx context.Context, s3Client minio.Client, ids []minio.ObjectInfo) error {
|
||||
log.Debug("Delte multiple")
|
||||
func DeleteMultiple(ctx context.Context, s3Client minio.Client, bucket string, keys []string) error {
|
||||
log.Debug("Remove multiple objects")
|
||||
objectsCh := make(chan minio.ObjectInfo, 1)
|
||||
|
||||
go func() {
|
||||
defer close(objectsCh)
|
||||
for _, id := range ids {
|
||||
objectsCh <- id
|
||||
for _, id := range keys {
|
||||
objectsCh <- minio.ObjectInfo{
|
||||
Key: id,
|
||||
}
|
||||
}
|
||||
}()
|
||||
|
||||
for err := range s3Client.RemoveObjects(ctx, "dev", objectsCh, minio.RemoveObjectsOptions{}) {
|
||||
for err := range s3Client.RemoveObjects(ctx, bucket, objectsCh, minio.RemoveObjectsOptions{}) {
|
||||
log.Error("Failed to delete object ", err.ObjectName, " because: ", err.Err.Error())
|
||||
// TODO: error handel
|
||||
}
|
||||
@@ -98,6 +57,24 @@ func GetParentDir(id types.ID) types.ID {
|
||||
return parent
|
||||
}
|
||||
|
||||
func ObjInfoToFile(objInfo minio.ObjectInfo, bucket string) *types.File {
|
||||
objID := types.ID{
|
||||
Bucket: bucket,
|
||||
Key: objInfo.Key,
|
||||
}
|
||||
|
||||
objID.Normalize()
|
||||
|
||||
return &types.File{
|
||||
ID: objID,
|
||||
Name: GetFilenameFromKey(objID.Key),
|
||||
Size: objInfo.Size,
|
||||
ContentType: objInfo.ContentType,
|
||||
ETag: objInfo.ETag,
|
||||
LastModified: objInfo.LastModified,
|
||||
}
|
||||
}
|
||||
|
||||
func IsAuthenticated(ctx context.Context) bool {
|
||||
token, ok := ctx.Value("jwt").(*jwt.Token)
|
||||
return (ok && token.Valid)
|
||||
|
||||
Reference in New Issue
Block a user