private boolean accelerate(final Path file, final ConnectionCallback prompt) throws BackgroundException { switch(session.getSignatureVersion()) { case AWS2: return false; } if(accelerationService.getStatus(file)) { log.info(String.format("S3 transfer acceleration enabled for file %s", file)); return true; } if(preferences.getBoolean("s3.accelerate.prompt")) { if(accelerationService.prompt(session.getHost(), file, prompt)) { log.info(String.format("S3 transfer acceleration enabled for file %s", file)); return true; } } return false; } }
@Override public StorageObject upload(final Path file, final Local local, final BandwidthThrottle throttle, final StreamListener listener, final TransferStatus status, final ConnectionCallback callback) throws BackgroundException { final S3Protocol.AuthenticationHeaderSignatureVersion signatureVersion = session.getSignatureVersion(); switch(signatureVersion) { case AWS4HMACSHA256: if(Checksum.NONE == status.getChecksum()) { status.setChecksum(writer.checksum(file).compute(local.getInputStream(), status)); } break; } try { return super.upload(file, local, throttle, listener, status, callback); } catch(InteroperabilityException e) { if(!session.getSignatureVersion().equals(signatureVersion)) { // Retry if upload fails with Header "x-amz-content-sha256" set to the hex-encoded SHA256 hash of the // request payload is required for AWS Version 4 request signing return this.upload(file, local, throttle, listener, status, callback); } throw e; } }
parameters.put("partNumber", String.valueOf(++partNumber)); final TransferStatus status = new TransferStatus().withParameters(parameters).length(len); switch(session.getSignatureVersion()) { case AWS4HMACSHA256: status.setChecksum(ChecksumComputeFactory.get(HashAlgorithm.sha256)
status.setHeader(overall.getHeader()); status.setNonces(overall.getNonces()); switch(session.getSignatureVersion()) { case AWS4HMACSHA256: status.setChecksum(writer.checksum(file).compute(local.getInputStream(), status));
switch(session.getSignatureVersion()) { case AWS4HMACSHA256: if(failure instanceof InteroperabilityException) {
switch(session.getSignatureVersion()) { case AWS2: