Skip to content

Instantly share code, notes, and snippets.

@cdmckay
Created November 18, 2013 16:37
Show Gist options
  • Save cdmckay/7530967 to your computer and use it in GitHub Desktop.
Save cdmckay/7530967 to your computer and use it in GitHub Desktop.
A temporary fix for a bug in the Rhinofly s3-play library
def uploadPart(bucket: Bucket, uploadTicket: BucketFileUploadTicket, bucketFilePart: BucketFilePart): Future[BucketFilePartUploadTicket] = {
require(bucketFilePart.partNumber > 0, "The partNumber must be greater than 0")
require(bucketFilePart.partNumber < 10001, "The partNumber must be lesser than 10001")
// A hack way to get access to private httpUrl method
val url = bucket.s3.url(bucket.name, uploadTicket.name, 0).split('?')(0)
val uploadPart = bucket.s3.awsWithSigner
.url(url)
.withQueryString(
"partNumber" -> bucketFilePart.partNumber.toString,
"uploadId" -> uploadTicket.uploadId)
.put(bucketFilePart.content)
uploadPart map S3Response { (status, response) =>
val eTag = response.header("ETag").getOrElse(throw new NoSuchElementException("ETag header not found"))
BucketFilePartUploadTicket(bucketFilePart.partNumber, eTag)
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment