From e8ba43c479d5201921f88e0490a825b36f348081 Mon Sep 17 00:00:00 2001 From: Nick Craig-Wood Date: Wed, 11 Nov 2015 17:19:57 +0000 Subject: [PATCH] swift: Use ContentType from Object to avoid lookups in listings - fixes #208 --- swift/swift.go | 18 ++++-------------- 1 file changed, 4 insertions(+), 14 deletions(-) diff --git a/swift/swift.go b/swift/swift.go index 45b6ab347..63ad5ba7b 100644 --- a/swift/swift.go +++ b/swift/swift.go @@ -20,7 +20,6 @@ import ( // Constants const ( directoryMarkerContentType = "application/directory" // content type of directory marker objects - directoryMarkerMaxSize = 1 // max size that directory marker objects can be ) // Globals @@ -179,9 +178,9 @@ func NewFs(name, root string) (fs.Fs, error) { } if f.root != "" { f.root += "/" - // Check to see if the object exists - ignore directory markers - _, headers, err := f.c.Object(container, directory) - if err == nil && headers["Content-Type"] != directoryMarkerContentType { + // Check to see if the object exists - ignoring directory markers + info, _, err := f.c.Object(container, directory) + if err == nil && info.ContentType != directoryMarkerContentType { remote := path.Base(directory) f.root = path.Dir(directory) if f.root == "." { @@ -536,16 +535,7 @@ func (o *Object) SetModTime(modTime time.Time) { // Content-Type to directoryMarkerContentType - that makes it a // directory marker which is not storable. func (o *Object) Storable() bool { - if o.info.Bytes > directoryMarkerMaxSize { - return true - } - err := o.readMetaData() - if err != nil { - fs.Debug(o, "Failed to read metadata: %s", err) - return true - } - contentType := (*o.headers)["Content-Type"] - return contentType != directoryMarkerContentType + return o.info.ContentType != directoryMarkerContentType } // Open an object for read