* parses the http response headers to create a new
* {@link org.jclouds.s3.domain.internal.MutableObjectMetadata} object.
*/
public MutableObjectMetadata apply(HttpResponse from) {
BlobMetadata base = blobMetadataParser.apply(from);
MutableObjectMetadata to = blobToObjectMetadata.apply(base);
addETagTo(from, to);
if (to.getContentMetadata().getContentMD5() == null && to.getETag() != null) {
Matcher md5Matcher = MD5_FROM_ETAG.matcher(to.getETag());
if (md5Matcher.find()) {
byte[] md5 = base16().lowerCase().decode(md5Matcher.group(1));
// it is possible others will look at the http payload directly
if (from.getPayload() != null)
from.getPayload().getContentMetadata().setContentMD5(md5);
to.getContentMetadata().setContentMD5(md5);
}
}
// amz has an etag, but matches syntax for usermetadata
to.getUserMetadata().remove("object-etag");
to.setCacheControl(from.getFirstHeaderOrNull(HttpHeaders.CACHE_CONTROL));
return to;
}