Skip to content

Commit

Permalink
Finished feature
Browse files Browse the repository at this point in the history
  • Loading branch information
DavidASeibert committed Nov 12, 2018
1 parent 48466be commit fe753a0
Show file tree
Hide file tree
Showing 4 changed files with 82 additions and 7 deletions.
4 changes: 2 additions & 2 deletions Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,6 @@ FROM openjdk:8
EXPOSE 8080

WORKDIR /usr/src/app
COPY build/libs/ecs-browser-1.0.0rc1.jar ./
COPY build/libs/ecs-browser-1.0.0rc2.jar ./

CMD [ "java", "-jar", "ecs-browser-1.0.0rc1.jar" ]
CMD [ "java", "-jar", "ecs-browser-1.0.0rc2.jar" ]
4 changes: 2 additions & 2 deletions build.gradle
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
description = "ECS browser website"
group = 'com.emc.ecs'
version = '1.0.0rc1'
version = '1.0.0rc2'

ext.licenseName = ''
ext.licenseUrl = ''
Expand Down Expand Up @@ -30,7 +30,7 @@ defaultTasks 'build'

jar {
baseName = 'ecs-browser'
version = '1.0.0rc1'
version = '1.0.0rc2'
into('META-INF/dependency-license') {
from 'build/reports/dependency-license'
}
Expand Down
75 changes: 74 additions & 1 deletion src/main/java/com/emc/ecs/browser/spring/ServiceController.java
Original file line number Diff line number Diff line change
Expand Up @@ -213,7 +213,15 @@ public ResponseEntity<?> postProxy(HttpServletRequest request) throws Exception
while ( objectsToDownload.isTruncated() ) {
String marker = objectsToDownload.getNextMarker();
if ( ( marker == null ) || marker.isEmpty() ) {
marker = objectsToDownload.getObjects().get( objectsToDownload.getObjects().size() - 1 ).getKey();
String lastKey = "";
if ( ( objectsToDownload.getObjects() != null ) && ( objectsToDownload.getObjects().size() > 0 ) ) {
lastKey = objectsToDownload.getObjects().get( objectsToDownload.getObjects().size() - 1 ).getKey();
}
String lastPrefix = "";
if ( ( objectsToDownload.getCommonPrefixes() != null ) && ( objectsToDownload.getCommonPrefixes().size() > 0 ) ) {
lastPrefix = objectsToDownload.getCommonPrefixes().get( objectsToDownload.getCommonPrefixes().size() - 1 );
}
marker = ( lastPrefix.compareTo(lastKey) > 0 ) ? lastPrefix : lastKey;
}
String newUrl = resource + separator + "marker=" + marker;
System.out.println("Another page after " + marker + " using " + newUrl );
Expand All @@ -233,6 +241,71 @@ public ResponseEntity<?> postProxy(HttpServletRequest request) throws Exception
dataToReturn = new ErrorData(e); // handle and display on the other end
e.printStackTrace(System.out);
}
} else if ("listAll".equals(request.getHeader("X-Passthrough-Type"))) {
sign(method.toString(), resource, parameters, headers, s3Config);

HttpHeaders newHeaders = new HttpHeaders();
for (Entry<String, List<Object>> header : headers.entrySet()) {
List<String> headerValue = new ArrayList<String>(header.getValue().size());
for (Object value : header.getValue()) {
headerValue.add((String) value);
}
newHeaders.put(header.getKey(), headerValue);
}

String queryString = RestUtil.generateRawQueryString(parameters);
if (StringUtil.isNotBlank(queryString)) {
resource = resource + "?" + queryString;
}
String endpoint = request.getHeader("X-Passthrough-Endpoint");
while (endpoint.endsWith("/")) {
endpoint = endpoint.substring(0, endpoint.length() - 1);
}
resource = endpoint + resource;

RequestEntity<byte[]> requestEntity = new RequestEntity<byte[]>(data, newHeaders, method, new URI(resource));
RestTemplate client = new RestTemplate();
try {
ResponseEntity<ListObjectsResult> baseResponse = new WrappedResponseEntity( client.exchange(requestEntity, ListObjectsResult.class) );
dataToReturn = baseResponse;
if ( baseResponse.getStatusCode().is2xxSuccessful() ) {
ListObjectsResult listResult = baseResponse.getBody();
String separator = resource.indexOf("?") < 0 ? "?" : "&";
while ( listResult.isTruncated() ) {
String marker = listResult.getNextMarker();
if ( ( marker == null ) || marker.isEmpty() ) {
String lastKey = "";
if ( ( listResult.getObjects() != null ) && ( listResult.getObjects().size() > 0 ) ) {
lastKey = listResult.getObjects().get( listResult.getObjects().size() - 1 ).getKey();
}
String lastPrefix = "";
if ( ( listResult.getCommonPrefixes() != null ) && ( listResult.getCommonPrefixes().size() > 0 ) ) {
lastPrefix = listResult.getCommonPrefixes().get( listResult.getCommonPrefixes().size() - 1 );
}
marker = ( lastPrefix.compareTo(lastKey) > 0 ) ? lastPrefix : lastKey;
}
String newUrl = resource + separator + "marker=" + marker;
System.out.println("Another page after " + marker + " using " + newUrl );
requestEntity = new RequestEntity<byte[]>(data, newHeaders, method, new URI(newUrl));
ResponseEntity<ListObjectsResult> newListResponse = new WrappedResponseEntity( client.exchange(requestEntity, ListObjectsResult.class) );
if ( !newListResponse.getStatusCode().is2xxSuccessful() ) {
dataToReturn = newListResponse;
break;
}
ListObjectsResult newListResult = newListResponse.getBody();
listResult.setTruncated(newListResult.isTruncated());
listResult.setNextMarker(newListResult.getNextMarker());
listResult.getObjects().addAll(newListResult.getObjects());
listResult.getCommonPrefixes().addAll(newListResult.getCommonPrefixes());
}
}
} 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);

Expand Down
6 changes: 4 additions & 2 deletions src/main/resources/static/javascript/ecs-sdk.js
Original file line number Diff line number Diff line change
Expand Up @@ -226,6 +226,7 @@ EcsS3.prototype.listBuckets = function( callback ) {

EcsS3.prototype.listObjects = function( params, callback ) {
var apiUrl = this.getBucketApiUrl( params.entry );
var headers = this.getHeaders('GET');
var separatorChar = '?';
if ( isNonEmptyString( params.delimiter ) ) {
apiUrl = apiUrl + separatorChar + 'delimiter=' + params.delimiter;
Expand All @@ -238,9 +239,10 @@ EcsS3.prototype.listObjects = function( params, callback ) {
if ( isNonEmptyString( params.extraQueryParameters ) ) {
apiUrl = apiUrl + separatorChar + params.extraQueryParameters;
separatorChar = '&';
} else {
headers['X-Passthrough-Type'] = 'listAll';
}
var headers = this.getHeaders('GET');


$.ajax({ url: apiUrl, method: 'POST', headers: headers,
success: function(data, textStatus, jqHXR) {
handleData( data, callback, getEcsBody );
Expand Down

0 comments on commit fe753a0

Please sign in to comment.