diff --git a/microservice-server/build.gradle b/microservice-server/build.gradle index 102904d066390e9b8f32243d7a0bcaf451b2426d..8b613b08ab52f702a7c241de1661191a14e53fa3 100644 --- a/microservice-server/build.gradle +++ b/microservice-server/build.gradle @@ -6,7 +6,7 @@ task wrapper(type: Wrapper) { } repositories { - mavenCentral() + // mavenCentral() ivy { ivyPattern "http://svnsis.ethz.ch/repos/cisd/ivy-repository/trunk/[organisation]/[module]/[revision]/ivy.xml" artifactPattern "http://svnsis.ethz.ch/repos/cisd/ivy-repository/trunk/[organisation]/[module]/[revision]/[artifact]-[revision](-[classifier]).[ext]" diff --git a/microservice-server/src/main/java/ch/ethz/sis/microservices/download/server/services/store/DownloadHandler.java b/microservice-server/src/main/java/ch/ethz/sis/microservices/download/server/services/store/DownloadHandler.java index 756ac3e5ac20b7317d30fadc1b150dbf1898f2a9..2b2e8ac7b8aec337f2b974e79eebf1c1d3e17f71 100644 --- a/microservice-server/src/main/java/ch/ethz/sis/microservices/download/server/services/store/DownloadHandler.java +++ b/microservice-server/src/main/java/ch/ethz/sis/microservices/download/server/services/store/DownloadHandler.java @@ -26,7 +26,9 @@ public class DownloadHandler extends AbstractFileServiceHandler if(offsetP != null) { offset = Long.parseLong(offsetP); } - + if(offset < 0) { + throw new IllegalArgumentException("offset can't be negative"); + } long size = Files.size(pathToFile) - offset; if(size < 0) { throw new IllegalArgumentException("offset to read starts beyond end of file"); @@ -35,15 +37,15 @@ public class DownloadHandler extends AbstractFileServiceHandler // Response response.setContentType("application/octet-stream"); response.setHeader("Content-Disposition", "attachment; filename=" + pathToFile.getFileName().toString()); - response.setHeader("Content-Length", Long.toString(Files.size(pathToFile))); + response.setHeader("Content-Length", Long.toString(size)); InputStream is = Files.newInputStream(pathToFile); is.skip(offset); copy(is, response.getOutputStream(), size); - + response.setStatus(HttpServletResponse.SC_OK); } - + private static final int BUFFER_SIZE = 1024; private static void copy(InputStream source, OutputStream destination, long sourceSize) throws IOException { byte[] buf = new byte[BUFFER_SIZE];