diff --git a/Dockerfile b/Dockerfile index 730da23..955b2da 100644 --- a/Dockerfile +++ b/Dockerfile @@ -18,6 +18,6 @@ FROM openjdk:8 EXPOSE 8080 WORKDIR /usr/src/app -COPY build/libs/ecs-browser-0.9.1.jar ./ +COPY build/libs/ecs-browser-1.0.0rc1.jar ./ -CMD [ "java", "-jar", "ecs-browser-0.9.1.jar" ] +CMD [ "java", "-jar", "ecs-browser-1.0.0rc1.jar" ] diff --git a/build.gradle b/build.gradle index dab2d6c..b01a0bc 100644 --- a/build.gradle +++ b/build.gradle @@ -1,6 +1,6 @@ description = "ECS browser website" group = 'com.emc.ecs' -version = '0.9.1' +version = '1.0.0rc1' ext.licenseName = '' ext.licenseUrl = '' @@ -30,7 +30,7 @@ defaultTasks 'build' jar { baseName = 'ecs-browser' - version = '0.9.1' + version = '1.0.0rc1' into('META-INF/dependency-license') { from 'build/reports/dependency-license' } diff --git a/src/main/java/com/emc/ecs/browser/spring/ServiceController.java b/src/main/java/com/emc/ecs/browser/spring/ServiceController.java index 96962d9..5ef3669 100644 --- a/src/main/java/com/emc/ecs/browser/spring/ServiceController.java +++ b/src/main/java/com/emc/ecs/browser/spring/ServiceController.java @@ -205,15 +205,33 @@ public ResponseEntity postProxy(HttpServletRequest request) throws Exception RequestEntity requestEntity = new RequestEntity(data, newHeaders, method, new URI(resource)); RestTemplate client = new RestTemplate(); try { - dataToReturn = client.exchange(requestEntity, ListObjectsResult.class); + dataToReturn = new WrappedResponseEntity( client.exchange(requestEntity, ListObjectsResult.class) ); if ( ((ResponseEntity) dataToReturn).getStatusCode().is2xxSuccessful() ) { ListObjectsResult objectsToDownload = ((ResponseEntity) dataToReturn).getBody(); downloadObjects( downloadFolder, objectsToDownload.getBucketName(), objectsToDownload.getObjects(), s3Config ); + String separator = resource.indexOf("?") < 0 ? "?" : "&"; + while ( objectsToDownload.isTruncated() ) { + String marker = objectsToDownload.getNextMarker(); + if ( ( marker == null ) || marker.isEmpty() ) { + marker = objectsToDownload.getObjects().get( objectsToDownload.getObjects().size() - 1 ).getKey(); + } + String newUrl = resource + separator + "marker=" + marker; + System.out.println("Another page after " + marker + " using " + newUrl ); + requestEntity = new RequestEntity(data, newHeaders, method, new URI(newUrl)); + dataToReturn = new WrappedResponseEntity( client.exchange(requestEntity, ListObjectsResult.class) ); + if ( !((ResponseEntity) dataToReturn).getStatusCode().is2xxSuccessful() ) { + break; + } + objectsToDownload = ((ResponseEntity) dataToReturn).getBody(); + downloadObjects( downloadFolder, objectsToDownload.getBucketName(), objectsToDownload.getObjects(), s3Config ); + } } } catch (HttpClientErrorException e) { dataToReturn = new ErrorData(e); // handle and display on the other end + e.printStackTrace(System.out); } catch (Exception e) { dataToReturn = new ErrorData(e); // handle and display on the other end + e.printStackTrace(System.out); } } else { sign(method.toString(), resource, parameters, headers, s3Config); @@ -289,7 +307,7 @@ private void downloadObjects(String downloadFolder, String bucketName, List= 200 ) && ( data.status < 300 ) ) ) - || ( data.statusCode && data.statusCode == 'OK' ) ) { + || ( data.statusCode && data.statusCode == 'OK') ) { if (dataProcessor) { data = dataProcessor( data ); }