From 5448781dfcf43d106c42515974868b304f28daa5 Mon Sep 17 00:00:00 2001 From: Chris Lu Date: Tue, 3 Nov 2020 00:15:51 -0800 Subject: [PATCH] filer: Headers with "Seaweed-" prefix are stored as extended properties --- weed/server/filer_server_handlers_read.go | 7 ++++++- .../filer_server_handlers_write_autochunk.go | 15 +++++++++++---- 2 files changed, 17 insertions(+), 5 deletions(-) diff --git a/weed/server/filer_server_handlers_read.go b/weed/server/filer_server_handlers_read.go index 7b08e1686..69d485e90 100644 --- a/weed/server/filer_server_handlers_read.go +++ b/weed/server/filer_server_handlers_read.go @@ -94,10 +94,15 @@ func (fs *FilerServer) GetOrHeadHandler(w http.ResponseWriter, r *http.Request, } } + // print out the header from extended properties + for k, v := range entry.Extended { + w.Header().Set(k, string(v)) + } + //set tag count if r.Method == "GET" { tagCount := 0 - for k, _ := range entry.Extended { + for k := range entry.Extended { if strings.HasPrefix(k, xhttp.AmzObjectTagging+"-") { tagCount++ } diff --git a/weed/server/filer_server_handlers_write_autochunk.go b/weed/server/filer_server_handlers_write_autochunk.go index d308dafa2..b204d409b 100644 --- a/weed/server/filer_server_handlers_write_autochunk.go +++ b/weed/server/filer_server_handlers_write_autochunk.go @@ -21,6 +21,7 @@ import ( xhttp "github.com/chrislusf/seaweedfs/weed/s3api/http" "github.com/chrislusf/seaweedfs/weed/security" "github.com/chrislusf/seaweedfs/weed/stats" + "github.com/chrislusf/seaweedfs/weed/storage/needle" "github.com/chrislusf/seaweedfs/weed/util" ) @@ -177,8 +178,18 @@ func (fs *FilerServer) saveMetaData(ctx context.Context, r *http.Request, fileNa Size: chunkOffset, } + if entry.Extended == nil { + entry.Extended = make(map[string][]byte) + } + fs.saveAmzMetaData(r, entry) + for k, v := range r.Header { + if len(v) > 0 && strings.HasPrefix(k, needle.PairNamePrefix) { + entry.Extended[k[len(needle.PairNamePrefix):]] = []byte(v[0]) + } + } + if dbErr := fs.filer.CreateEntry(ctx, entry, false, false, nil); dbErr != nil { fs.filer.DeleteChunks(entry.Chunks) replyerr = dbErr @@ -314,10 +325,6 @@ func (fs *FilerServer) mkdir(ctx context.Context, w http.ResponseWriter, r *http func (fs *FilerServer) saveAmzMetaData(r *http.Request, entry *filer.Entry) { - if entry.Extended == nil { - entry.Extended = make(map[string][]byte) - } - if sc := r.Header.Get(xhttp.AmzStorageClass); sc != "" { entry.Extended[xhttp.AmzStorageClass] = []byte(sc) }