working commit

This commit is contained in:
2026-03-12 18:02:10 +02:00
parent 27c912d266
commit 920423ffeb
4 changed files with 45 additions and 25 deletions
+36 -23
View File
@@ -10,6 +10,7 @@
package fileoper package fileoper
import ( import (
"bytes"
"context" "context"
"io" "io"
"net/http" "net/http"
@@ -49,31 +50,43 @@ func (oper *Operator) GetFile(ctx context.Context, operatorID string, params *Ge
oper.iLock.WaitAndLock(resName) oper.iLock.WaitAndLock(resName)
defer oper.iLock.Done(resName) defer oper.iLock.Done(resName)
descrExists, fileDescr, err := oper.mdb.GetFileByCollectionName(ctx, collection, filename) if filename != "index.yaml" {
if err != nil { descrExists, fileDescr, err := oper.mdb.GetFileByCollectionName(ctx, collection, filename)
code := http.StatusInternalServerError if err != nil {
return code, res, err code := http.StatusInternalServerError
} return code, res, err
if !descrExists { }
code := http.StatusNotFound if !descrExists {
return code, res, err code := http.StatusNotFound
} return code, res, err
reader, err := oper.store.GetFileReader(collection, filename) }
if err != nil { reader, err := oper.store.GetFileReader(collection, filename)
code := http.StatusInternalServerError if err != nil {
return code, res, err code := http.StatusInternalServerError
} return code, res, err
res = &GetFileResult{ }
ContentSize: strconv.FormatInt(fileDescr.Size, 10), res = &GetFileResult{
ContentType: fileDescr.Type, ContentSize: strconv.FormatInt(fileDescr.Size, 10),
ContentDigest: fileDescr.Checksum, ContentType: fileDescr.Type,
Source: reader, ContentDigest: fileDescr.Checksum,
Source: reader,
ContentCreatedAt: fileDescr.CreatedAt, ContentCreatedAt: fileDescr.CreatedAt,
ContentCreatedBy: fileDescr.CreatedBy, ContentCreatedBy: fileDescr.CreatedBy,
ContentUpdatedAt: fileDescr.UpdatedAt, ContentUpdatedAt: fileDescr.UpdatedAt,
ContentUpdatedBy: fileDescr.UpdatedBy, ContentUpdatedBy: fileDescr.UpdatedBy,
}
code := http.StatusOK
return code, res, err
}
// TODO: actual chart index
reader := io.NopCloser(bytes.NewReader(nil))
res = &GetFileResult{
ContentSize: strconv.FormatInt(0, 10),
ContentType: hcMimeType,
Source: reader,
} }
code := http.StatusOK code := http.StatusOK
return code, res, err return code, res, err
} }
+4
View File
@@ -78,6 +78,10 @@ func (oper *Operator) PutFile(ctx context.Context, operatorID string, params *Pu
var helmMeta string var helmMeta string
if contentType == hcMimeType { if contentType == hcMimeType {
helmHash, helmMeta, err = oper.store.HelmMeta(tmpname) helmHash, helmMeta, err = oper.store.HelmMeta(tmpname)
if err != nil {
code := http.StatusInternalServerError
return code, res, err
}
} }
descrExists, fileDescr, err := oper.mdb.GetFileByCollectionName(ctx, collection, filename) descrExists, fileDescr, err := oper.mdb.GetFileByCollectionName(ctx, collection, filename)
+3
View File
@@ -11,6 +11,9 @@ func (store *Storage) HelmMeta(filename string) (string, string, error) {
var err error var err error
var meta string var meta string
var hash string var hash string
filename = store.makeTmppath(filename)
chart, err := loader.Load(filename) chart, err := loader.Load(filename)
if err != nil { if err != nil {
return meta, hash, err return meta, hash, err
+2 -2
View File
@@ -78,7 +78,7 @@ func (store *Storage) WriteTempFile(source io.Reader) (string, int64, string, er
var size int64 var size int64
var csum string var csum string
tmpName := fmt.Sprintf("%d.tmp", auxuuid.NewUUID()) tmpName := fmt.Sprintf("%s.tmp", auxuuid.NewUUID())
tmpPath := store.makeTmppath(tmpName) tmpPath := store.makeTmppath(tmpName)
tmpdirpath := store.makeTmpsubdir() tmpdirpath := store.makeTmpsubdir()
@@ -120,7 +120,7 @@ func (store *Storage) HardlinkFile(tmpName, collection, filename string) error {
} }
filename = store.makeFilepath(collection, filename) filename = store.makeFilepath(collection, filename)
_, err = os.Stat(dirname) _, err = os.Stat(dirname)
if os.IsExist(err) { if err == nil {
os.Remove(filename) // TODO: safe removing os.Remove(filename) // TODO: safe removing
} }
tmpName = store.makeTmppath(tmpName) tmpName = store.makeTmppath(tmpName)