Ignore part-number-marker when zero

S3Proxy does not support pagination but it can support this initial
no-op value.  Fixes #162.
pull/132/head
Andrew Gaul 2016-11-03 22:47:27 -07:00
rodzic 4fb4a718b9
commit 0dc133036b
2 zmienionych plików z 27 dodań i 1 usunięć

Wyświetl plik

@ -143,6 +143,7 @@ public class S3ProxyHandler {
"location",
"marker",
"max-keys",
"part-number-marker",
"partNumber",
"prefix",
"response-cache-control",
@ -1888,7 +1889,13 @@ public class S3ProxyHandler {
private void handleListParts(HttpServletRequest request,
HttpServletResponse response, BlobStore blobStore,
String containerName, String blobName, String uploadId)
throws IOException {
throws IOException, S3Exception {
// support only the no-op zero case
String partNumberMarker = request.getParameter("part-number-marker");
if (partNumberMarker != null && !partNumberMarker.equals("0")) {
throw new S3Exception(S3ErrorCode.NOT_IMPLEMENTED);
}
// TODO: how to reconstruct original mpu?
MultipartUpload mpu = MultipartUpload.create(containerName,
blobName, uploadId, createFakeBlobMetadata(blobStore),

Wyświetl plik

@ -56,6 +56,7 @@ import com.amazonaws.services.s3.model.GroupGrantee;
import com.amazonaws.services.s3.model.InitiateMultipartUploadRequest;
import com.amazonaws.services.s3.model.InitiateMultipartUploadResult;
import com.amazonaws.services.s3.model.ListObjectsRequest;
import com.amazonaws.services.s3.model.ListPartsRequest;
import com.amazonaws.services.s3.model.ObjectListing;
import com.amazonaws.services.s3.model.ObjectMetadata;
import com.amazonaws.services.s3.model.Permission;
@ -500,6 +501,24 @@ public final class S3AwsSdkTest {
.isEqualTo(expiresTime);
}
@Test
public void testPartNumberMarker() throws Exception {
String blobName = "foo";
InitiateMultipartUploadResult result = client.initiateMultipartUpload(
new InitiateMultipartUploadRequest(containerName, blobName));
ListPartsRequest request = new ListPartsRequest(containerName,
blobName, result.getUploadId());
client.listParts(request.withPartNumberMarker(0));
try {
client.listParts(request.withPartNumberMarker(1));
Fail.failBecauseExceptionWasNotThrown(AmazonS3Exception.class);
} catch (AmazonS3Exception e) {
assertThat(e.getErrorCode()).isEqualTo("NotImplemented");
}
}
private static final class NullX509TrustManager
implements X509TrustManager {
@Override