diff options
| author | Stefan Majewsky <majewsky@gmx.net> | 2018-02-19 15:03:56 +0100 |
|---|---|---|
| committer | Stefan Majewsky <majewsky@gmx.net> | 2018-02-19 15:03:56 +0100 |
| commit | 502acc3c73e789e856a17b878889db4356fe898c (patch) | |
| tree | f3d48ed5d6dd950bc2c3c4a9e2a6cc670a7c8034 /object.go | |
| parent | 1a84987c7e28094f4e65bfb0fa03fdf5059ef6cc (diff) | |
| download | go-schwift-502acc3c73e789e856a17b878889db4356fe898c.tar.gz | |
add Object.Download(), DownloadedObject
Diffstat (limited to 'object.go')
| -rw-r--r-- | object.go | 32 |
1 files changed, 31 insertions, 1 deletions
@@ -262,5 +262,35 @@ func (o *Object) Invalidate() { o.headers = nil } -//TODO Object.Copy(), Object.Move(), Object.Download() +//Download retrieves the object's contents using a GET request. This returns a +//helper object which allows you to select whether you want an io.ReadCloser +//for reading the object contents progressively, or whether you want the object +//contents collected into a byte slice or string. +// +// reader, err := object.Download(nil, nil).AsReadCloser() +// +// buf, err := object.Download(nil, nil).AsByteSlice() +// +// str, err := object.Download(nil, nil).AsString() +// +func (o *Object) Download(headers ObjectHeaders, opts *RequestOptions) DownloadedObject { + resp, err := Request{ + Method: "GET", + ContainerName: o.c.name, + ObjectName: o.name, + Headers: headersToHTTP(headers), + Options: opts, + ExpectStatusCodes: []int{200}, + }.Do(o.c.a.client) + if err == nil { + headers := ObjectHeaders(headersFromHTTP(resp.Header)) + err = headers.Validate() + if err == nil { + o.headers = &headers + } + } + return DownloadedObject{resp.Body, err} +} + +//TODO Object.Copy(), Object.Move() //TODO provide a companion to Object.Upload() to connect it with content-generating functions where an io.Writer needs to be given |
