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 }