github.com/vnpaycloud-console/gophercloud/v2@v2.0.5/openstack/image/v2/imagedata/requests.go (about) 1 package imagedata 2 3 import ( 4 "context" 5 "io" 6 7 "github.com/vnpaycloud-console/gophercloud/v2" 8 ) 9 10 // Upload uploads an image file. 11 func Upload(ctx context.Context, client *gophercloud.ServiceClient, id string, data io.Reader) (r UploadResult) { 12 resp, err := client.Put(ctx, uploadURL(client, id), data, nil, &gophercloud.RequestOpts{ 13 MoreHeaders: map[string]string{"Content-Type": "application/octet-stream"}, 14 OkCodes: []int{204}, 15 }) 16 _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) 17 return 18 } 19 20 // Stage performs PUT call on the existing image object in the Image service with 21 // the provided file. 22 // Existing image object must be in the "queued" status. 23 func Stage(ctx context.Context, client *gophercloud.ServiceClient, id string, data io.Reader) (r StageResult) { 24 resp, err := client.Put(ctx, stageURL(client, id), data, nil, &gophercloud.RequestOpts{ 25 MoreHeaders: map[string]string{"Content-Type": "application/octet-stream"}, 26 OkCodes: []int{204}, 27 }) 28 _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) 29 return 30 } 31 32 // Download retrieves an image. 33 func Download(ctx context.Context, client *gophercloud.ServiceClient, id string) (r DownloadResult) { 34 resp, err := client.Get(ctx, downloadURL(client, id), nil, &gophercloud.RequestOpts{ 35 KeepResponseBody: true, 36 }) 37 r.Body, r.Header, r.Err = gophercloud.ParseResponse(resp, err) 38 return 39 }