Skip to content

Commit fafda05

Browse files
chore: merge main into generate-libraries-main
2 parents d61da21 + 4111afd commit fafda05

File tree

8 files changed

+1239
-1
lines changed

8 files changed

+1239
-1
lines changed

google-cloud-storage/clirr-ignored-differences.xml

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -197,5 +197,13 @@
197197
<method>void flush()</method>
198198
</difference>
199199

200+
<!-- MultipartUploadClient is @InternalExtensionOnly -->
201+
<difference>
202+
<!-- allow new method to be added at any time -->
203+
<differenceType>7013</differenceType>
204+
<className>com/google/cloud/storage/MultipartUploadClient</className>
205+
<method>* *(*)</method>
206+
</difference>
207+
200208

201209
</differences>

google-cloud-storage/src/main/java/com/google/cloud/storage/MultipartUploadClient.java

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,8 @@
2424
import com.google.cloud.storage.multipartupload.model.CompleteMultipartUploadResponse;
2525
import com.google.cloud.storage.multipartupload.model.CreateMultipartUploadRequest;
2626
import com.google.cloud.storage.multipartupload.model.CreateMultipartUploadResponse;
27+
import com.google.cloud.storage.multipartupload.model.ListMultipartUploadsRequest;
28+
import com.google.cloud.storage.multipartupload.model.ListMultipartUploadsResponse;
2729
import com.google.cloud.storage.multipartupload.model.ListPartsRequest;
2830
import com.google.cloud.storage.multipartupload.model.ListPartsResponse;
2931
import com.google.cloud.storage.multipartupload.model.UploadPartRequest;
@@ -99,6 +101,17 @@ public abstract CompleteMultipartUploadResponse completeMultipartUpload(
99101
@BetaApi
100102
public abstract UploadPartResponse uploadPart(UploadPartRequest request, RequestBody requestBody);
101103

104+
/**
105+
* Lists all multipart uploads in a bucket.
106+
*
107+
* @param request The request object containing the details for listing the multipart uploads.
108+
* @return A {@link ListMultipartUploadsResponse} object containing the list of multipart uploads.
109+
* @since 2.61.0 This new api is in preview and is subject to breaking changes.
110+
*/
111+
@BetaApi
112+
public abstract ListMultipartUploadsResponse listMultipartUploads(
113+
ListMultipartUploadsRequest request);
114+
102115
/**
103116
* Creates a new instance of {@link MultipartUploadClient}.
104117
*

google-cloud-storage/src/main/java/com/google/cloud/storage/MultipartUploadClientImpl.java

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,8 @@
2323
import com.google.cloud.storage.multipartupload.model.CompleteMultipartUploadResponse;
2424
import com.google.cloud.storage.multipartupload.model.CreateMultipartUploadRequest;
2525
import com.google.cloud.storage.multipartupload.model.CreateMultipartUploadResponse;
26+
import com.google.cloud.storage.multipartupload.model.ListMultipartUploadsRequest;
27+
import com.google.cloud.storage.multipartupload.model.ListMultipartUploadsResponse;
2628
import com.google.cloud.storage.multipartupload.model.ListPartsRequest;
2729
import com.google.cloud.storage.multipartupload.model.ListPartsResponse;
2830
import com.google.cloud.storage.multipartupload.model.UploadPartRequest;
@@ -96,4 +98,12 @@ public UploadPartResponse uploadPart(UploadPartRequest request, RequestBody requ
9698
},
9799
Decoder.identity());
98100
}
101+
102+
@Override
103+
public ListMultipartUploadsResponse listMultipartUploads(ListMultipartUploadsRequest request) {
104+
return retrier.run(
105+
retryAlgorithmManager.idempotent(),
106+
() -> httpRequestManager.sendListMultipartUploadsRequest(request),
107+
Decoder.identity());
108+
}
99109
}

google-cloud-storage/src/main/java/com/google/cloud/storage/MultipartUploadHttpRequestManager.java

Lines changed: 39 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,8 @@
3636
import com.google.cloud.storage.multipartupload.model.CompleteMultipartUploadResponse;
3737
import com.google.cloud.storage.multipartupload.model.CreateMultipartUploadRequest;
3838
import com.google.cloud.storage.multipartupload.model.CreateMultipartUploadResponse;
39+
import com.google.cloud.storage.multipartupload.model.ListMultipartUploadsRequest;
40+
import com.google.cloud.storage.multipartupload.model.ListMultipartUploadsResponse;
3941
import com.google.cloud.storage.multipartupload.model.ListPartsRequest;
4042
import com.google.cloud.storage.multipartupload.model.ListPartsResponse;
4143
import com.google.cloud.storage.multipartupload.model.UploadPartRequest;
@@ -118,6 +120,42 @@ ListPartsResponse sendListPartsRequest(ListPartsRequest request) throws IOExcept
118120
return httpRequest.execute().parseAs(ListPartsResponse.class);
119121
}
120122

123+
ListMultipartUploadsResponse sendListMultipartUploadsRequest(ListMultipartUploadsRequest request)
124+
throws IOException {
125+
126+
ImmutableMap.Builder<String, Object> params =
127+
ImmutableMap.<String, Object>builder().put("bucket", request.bucket());
128+
if (request.delimiter() != null) {
129+
params.put("delimiter", request.delimiter());
130+
}
131+
if (request.encodingType() != null) {
132+
params.put("encoding-type", request.encodingType());
133+
}
134+
if (request.keyMarker() != null) {
135+
params.put("key-marker", request.keyMarker());
136+
}
137+
if (request.maxUploads() != null) {
138+
params.put("max-uploads", request.maxUploads());
139+
}
140+
if (request.prefix() != null) {
141+
params.put("prefix", request.prefix());
142+
}
143+
if (request.uploadIdMarker() != null) {
144+
params.put("upload-id-marker", request.uploadIdMarker());
145+
}
146+
String listUri =
147+
UriTemplate.expand(
148+
uri.toString()
149+
+ "{bucket}?uploads{&delimiter,encoding-type,key-marker,max-uploads,prefix,upload-id-marker}",
150+
params.build(),
151+
false);
152+
HttpRequest httpRequest = requestFactory.buildGetRequest(new GenericUrl(listUri));
153+
httpRequest.getHeaders().putAll(headerProvider.getHeaders());
154+
httpRequest.setParser(objectParser);
155+
httpRequest.setThrowExceptionOnExecuteError(true);
156+
return httpRequest.execute().parseAs(ListMultipartUploadsResponse.class);
157+
}
158+
121159
AbortMultipartUploadResponse sendAbortMultipartUploadRequest(AbortMultipartUploadRequest request)
122160
throws IOException {
123161

@@ -282,7 +320,7 @@ private static String urlEncode(String value) {
282320
*/
283321
private static String formatName(String name) {
284322
// Only lowercase letters, digits, and "-" are allowed
285-
return name.toLowerCase().replaceAll("[^\\w\\d\\-]", "-");
323+
return name.toLowerCase().replaceAll("[^\\w-]", "-");
286324
}
287325

288326
private static String formatSemver(String version) {

0 commit comments

Comments
 (0)