github.com/opentelekomcloud/gophertelekomcloud@v0.9.3/openstack/obs/temporary_createSignedUrl.go (about)

     1  package obs
     2  
     3  import (
     4  	"errors"
     5  )
     6  
     7  // CreateSignedUrl creates signed url with the specified CreateSignedUrlInput, and returns the CreateSignedUrlOutput and error
     8  func (obsClient ObsClient) CreateSignedUrl(input *CreateSignedUrlInput) (output *CreateSignedUrlOutput, err error) {
     9  	if input == nil {
    10  		return nil, errors.New("CreateSignedUrlInput is nil")
    11  	}
    12  
    13  	params := make(map[string]string, len(input.QueryParams))
    14  	for key, value := range input.QueryParams {
    15  		params[key] = value
    16  	}
    17  
    18  	if input.SubResource != "" {
    19  		params[string(input.SubResource)] = ""
    20  	}
    21  
    22  	headers := make(map[string][]string, len(input.Headers))
    23  	for key, value := range input.Headers {
    24  		headers[key] = []string{value}
    25  	}
    26  
    27  	if input.Expires <= 0 {
    28  		input.Expires = 300
    29  	}
    30  
    31  	requestURL, err := obsClient.doAuthTemporary(string(input.Method), input.Bucket, input.Key, params, headers, int64(input.Expires))
    32  	if err != nil {
    33  		return nil, err
    34  	}
    35  
    36  	output = &CreateSignedUrlOutput{
    37  		SignedUrl:                  requestURL,
    38  		ActualSignedRequestHeaders: headers,
    39  	}
    40  	return
    41  }