Skip to content
This repository was archived by the owner on Aug 1, 2023. It is now read-only.

Commit 818308a

Browse files
James FisherSamuel Ortiz
authored andcommitted
GetImageData
1 parent b4bf00f commit 818308a

File tree

4 files changed

+59
-1
lines changed

4 files changed

+59
-1
lines changed

openstack/imageservice/v2/fixtures.go

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -156,3 +156,14 @@ func HandlePutImageDataSuccessfully(t *testing.T) {
156156
})
157157
}
158158

159+
func HandleGetImageDataSuccessfully(t *testing.T) {
160+
th.Mux.HandleFunc("/images/da3b75d9-3f4a-40e7-8a2c-bfab23927dea/file", func(w http.ResponseWriter, r *http.Request) {
161+
th.TestMethod(t, r, "GET")
162+
th.TestHeader(t, r, "X-Auth-Token", fakeclient.TokenID)
163+
164+
w.WriteHeader(http.StatusOK)
165+
166+
_, err := w.Write([]byte{34,87,0,23,23,23,56,255,254,0})
167+
th.AssertNoErr(t, err)
168+
})
169+
}

openstack/imageservice/v2/requests.go

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package v2
22

33
import (
4+
"net/http"
45
"io"
56

67
"github.com/rackspace/gophercloud"
@@ -194,4 +195,15 @@ func PutImageData(client *gophercloud.ServiceClient, id string, data io.ReadSeek
194195
return res
195196
}
196197

197-
// TODO func GetImageData
198+
func GetImageData(client *gophercloud.ServiceClient, id string) GetImageDataResult {
199+
var res GetImageDataResult
200+
201+
var resp *http.Response
202+
resp, res.Err = client.Get(imageDataURL(client, id), nil, &gophercloud.RequestOpts{
203+
OkCodes: []int{200},
204+
})
205+
206+
res.Body = resp.Body
207+
208+
return res
209+
}

openstack/imageservice/v2/requests_test.go

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,10 @@
11
package v2
22

33
import (
4+
"errors"
5+
"fmt"
46
"io"
7+
"io/ioutil"
58
"testing"
69

710
th "github.com/rackspace/gophercloud/testhelper"
@@ -210,7 +213,26 @@ func (rs *RS) Seek(offset int64, whence int) (int64, error) {
210213
rs.offset = rs.offset + offsetInt
211214
} else if whence == 2 {
212215
rs.offset = len(rs.bs) - offsetInt
216+
} else {
217+
return 0, errors.New(fmt.Sprintf("For parameter `whence`, expected value in {0,1,2} but got: %#v", whence))
213218
}
214219

215220
return int64(rs.offset), nil
216221
}
222+
223+
func TestGetImageData(t *testing.T) {
224+
th.SetupHTTP()
225+
defer th.TeardownHTTP()
226+
227+
HandleGetImageDataSuccessfully(t)
228+
229+
rdr, err := GetImageData(fakeclient.ServiceClient(), "da3b75d9-3f4a-40e7-8a2c-bfab23927dea").Extract()
230+
231+
th.AssertNoErr(t, err)
232+
233+
bs, err := ioutil.ReadAll(rdr)
234+
235+
th.AssertNoErr(t, err)
236+
237+
th.AssertByteArrayEquals(t, []byte{34,87,0,23,23,23,56,255,254,0}, bs)
238+
}

openstack/imageservice/v2/results.go

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ package v2
33
import (
44
"errors"
55
"fmt"
6+
"io"
67

78
"github.com/rackspace/gophercloud"
89
//"github.com/rackspace/gophercloud/pagination"
@@ -334,3 +335,15 @@ func (u UpdateResult) Extract() (*Image, error) {
334335
type PutImageDataResult struct {
335336
gophercloud.ErrResult
336337
}
338+
339+
type GetImageDataResult struct {
340+
gophercloud.ErrResult
341+
}
342+
343+
func (g GetImageDataResult) Extract() (io.Reader, error) {
344+
if r, ok := g.Body.(io.Reader); ok {
345+
return r, nil
346+
} else {
347+
return nil, errors.New(fmt.Sprintf("Expected io.Reader but got: %T(%#v)", g.Body))
348+
}
349+
}

0 commit comments

Comments
 (0)