doImport(source, length, location, "application/zip");
}
private void doImport(File source, long length, String location, String contentType) throws FileNotFoundException, IOException, SAXException {
if (source.length() == 0) {
PutMethodWebRequest put = new PutMethodWebRequest(location, new ByteArrayInputStream(new byte[0], 0, 0), contentType);
put.setHeaderField("Content-Range", "bytes 0-0/0");
put.setHeaderField("Content-Length", "0");
put.setHeaderField("Content-Type", "application/zip");
setAuthentication(put);
WebResponse putResponse = webConversation.getResponse(put);
assertEquals(HttpURLConnection.HTTP_CREATED, putResponse.getResponseCode());
return;
}
//repeat putting chunks until done
byte[] chunk = new byte[64 * 1024];
InputStream in = new BufferedInputStream(new FileInputStream(source));
int chunkSize = 0;
int totalTransferred = 0;
while ((chunkSize = in.read(chunk, 0, chunk.length)) > 0) {
byte[] content = getContent(chunk, chunkSize, contentType);
PutMethodWebRequest put = new PutMethodWebRequest(location, new ByteArrayInputStream(content), contentType);
put.setHeaderField("Content-Range", "bytes " + totalTransferred + "-" + (totalTransferred + chunkSize - 1) + "/" + length);
put.setHeaderField("Content-Length", "" + content.length);
put.setHeaderField("Content-Type", contentType);
setAuthentication(put);
totalTransferred += chunkSize;
WebResponse putResponse = webConversation.getResponse(put);
if (totalTransferred == length) {
assertEquals(HttpURLConnection.HTTP_CREATED, putResponse.getResponseCode());