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  }