MCPcopy
hub / github.com/minio/minio-go / extractObjMetadata

Function extractObjMetadata

utils.go:204–250  ·  view source on GitHub ↗

Extract only necessary metadata header key/values by filtering them out with a list of custom header keys.

(header http.Header)

Source from the content-addressed store, hash-verified

202// Extract only necessary metadata header key/values by
203// filtering them out with a list of custom header keys.
204func extractObjMetadata(header http.Header) http.Header {
205 preserveKeys := []string{
206 "Content-Type",
207 "Cache-Control",
208 "Content-Encoding",
209 "Content-Language",
210 "Content-Disposition",
211 "X-Amz-Storage-Class",
212 "X-Amz-Object-Lock-Mode",
213 "X-Amz-Object-Lock-Retain-Until-Date",
214 "X-Amz-Object-Lock-Legal-Hold",
215 "X-Amz-Website-Redirect-Location",
216 "X-Amz-Server-Side-Encryption",
217 "X-Amz-Tagging-Count",
218 "X-Amz-Meta-",
219 "X-Minio-Meta-",
220 // Add new headers to be preserved.
221 // if you add new headers here, please extend
222 // PutObjectOptions{} to preserve them
223 // upon upload as well.
224 }
225 filteredHeader := make(http.Header)
226 for k, v := range header {
227 var found bool
228 for _, prefix := range preserveKeys {
229 if !strings.HasPrefix(k, prefix) {
230 continue
231 }
232 found = true
233 if prefix == "X-Amz-Meta-" || prefix == "X-Minio-Meta-" {
234 for index, val := range v {
235 if strings.HasPrefix(val, "=?") {
236 decoder := mime.WordDecoder{}
237 if decoded, err := decoder.DecodeHeader(val); err == nil {
238 v[index] = decoded
239 }
240 }
241 }
242 }
243 break
244 }
245 if found {
246 filteredHeader[k] = v
247 }
248 }
249 return filteredHeader
250}
251
252const (
253 // RFC 7231#section-7.1.1.1 timetamp format. e.g Tue, 29 Apr 2014 18:30:38 GMT

Callers 2

TestExtractObjMetadataFunction · 0.85
ToObjectInfoFunction · 0.85

Calls

no outgoing calls

Tested by 1

TestExtractObjMetadataFunction · 0.68