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 }