From 2ca1fa104fbd84be6cc9b1f4d8d62ba436ca8ecb Mon Sep 17 00:00:00 2001 From: Charles hsu Date: Tue, 13 Sep 2022 20:46:00 +0800 Subject: [PATCH 1/2] Allow extra headers of HEAD request for container/object requests. --- dlo.go | 4 ++-- dlo_test.go | 4 ++-- largeobjects.go | 8 ++++---- slo.go | 2 +- swift.go | 14 ++++++++------ swift_test.go | 48 ++++++++++++++++++++++++------------------------ 6 files changed, 41 insertions(+), 39 deletions(-) diff --git a/dlo.go b/dlo.go index da0684a76..a3a5daa0c 100644 --- a/dlo.go +++ b/dlo.go @@ -41,7 +41,7 @@ func (c *Connection) DynamicLargeObjectDelete(ctx context.Context, container str // DynamicLargeObjectMove moves a dynamic large object from srcContainer, srcObjectName to dstContainer, dstObjectName func (c *Connection) DynamicLargeObjectMove(ctx context.Context, srcContainer string, srcObjectName string, dstContainer string, dstObjectName string) error { - info, headers, err := c.Object(ctx, srcContainer, srcObjectName) + info, headers, err := c.Object(ctx, srcContainer, srcObjectName, nil) if err != nil { return err } @@ -135,7 +135,7 @@ func (c *Connection) getAllDLOSegments(ctx context.Context, segmentContainer, se //guaranteed to return the correct metadata, except for the pathological //case of an outage of large parts of the Swift cluster or its network, //since every segment is only written once.) - segment, _, err := c.Object(ctx, segmentContainer, segmentName) + segment, _, err := c.Object(ctx, segmentContainer, segmentName, nil) switch err { case nil: //found new segment -> add it in the correct position and keep diff --git a/dlo_test.go b/dlo_test.go index 1764a473c..49ba3b2f0 100644 --- a/dlo_test.go +++ b/dlo_test.go @@ -103,7 +103,7 @@ func createDynamicObject(container, object string, t *testing.T) { } func checkObject(container, object string, t *testing.T) { ctx := context.Background() - info, header, err := con.Object(ctx, container, object) + info, header, err := con.Object(ctx, container, object, nil) if err != nil { t.Errorf("Fail at get Large Object metadata: %s", err.Error()) } @@ -127,7 +127,7 @@ func checkObject(container, object string, t *testing.T) { } func checkNotExistObject(container, object string, t *testing.T) { - _, _, err = con.Object(context.Background(), container, object) + _, _, err = con.Object(context.Background(), container, object, nil) if err == nil || err.Error() != "Object Not Found" { t.Errorf("Fail at checkNotExistObject object: %s", err) } diff --git a/largeobjects.go b/largeobjects.go index 369ada715..973ba36c2 100644 --- a/largeobjects.go +++ b/largeobjects.go @@ -147,7 +147,7 @@ func (c *Connection) largeObjectCreate(ctx context.Context, opts *LargeObjectOpt return nil, err } - if info, headers, err := c.Object(ctx, opts.Container, opts.ObjectName); err == nil { + if info, headers, err := c.Object(ctx, opts.Container, opts.ObjectName, nil); err == nil { if opts.Flags&os.O_TRUNC != 0 { err := c.LargeObjectDelete(ctx, opts.Container, opts.ObjectName) if err != nil { @@ -214,7 +214,7 @@ func (c *Connection) largeObjectCreate(ctx context.Context, opts *LargeObjectOpt // LargeObjectDelete deletes the large object named by container, path func (c *Connection) LargeObjectDelete(ctx context.Context, container string, objectName string) error { - _, headers, err := c.Object(ctx, container, objectName) + _, headers, err := c.Object(ctx, container, objectName, nil) if err != nil { return err } @@ -260,7 +260,7 @@ func (c *Connection) LargeObjectDelete(ctx context.Context, container string, ob // If the object is a Static Large Object (SLO), it retrieves the JSON content // of the manifest and return all the segments of it. func (c *Connection) LargeObjectGetSegments(ctx context.Context, container string, path string) (string, []Object, error) { - _, headers, err := c.Object(ctx, container, path) + _, headers, err := c.Object(ctx, container, path, nil) if err != nil { return "", nil, err } @@ -320,7 +320,7 @@ func (c *Connection) waitForSegmentsToShowUp(ctx context.Context, container, obj err = withLORetry(expectedSize, func() (Headers, int64, error) { var info Object var headers Headers - info, headers, err = c.objectBase(ctx, container, objectName) + info, headers, err = c.objectBase(ctx, container, objectName, nil) if err != nil { return headers, 0, err } diff --git a/slo.go b/slo.go index acbf5b125..109e834d5 100644 --- a/slo.go +++ b/slo.go @@ -79,7 +79,7 @@ func (c *Connection) StaticLargeObjectMove(ctx context.Context, srcContainer str if err != nil || !swiftInfo.SupportsSLO() { return SLONotSupported } - info, headers, err := c.Object(ctx, srcContainer, srcObjectName) + info, headers, err := c.Object(ctx, srcContainer, srcObjectName, nil) if err != nil { return err } diff --git a/swift.go b/swift.go index c9357ee3f..c98af2ad9 100644 --- a/swift.go +++ b/swift.go @@ -1328,13 +1328,14 @@ func (c *Connection) ContainerDelete(ctx context.Context, container string) erro // Container returns info about a single container including any // metadata in the headers. -func (c *Connection) Container(ctx context.Context, container string) (info Container, headers Headers, err error) { +func (c *Connection) Container(ctx context.Context, container string, h Headers) (info Container, headers Headers, err error) { var resp *http.Response resp, headers, err = c.storage(ctx, RequestOpts{ Container: container, Operation: "HEAD", ErrorMap: ContainerErrorMap, NoResponse: true, + Headers: h, }) if err != nil { return @@ -1719,7 +1720,7 @@ func (file *ObjectOpenFile) Seek(ctx context.Context, offset int64, whence int) // from the server. func (file *ObjectOpenFile) Length(ctx context.Context) (int64, error) { if !file.lengthOk { - info, _, err := file.connection.Object(ctx, file.container, file.objectName) + info, _, err := file.connection.Object(ctx, file.container, file.objectName, nil) file.length = info.Bytes file.lengthOk = (err == nil) return file.length, err @@ -2107,9 +2108,9 @@ func (c *Connection) BulkUpload(ctx context.Context, uploadPath string, dataStre // May return ObjectNotFound. // // Use headers.ObjectMetadata() to read the metadata in the Headers. -func (c *Connection) Object(ctx context.Context, container string, objectName string) (info Object, headers Headers, err error) { +func (c *Connection) Object(ctx context.Context, container string, objectName string, h Headers) (info Object, headers Headers, err error) { err = withLORetry(0, func() (Headers, int64, error) { - info, headers, err = c.objectBase(ctx, container, objectName) + info, headers, err = c.objectBase(ctx, container, objectName, h) if err != nil { return headers, 0, err } @@ -2118,7 +2119,7 @@ func (c *Connection) Object(ctx context.Context, container string, objectName st return } -func (c *Connection) objectBase(ctx context.Context, container string, objectName string) (info Object, headers Headers, err error) { +func (c *Connection) objectBase(ctx context.Context, container string, objectName string, h Headers) (info Object, headers Headers, err error) { var resp *http.Response resp, headers, err = c.storage(ctx, RequestOpts{ Container: container, @@ -2126,6 +2127,7 @@ func (c *Connection) objectBase(ctx context.Context, container string, objectNam Operation: "HEAD", ErrorMap: objectErrorMap, NoResponse: true, + Headers: h, }) if err != nil { return @@ -2297,7 +2299,7 @@ func (c *Connection) VersionEnable(ctx context.Context, current, version string) return err } // Check to see if the header was set properly - _, headers, err := c.Container(ctx, current) + _, headers, err := c.Container(ctx, current, nil) if err != nil { return err } diff --git a/swift_test.go b/swift_test.go index f75ad8eeb..a5b259419 100644 --- a/swift_test.go +++ b/swift_test.go @@ -643,7 +643,7 @@ func TestContainer(t *testing.T) { ctx := context.Background() c, rollback := makeConnectionWithContainer(t) defer rollback() - info, headers, err := c.Container(ctx, CONTAINER) + info, headers, err := c.Container(ctx, CONTAINER, nil) if err != nil { t.Fatal(err) } @@ -711,7 +711,7 @@ func TestContainerUpdate(t *testing.T) { if err != nil { t.Fatal(err) } - _, headers, err := c.Container(ctx, CONTAINER) + _, headers, err := c.Container(ctx, CONTAINER, nil) if err != nil { t.Fatal(err) } @@ -797,7 +797,7 @@ func TestObjectPutString(t *testing.T) { } }() - info, _, err := c.Object(ctx, CONTAINER, OBJECT) + info, _, err := c.Object(ctx, CONTAINER, OBJECT, nil) if err != nil { t.Error(err) } @@ -846,7 +846,7 @@ func TestObjectPut(t *testing.T) { } // Fetch object info and compare - info, _, err := c.Object(ctx, CONTAINER, OBJECT) + info, _, err := c.Object(ctx, CONTAINER, OBJECT, nil) if err != nil { t.Error(err) } @@ -878,7 +878,7 @@ func TestObjectPutWithReauth(t *testing.T) { t.Fatal(err) } - info, _, err := c.Object(ctx, CONTAINER, OBJECT) + info, _, err := c.Object(ctx, CONTAINER, OBJECT, nil) if err != nil { t.Error(err) } @@ -909,7 +909,7 @@ func TestObjectPutStringWithReauth(t *testing.T) { t.Fatal(err) } - info, _, err := c.Object(ctx, CONTAINER, OBJECT) + info, _, err := c.Object(ctx, CONTAINER, OBJECT, nil) if err != nil { t.Error(err) } @@ -939,7 +939,7 @@ func TestObjectEmpty(t *testing.T) { } }() - info, _, err := c.Object(ctx, CONTAINER, EMPTYOBJECT) + info, _, err := c.Object(ctx, CONTAINER, EMPTYOBJECT, nil) if err != nil { t.Error(err) } @@ -992,7 +992,7 @@ func TestSymlinkObject(t *testing.T) { } }() - md, _, err := c.Object(ctx, CONTAINER, SYMLINK_OBJECT) + md, _, err := c.Object(ctx, CONTAINER, SYMLINK_OBJECT, nil) if err != nil { t.Error(err) } @@ -1057,7 +1057,7 @@ func TestStaticSymlinkObject(t *testing.T) { } }() - md, _, err := c.Object(ctx, CONTAINER, SYMLINK_OBJECT2) + md, _, err := c.Object(ctx, CONTAINER, SYMLINK_OBJECT2, nil) if err != nil { t.Error(err) } @@ -1087,7 +1087,7 @@ func TestObjectPutBytes(t *testing.T) { } }() - info, _, err := c.Object(ctx, CONTAINER, OBJECT) + info, _, err := c.Object(ctx, CONTAINER, OBJECT, nil) if err != nil { t.Error(err) } @@ -1117,7 +1117,7 @@ func TestObjectPutMimeType(t *testing.T) { } }() - info, _, err := c.Object(ctx, CONTAINER, "test.jpg") + info, _, err := c.Object(ctx, CONTAINER, "test.jpg", nil) if err != nil { t.Error(err) } @@ -1487,7 +1487,7 @@ func TestObject(t *testing.T) { ctx := context.Background() c, rollback := makeConnectionWithObjectHeaders(t) defer rollback() - object, headers, err := c.Object(ctx, CONTAINER, OBJECT) + object, headers, err := c.Object(ctx, CONTAINER, OBJECT, nil) if err != nil { t.Fatal(err) } @@ -1506,7 +1506,7 @@ func TestObjectUpdate2(t *testing.T) { if err != nil { t.Fatal(err) } - _, headers, err := c.Object(ctx, CONTAINER, OBJECT) + _, headers, err := c.Object(ctx, CONTAINER, OBJECT, nil) if err != nil { t.Fatal(err) } @@ -1801,7 +1801,7 @@ func TestObjectCopyWithMetadata(t *testing.T) { } }() // Re-read the metadata to see if it is correct - _, headers, err := c.Object(ctx, CONTAINER, OBJECT2) + _, headers, err := c.Object(ctx, CONTAINER, OBJECT2, nil) if err != nil { t.Fatal(err) } @@ -1820,7 +1820,7 @@ func TestObjectMove(t *testing.T) { t.Fatal(err) } testExistenceAfterDelete(t, c, CONTAINER, OBJECT) - _, _, err = c.Object(ctx, CONTAINER, OBJECT2) + _, _, err = c.Object(ctx, CONTAINER, OBJECT2, nil) if err != nil { t.Fatal(err) } @@ -1830,7 +1830,7 @@ func TestObjectMove(t *testing.T) { t.Fatal(err) } testExistenceAfterDelete(t, c, CONTAINER, OBJECT2) - _, headers, err := c.Object(ctx, CONTAINER, OBJECT) + _, headers, err := c.Object(ctx, CONTAINER, OBJECT, nil) if err != nil { t.Fatal(err) } @@ -1846,7 +1846,7 @@ func TestObjectUpdateContentType(t *testing.T) { t.Fatal(err) } // Re-read the metadata to see if it is correct - _, headers, err := c.Object(ctx, CONTAINER, OBJECT) + _, headers, err := c.Object(ctx, CONTAINER, OBJECT, nil) if err != nil { t.Fatal(err) } @@ -2000,7 +2000,7 @@ func TestVersionDeleteContent(t *testing.T) { func testExistenceAfterDelete(t *testing.T, c *swift.Connection, container, object string) { ctx := context.Background() for i := 10; i <= 0; i-- { - _, _, err := c.Object(ctx, container, object) + _, _, err := c.Object(ctx, CONTAINER, OBJECT, nil) if err == swift.ObjectNotFound { break } @@ -2110,11 +2110,11 @@ func TestBulkUpload(t *testing.T) { } t.Log("Errors:", result.Errors) - _, _, err = c.Object(ctx, CONTAINER, OBJECT) + _, _, err = c.Object(ctx, CONTAINER, OBJECT, nil) if err != nil { t.Error("Expecting object to be found") } - _, _, err = c.Object(ctx, CONTAINER, OBJECT2) + _, _, err = c.Object(ctx, CONTAINER, OBJECT2, nil) if err != nil { t.Error("Expecting object to be found") } @@ -2266,7 +2266,7 @@ func TestDLOCreate(t *testing.T) { if contents != expected { t.Errorf("Contents wrong, expected %q, got: %q", expected, contents) } - info, _, err := c.Object(ctx, CONTAINER, OBJECT) + info, _, err := c.Object(ctx, CONTAINER, OBJECT, nil) if err != nil { t.Fatal(err) } @@ -2833,7 +2833,7 @@ func TestSLOCreate(t *testing.T) { if contents != expected { t.Errorf("Contents wrong, expected %q, got: %q", expected, contents) } - info, _, err := c.Object(ctx, CONTAINER, OBJECT) + info, _, err := c.Object(ctx, CONTAINER, OBJECT, nil) if err != nil { t.Fatal(err) } @@ -3196,7 +3196,7 @@ func testSegmentation(t *testing.T, c *swift.Connection, createObj func() swift. if container != SEGMENTS_CONTAINER { t.Errorf("Segments container wrong, expected %q, got: %q", SEGMENTS_CONTAINER, container) } - _, headers, err := c.Object(ctx, CONTAINER, OBJECT) + _, headers, err := c.Object(ctx, CONTAINER, OBJECT, nil) if err != nil { t.Fatal(err) } @@ -3241,7 +3241,7 @@ func TestContainerDelete(t *testing.T) { if err != swift.ContainerNotFound { t.Fatal("Expecting container not found", err) } - _, _, err = c.Container(ctx, CONTAINER) + _, _, err = c.Container(ctx, CONTAINER, nil) if err != swift.ContainerNotFound { t.Fatal("Expecting container not found", err) } From 54647c3d2cc51f9b96d3930bcaed8f536be6b8c0 Mon Sep 17 00:00:00 2001 From: Charles hsu Date: Mon, 26 Sep 2022 23:19:11 +0800 Subject: [PATCH 2/2] Added ExtraHeadersForObjectHEAD and ExtraHeadersForContainerHEAD. --- dlo.go | 4 ++-- dlo_test.go | 4 ++-- largeobjects.go | 8 ++++---- slo.go | 2 +- swift.go | 20 ++++++++++++-------- swift_test.go | 48 ++++++++++++++++++++++++------------------------ 6 files changed, 45 insertions(+), 41 deletions(-) diff --git a/dlo.go b/dlo.go index a3a5daa0c..da0684a76 100644 --- a/dlo.go +++ b/dlo.go @@ -41,7 +41,7 @@ func (c *Connection) DynamicLargeObjectDelete(ctx context.Context, container str // DynamicLargeObjectMove moves a dynamic large object from srcContainer, srcObjectName to dstContainer, dstObjectName func (c *Connection) DynamicLargeObjectMove(ctx context.Context, srcContainer string, srcObjectName string, dstContainer string, dstObjectName string) error { - info, headers, err := c.Object(ctx, srcContainer, srcObjectName, nil) + info, headers, err := c.Object(ctx, srcContainer, srcObjectName) if err != nil { return err } @@ -135,7 +135,7 @@ func (c *Connection) getAllDLOSegments(ctx context.Context, segmentContainer, se //guaranteed to return the correct metadata, except for the pathological //case of an outage of large parts of the Swift cluster or its network, //since every segment is only written once.) - segment, _, err := c.Object(ctx, segmentContainer, segmentName, nil) + segment, _, err := c.Object(ctx, segmentContainer, segmentName) switch err { case nil: //found new segment -> add it in the correct position and keep diff --git a/dlo_test.go b/dlo_test.go index 49ba3b2f0..1764a473c 100644 --- a/dlo_test.go +++ b/dlo_test.go @@ -103,7 +103,7 @@ func createDynamicObject(container, object string, t *testing.T) { } func checkObject(container, object string, t *testing.T) { ctx := context.Background() - info, header, err := con.Object(ctx, container, object, nil) + info, header, err := con.Object(ctx, container, object) if err != nil { t.Errorf("Fail at get Large Object metadata: %s", err.Error()) } @@ -127,7 +127,7 @@ func checkObject(container, object string, t *testing.T) { } func checkNotExistObject(container, object string, t *testing.T) { - _, _, err = con.Object(context.Background(), container, object, nil) + _, _, err = con.Object(context.Background(), container, object) if err == nil || err.Error() != "Object Not Found" { t.Errorf("Fail at checkNotExistObject object: %s", err) } diff --git a/largeobjects.go b/largeobjects.go index 973ba36c2..369ada715 100644 --- a/largeobjects.go +++ b/largeobjects.go @@ -147,7 +147,7 @@ func (c *Connection) largeObjectCreate(ctx context.Context, opts *LargeObjectOpt return nil, err } - if info, headers, err := c.Object(ctx, opts.Container, opts.ObjectName, nil); err == nil { + if info, headers, err := c.Object(ctx, opts.Container, opts.ObjectName); err == nil { if opts.Flags&os.O_TRUNC != 0 { err := c.LargeObjectDelete(ctx, opts.Container, opts.ObjectName) if err != nil { @@ -214,7 +214,7 @@ func (c *Connection) largeObjectCreate(ctx context.Context, opts *LargeObjectOpt // LargeObjectDelete deletes the large object named by container, path func (c *Connection) LargeObjectDelete(ctx context.Context, container string, objectName string) error { - _, headers, err := c.Object(ctx, container, objectName, nil) + _, headers, err := c.Object(ctx, container, objectName) if err != nil { return err } @@ -260,7 +260,7 @@ func (c *Connection) LargeObjectDelete(ctx context.Context, container string, ob // If the object is a Static Large Object (SLO), it retrieves the JSON content // of the manifest and return all the segments of it. func (c *Connection) LargeObjectGetSegments(ctx context.Context, container string, path string) (string, []Object, error) { - _, headers, err := c.Object(ctx, container, path, nil) + _, headers, err := c.Object(ctx, container, path) if err != nil { return "", nil, err } @@ -320,7 +320,7 @@ func (c *Connection) waitForSegmentsToShowUp(ctx context.Context, container, obj err = withLORetry(expectedSize, func() (Headers, int64, error) { var info Object var headers Headers - info, headers, err = c.objectBase(ctx, container, objectName, nil) + info, headers, err = c.objectBase(ctx, container, objectName) if err != nil { return headers, 0, err } diff --git a/slo.go b/slo.go index 109e834d5..acbf5b125 100644 --- a/slo.go +++ b/slo.go @@ -79,7 +79,7 @@ func (c *Connection) StaticLargeObjectMove(ctx context.Context, srcContainer str if err != nil || !swiftInfo.SupportsSLO() { return SLONotSupported } - info, headers, err := c.Object(ctx, srcContainer, srcObjectName, nil) + info, headers, err := c.Object(ctx, srcContainer, srcObjectName) if err != nil { return err } diff --git a/swift.go b/swift.go index c98af2ad9..b1b21b10c 100644 --- a/swift.go +++ b/swift.go @@ -131,6 +131,10 @@ type Connection struct { // Workarounds for non-compliant servers that don't always return opts.Limit items per page FetchUntilEmptyPage bool // Always fetch unless we received an empty page PartialPageFetchThreshold int // Fetch if the current page is this percentage of opts.Limit + // Extra Headers for Continer HEAD reqeust + ExtraHeadersForContinerHEAD Headers `json:"-" xml:"-"` + // Extra Headers for Object HEAD reqeust + ExtraHeadersForObjectHEAD Headers `json:"-" xml:"-"` } // setFromEnv reads the value that param points to (it must be a @@ -1328,14 +1332,14 @@ func (c *Connection) ContainerDelete(ctx context.Context, container string) erro // Container returns info about a single container including any // metadata in the headers. -func (c *Connection) Container(ctx context.Context, container string, h Headers) (info Container, headers Headers, err error) { +func (c *Connection) Container(ctx context.Context, container string) (info Container, headers Headers, err error) { var resp *http.Response resp, headers, err = c.storage(ctx, RequestOpts{ Container: container, Operation: "HEAD", ErrorMap: ContainerErrorMap, NoResponse: true, - Headers: h, + Headers: c.ExtraHeadersForContinerHEAD, }) if err != nil { return @@ -1720,7 +1724,7 @@ func (file *ObjectOpenFile) Seek(ctx context.Context, offset int64, whence int) // from the server. func (file *ObjectOpenFile) Length(ctx context.Context) (int64, error) { if !file.lengthOk { - info, _, err := file.connection.Object(ctx, file.container, file.objectName, nil) + info, _, err := file.connection.Object(ctx, file.container, file.objectName) file.length = info.Bytes file.lengthOk = (err == nil) return file.length, err @@ -2108,9 +2112,9 @@ func (c *Connection) BulkUpload(ctx context.Context, uploadPath string, dataStre // May return ObjectNotFound. // // Use headers.ObjectMetadata() to read the metadata in the Headers. -func (c *Connection) Object(ctx context.Context, container string, objectName string, h Headers) (info Object, headers Headers, err error) { +func (c *Connection) Object(ctx context.Context, container string, objectName string) (info Object, headers Headers, err error) { err = withLORetry(0, func() (Headers, int64, error) { - info, headers, err = c.objectBase(ctx, container, objectName, h) + info, headers, err = c.objectBase(ctx, container, objectName) if err != nil { return headers, 0, err } @@ -2119,7 +2123,7 @@ func (c *Connection) Object(ctx context.Context, container string, objectName st return } -func (c *Connection) objectBase(ctx context.Context, container string, objectName string, h Headers) (info Object, headers Headers, err error) { +func (c *Connection) objectBase(ctx context.Context, container string, objectName string) (info Object, headers Headers, err error) { var resp *http.Response resp, headers, err = c.storage(ctx, RequestOpts{ Container: container, @@ -2127,7 +2131,7 @@ func (c *Connection) objectBase(ctx context.Context, container string, objectNam Operation: "HEAD", ErrorMap: objectErrorMap, NoResponse: true, - Headers: h, + Headers: c.ExtraHeadersForObjectHEAD, }) if err != nil { return @@ -2299,7 +2303,7 @@ func (c *Connection) VersionEnable(ctx context.Context, current, version string) return err } // Check to see if the header was set properly - _, headers, err := c.Container(ctx, current, nil) + _, headers, err := c.Container(ctx, current) if err != nil { return err } diff --git a/swift_test.go b/swift_test.go index a5b259419..f75ad8eeb 100644 --- a/swift_test.go +++ b/swift_test.go @@ -643,7 +643,7 @@ func TestContainer(t *testing.T) { ctx := context.Background() c, rollback := makeConnectionWithContainer(t) defer rollback() - info, headers, err := c.Container(ctx, CONTAINER, nil) + info, headers, err := c.Container(ctx, CONTAINER) if err != nil { t.Fatal(err) } @@ -711,7 +711,7 @@ func TestContainerUpdate(t *testing.T) { if err != nil { t.Fatal(err) } - _, headers, err := c.Container(ctx, CONTAINER, nil) + _, headers, err := c.Container(ctx, CONTAINER) if err != nil { t.Fatal(err) } @@ -797,7 +797,7 @@ func TestObjectPutString(t *testing.T) { } }() - info, _, err := c.Object(ctx, CONTAINER, OBJECT, nil) + info, _, err := c.Object(ctx, CONTAINER, OBJECT) if err != nil { t.Error(err) } @@ -846,7 +846,7 @@ func TestObjectPut(t *testing.T) { } // Fetch object info and compare - info, _, err := c.Object(ctx, CONTAINER, OBJECT, nil) + info, _, err := c.Object(ctx, CONTAINER, OBJECT) if err != nil { t.Error(err) } @@ -878,7 +878,7 @@ func TestObjectPutWithReauth(t *testing.T) { t.Fatal(err) } - info, _, err := c.Object(ctx, CONTAINER, OBJECT, nil) + info, _, err := c.Object(ctx, CONTAINER, OBJECT) if err != nil { t.Error(err) } @@ -909,7 +909,7 @@ func TestObjectPutStringWithReauth(t *testing.T) { t.Fatal(err) } - info, _, err := c.Object(ctx, CONTAINER, OBJECT, nil) + info, _, err := c.Object(ctx, CONTAINER, OBJECT) if err != nil { t.Error(err) } @@ -939,7 +939,7 @@ func TestObjectEmpty(t *testing.T) { } }() - info, _, err := c.Object(ctx, CONTAINER, EMPTYOBJECT, nil) + info, _, err := c.Object(ctx, CONTAINER, EMPTYOBJECT) if err != nil { t.Error(err) } @@ -992,7 +992,7 @@ func TestSymlinkObject(t *testing.T) { } }() - md, _, err := c.Object(ctx, CONTAINER, SYMLINK_OBJECT, nil) + md, _, err := c.Object(ctx, CONTAINER, SYMLINK_OBJECT) if err != nil { t.Error(err) } @@ -1057,7 +1057,7 @@ func TestStaticSymlinkObject(t *testing.T) { } }() - md, _, err := c.Object(ctx, CONTAINER, SYMLINK_OBJECT2, nil) + md, _, err := c.Object(ctx, CONTAINER, SYMLINK_OBJECT2) if err != nil { t.Error(err) } @@ -1087,7 +1087,7 @@ func TestObjectPutBytes(t *testing.T) { } }() - info, _, err := c.Object(ctx, CONTAINER, OBJECT, nil) + info, _, err := c.Object(ctx, CONTAINER, OBJECT) if err != nil { t.Error(err) } @@ -1117,7 +1117,7 @@ func TestObjectPutMimeType(t *testing.T) { } }() - info, _, err := c.Object(ctx, CONTAINER, "test.jpg", nil) + info, _, err := c.Object(ctx, CONTAINER, "test.jpg") if err != nil { t.Error(err) } @@ -1487,7 +1487,7 @@ func TestObject(t *testing.T) { ctx := context.Background() c, rollback := makeConnectionWithObjectHeaders(t) defer rollback() - object, headers, err := c.Object(ctx, CONTAINER, OBJECT, nil) + object, headers, err := c.Object(ctx, CONTAINER, OBJECT) if err != nil { t.Fatal(err) } @@ -1506,7 +1506,7 @@ func TestObjectUpdate2(t *testing.T) { if err != nil { t.Fatal(err) } - _, headers, err := c.Object(ctx, CONTAINER, OBJECT, nil) + _, headers, err := c.Object(ctx, CONTAINER, OBJECT) if err != nil { t.Fatal(err) } @@ -1801,7 +1801,7 @@ func TestObjectCopyWithMetadata(t *testing.T) { } }() // Re-read the metadata to see if it is correct - _, headers, err := c.Object(ctx, CONTAINER, OBJECT2, nil) + _, headers, err := c.Object(ctx, CONTAINER, OBJECT2) if err != nil { t.Fatal(err) } @@ -1820,7 +1820,7 @@ func TestObjectMove(t *testing.T) { t.Fatal(err) } testExistenceAfterDelete(t, c, CONTAINER, OBJECT) - _, _, err = c.Object(ctx, CONTAINER, OBJECT2, nil) + _, _, err = c.Object(ctx, CONTAINER, OBJECT2) if err != nil { t.Fatal(err) } @@ -1830,7 +1830,7 @@ func TestObjectMove(t *testing.T) { t.Fatal(err) } testExistenceAfterDelete(t, c, CONTAINER, OBJECT2) - _, headers, err := c.Object(ctx, CONTAINER, OBJECT, nil) + _, headers, err := c.Object(ctx, CONTAINER, OBJECT) if err != nil { t.Fatal(err) } @@ -1846,7 +1846,7 @@ func TestObjectUpdateContentType(t *testing.T) { t.Fatal(err) } // Re-read the metadata to see if it is correct - _, headers, err := c.Object(ctx, CONTAINER, OBJECT, nil) + _, headers, err := c.Object(ctx, CONTAINER, OBJECT) if err != nil { t.Fatal(err) } @@ -2000,7 +2000,7 @@ func TestVersionDeleteContent(t *testing.T) { func testExistenceAfterDelete(t *testing.T, c *swift.Connection, container, object string) { ctx := context.Background() for i := 10; i <= 0; i-- { - _, _, err := c.Object(ctx, CONTAINER, OBJECT, nil) + _, _, err := c.Object(ctx, container, object) if err == swift.ObjectNotFound { break } @@ -2110,11 +2110,11 @@ func TestBulkUpload(t *testing.T) { } t.Log("Errors:", result.Errors) - _, _, err = c.Object(ctx, CONTAINER, OBJECT, nil) + _, _, err = c.Object(ctx, CONTAINER, OBJECT) if err != nil { t.Error("Expecting object to be found") } - _, _, err = c.Object(ctx, CONTAINER, OBJECT2, nil) + _, _, err = c.Object(ctx, CONTAINER, OBJECT2) if err != nil { t.Error("Expecting object to be found") } @@ -2266,7 +2266,7 @@ func TestDLOCreate(t *testing.T) { if contents != expected { t.Errorf("Contents wrong, expected %q, got: %q", expected, contents) } - info, _, err := c.Object(ctx, CONTAINER, OBJECT, nil) + info, _, err := c.Object(ctx, CONTAINER, OBJECT) if err != nil { t.Fatal(err) } @@ -2833,7 +2833,7 @@ func TestSLOCreate(t *testing.T) { if contents != expected { t.Errorf("Contents wrong, expected %q, got: %q", expected, contents) } - info, _, err := c.Object(ctx, CONTAINER, OBJECT, nil) + info, _, err := c.Object(ctx, CONTAINER, OBJECT) if err != nil { t.Fatal(err) } @@ -3196,7 +3196,7 @@ func testSegmentation(t *testing.T, c *swift.Connection, createObj func() swift. if container != SEGMENTS_CONTAINER { t.Errorf("Segments container wrong, expected %q, got: %q", SEGMENTS_CONTAINER, container) } - _, headers, err := c.Object(ctx, CONTAINER, OBJECT, nil) + _, headers, err := c.Object(ctx, CONTAINER, OBJECT) if err != nil { t.Fatal(err) } @@ -3241,7 +3241,7 @@ func TestContainerDelete(t *testing.T) { if err != swift.ContainerNotFound { t.Fatal("Expecting container not found", err) } - _, _, err = c.Container(ctx, CONTAINER, nil) + _, _, err = c.Container(ctx, CONTAINER) if err != swift.ContainerNotFound { t.Fatal("Expecting container not found", err) }