@Override
 public void setPropertiesFromHttpHeaders(Multimap<String, String> headers) {
   boolean chunked =
       any(
           headers.entries(),
           new Predicate<Entry<String, String>>() {
             @Override
             public boolean apply(Entry<String, String> input) {
               return "Transfer-Encoding".equalsIgnoreCase(input.getKey())
                   && "chunked".equalsIgnoreCase(input.getValue());
             }
           });
   for (Entry<String, String> header : headers.entries()) {
     if (!chunked && CONTENT_LENGTH.equalsIgnoreCase(header.getKey())) {
       setContentLength(new Long(header.getValue()));
     } else if ("Content-MD5".equalsIgnoreCase(header.getKey())) {
       setContentMD5(CryptoStreams.base64(header.getValue()));
     } else if (CONTENT_TYPE.equalsIgnoreCase(header.getKey())) {
       setContentType(header.getValue());
     } else if ("Content-Disposition".equalsIgnoreCase(header.getKey())) {
       setContentDisposition(header.getValue());
     } else if ("Content-Encoding".equalsIgnoreCase(header.getKey())) {
       setContentEncoding(header.getValue());
     } else if ("Content-Language".equalsIgnoreCase(header.getKey())) {
       setContentLanguage(header.getValue());
     }
   }
 }