github.com/chnsz/golangsdk@v0.0.0-20240506093406-85a3fbfa605b/openstack/obs/trait_part.go (about)

     1  // Copyright 2019 Huawei Technologies Co.,Ltd.
     2  // Licensed under the Apache License, Version 2.0 (the "License"); you may not use
     3  // this file except in compliance with the License.  You may obtain a copy of the
     4  // License at
     5  //
     6  // http://www.apache.org/licenses/LICENSE-2.0
     7  //
     8  // Unless required by applicable law or agreed to in writing, software distributed
     9  // under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
    10  // CONDITIONS OF ANY KIND, either express or implied.  See the License for the
    11  // specific language governing permissions and limitations under the License.
    12  
    13  package obs
    14  
    15  import (
    16  	"fmt"
    17  )
    18  
    19  func (input ListMultipartUploadsInput) trans(isObs bool) (params map[string]string, headers map[string][]string, data interface{}, err error) {
    20  	params = map[string]string{string(SubResourceUploads): ""}
    21  	if input.Prefix != "" {
    22  		params["prefix"] = input.Prefix
    23  	}
    24  	if input.Delimiter != "" {
    25  		params["delimiter"] = input.Delimiter
    26  	}
    27  	if input.MaxUploads > 0 {
    28  		params["max-uploads"] = IntToString(input.MaxUploads)
    29  	}
    30  	if input.KeyMarker != "" {
    31  		params["key-marker"] = input.KeyMarker
    32  	}
    33  	if input.UploadIdMarker != "" {
    34  		params["upload-id-marker"] = input.UploadIdMarker
    35  	}
    36  	if input.EncodingType != "" {
    37  		params["encoding-type"] = input.EncodingType
    38  	}
    39  	return
    40  }
    41  
    42  func (input AbortMultipartUploadInput) trans(isObs bool) (params map[string]string, headers map[string][]string, data interface{}, err error) {
    43  	params = map[string]string{"uploadId": input.UploadId}
    44  	return
    45  }
    46  
    47  func (input InitiateMultipartUploadInput) trans(isObs bool) (params map[string]string, headers map[string][]string, data interface{}, err error) {
    48  	params, headers, data, err = input.ObjectOperationInput.trans(isObs)
    49  	if err != nil {
    50  		return
    51  	}
    52  	if input.ContentType != "" {
    53  		headers[HEADER_CONTENT_TYPE_CAML] = []string{input.ContentType}
    54  	}
    55  	params[string(SubResourceUploads)] = ""
    56  	if input.EncodingType != "" {
    57  		params["encoding-type"] = input.EncodingType
    58  	}
    59  	return
    60  }
    61  
    62  func (input UploadPartInput) trans(isObs bool) (params map[string]string, headers map[string][]string, data interface{}, err error) {
    63  	params = map[string]string{"uploadId": input.UploadId, "partNumber": IntToString(input.PartNumber)}
    64  	headers = make(map[string][]string)
    65  	setSseHeader(headers, input.SseHeader, true, isObs)
    66  	if input.ContentMD5 != "" {
    67  		headers[HEADER_MD5_CAMEL] = []string{input.ContentMD5}
    68  	}
    69  	if input.Body != nil {
    70  		data = input.Body
    71  	}
    72  	return
    73  }
    74  
    75  func (input CompleteMultipartUploadInput) trans(isObs bool) (params map[string]string, headers map[string][]string, data interface{}, err error) {
    76  	params = map[string]string{"uploadId": input.UploadId}
    77  	if input.EncodingType != "" {
    78  		params["encoding-type"] = input.EncodingType
    79  	}
    80  	data, _ = ConvertCompleteMultipartUploadInputToXml(input, false)
    81  	return
    82  }
    83  
    84  func (input ListPartsInput) trans(isObs bool) (params map[string]string, headers map[string][]string, data interface{}, err error) {
    85  	params = map[string]string{"uploadId": input.UploadId}
    86  	if input.MaxParts > 0 {
    87  		params["max-parts"] = IntToString(input.MaxParts)
    88  	}
    89  	if input.PartNumberMarker > 0 {
    90  		params["part-number-marker"] = IntToString(input.PartNumberMarker)
    91  	}
    92  	if input.EncodingType != "" {
    93  		params["encoding-type"] = input.EncodingType
    94  	}
    95  	return
    96  }
    97  
    98  func (input CopyPartInput) trans(isObs bool) (params map[string]string, headers map[string][]string, data interface{}, err error) {
    99  	params = map[string]string{"uploadId": input.UploadId, "partNumber": IntToString(input.PartNumber)}
   100  	headers = make(map[string][]string, 1)
   101  	var copySource string
   102  	if input.CopySourceVersionId != "" {
   103  		copySource = fmt.Sprintf("%s/%s?versionId=%s", input.CopySourceBucket, UrlEncode(input.CopySourceKey, false), input.CopySourceVersionId)
   104  	} else {
   105  		copySource = fmt.Sprintf("%s/%s", input.CopySourceBucket, UrlEncode(input.CopySourceKey, false))
   106  	}
   107  	setHeaders(headers, HEADER_COPY_SOURCE, []string{copySource}, isObs)
   108  	if input.CopySourceRangeStart >= 0 && input.CopySourceRangeEnd > input.CopySourceRangeStart {
   109  		setHeaders(headers, HEADER_COPY_SOURCE_RANGE, []string{fmt.Sprintf("bytes=%d-%d", input.CopySourceRangeStart, input.CopySourceRangeEnd)}, isObs)
   110  	}
   111  
   112  	setSseHeader(headers, input.SseHeader, true, isObs)
   113  	if input.SourceSseHeader != nil {
   114  		if sseCHeader, ok := input.SourceSseHeader.(SseCHeader); ok {
   115  			setHeaders(headers, HEADER_SSEC_COPY_SOURCE_ENCRYPTION, []string{sseCHeader.GetEncryption()}, isObs)
   116  			setHeaders(headers, HEADER_SSEC_COPY_SOURCE_KEY, []string{sseCHeader.GetKey()}, isObs)
   117  			setHeaders(headers, HEADER_SSEC_COPY_SOURCE_KEY_MD5, []string{sseCHeader.GetKeyMD5()}, isObs)
   118  		}
   119  
   120  	}
   121  	return
   122  }