@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());
     }
   }
 }
Пример #2
0
 public String signString(String toSign) {
   String signature;
   try {
     signature =
         CryptoStreams.base64(CryptoStreams.mac(InputSuppliers.of(toSign), crypto.hmacSHA1(key)));
   } catch (Exception e) {
     throw new HttpException("error signing request", e);
   }
   return signature;
 }
    public Request apply(HttpRequest request) {

      for (HttpRequestFilter filter : request.getFilters()) {
        filter.filter(request);
      }

      RequestBuilder builder = new RequestBuilder(request.getMethod());
      builder.setUrl(request.getEndpoint().toASCIIString());
      Payload payload = request.getPayload();
      if (payload != null) {
        boolean chunked = "chunked".equals(request.getFirstHeaderOrNull("Transfer-Encoding"));

        if (request.getPayload().getContentMetadata().getContentMD5() != null)
          builder.addHeader(
              "Content-MD5",
              CryptoStreams.base64(request.getPayload().getContentMetadata().getContentMD5()));
        if (request.getPayload().getContentMetadata().getContentType() != null)
          builder.addHeader(
              HttpHeaders.CONTENT_TYPE, request.getPayload().getContentMetadata().getContentType());
        if (request.getPayload().getContentMetadata().getContentLanguage() != null)
          builder.addHeader(
              HttpHeaders.CONTENT_LANGUAGE,
              request.getPayload().getContentMetadata().getContentLanguage());
        if (request.getPayload().getContentMetadata().getContentEncoding() != null)
          builder.addHeader(
              HttpHeaders.CONTENT_ENCODING,
              request.getPayload().getContentMetadata().getContentEncoding());
        if (request.getPayload().getContentMetadata().getContentDisposition() != null)
          builder.addHeader(
              "Content-Disposition",
              request.getPayload().getContentMetadata().getContentDisposition());
        if (!chunked) {
          Long length =
              checkNotNull(
                  request.getPayload().getContentMetadata().getContentLength(),
                  "payload.getContentLength");
          builder.addHeader(HttpHeaders.CONTENT_LENGTH, length.toString());
        }
        setPayload(builder, payload);
      } else {
        builder.addHeader(HttpHeaders.CONTENT_LENGTH, "0");
      }

      builder.addHeader(HttpHeaders.USER_AGENT, USER_AGENT);
      for (String header : request.getHeaders().keySet()) {
        for (String value : request.getHeaders().get(header)) {
          builder.addHeader(header, value);
        }
      }

      return builder.build();
    }
    public Request apply(HttpRequest request) {

      for (HttpRequestFilter filter : request.getFilters()) {
        filter.filter(request);
      }

      AsyncHttpClient client = new AsyncHttpClient();
      AsyncHttpClient.BoundRequestBuilder nativeRequestBuilder;
      String endpoint = request.getEndpoint().toASCIIString();
      if (request.getMethod().equals(HttpMethod.HEAD)) {
        nativeRequestBuilder = client.prepareHead(endpoint);
      } else if (request.getMethod().equals(HttpMethod.GET)) {
        nativeRequestBuilder = client.prepareGet(endpoint);
      } else if (request.getMethod().equals(HttpMethod.DELETE)) {
        nativeRequestBuilder = client.prepareDelete(endpoint);
      } else if (request.getMethod().equals(HttpMethod.PUT)) {
        nativeRequestBuilder = client.preparePut(endpoint);
      } else if (request.getMethod().equals(HttpMethod.POST)) {
        nativeRequestBuilder = client.preparePost(endpoint);
      } else {
        throw new UnsupportedOperationException(request.getMethod());
      }
      Payload payload = request.getPayload();
      if (payload != null) {
        boolean chunked = "chunked".equals(request.getFirstHeaderOrNull("Transfer-Encoding"));

        if (request.getPayload().getContentMD5() != null)
          nativeRequestBuilder.addHeader(
              "Content-MD5", CryptoStreams.base64(request.getPayload().getContentMD5()));
        if (request.getPayload().getContentType() != null)
          nativeRequestBuilder.addHeader(
              HttpHeaders.CONTENT_TYPE, request.getPayload().getContentType());
        if (!chunked) {
          Long length =
              checkNotNull(request.getPayload().getContentLength(), "payload.getContentLength");
          nativeRequestBuilder.addHeader(HttpHeaders.CONTENT_LENGTH, length.toString());
        }
        setPayload(nativeRequestBuilder, payload);
      } else {
        nativeRequestBuilder.addHeader(HttpHeaders.CONTENT_LENGTH, "0");
      }

      nativeRequestBuilder.addHeader(HttpHeaders.USER_AGENT, USER_AGENT);
      for (String header : request.getHeaders().keySet()) {
        for (String value : request.getHeaders().get(header)) {
          nativeRequestBuilder.addHeader(header, value);
        }
      }

      return nativeRequestBuilder.build();
    }
Пример #5
0
 @Inject
 public SignRequest(
     SignatureWire signatureWire,
     @Named(PROPERTY_IDENTITY) String uid,
     @Named(PROPERTY_CREDENTIAL) String encodedKey,
     @TimeStamp Provider<String> timeStampProvider,
     Crypto crypto,
     HttpUtils utils) {
   this.signatureWire = signatureWire;
   this.uid = uid;
   this.key = CryptoStreams.base64(encodedKey);
   this.timeStampProvider = timeStampProvider;
   this.crypto = crypto;
   this.utils = utils;
 }
 public void endElement(String uri, String name, String qName) {
   if (inMetadata && !qName.equals("Metadata")) {
     currentMetadata.put(qName, currentText.toString().trim());
   } else if (qName.equals("Metadata")) {
     inMetadata = false;
   } else if (qName.equals("MaxResults")) {
     maxResults = Integer.parseInt(currentText.toString().trim());
   } else if (qName.equals("Marker")) {
     marker = currentText.toString().trim();
     marker = (marker.equals("")) ? null : marker;
   } else if (qName.equals("Prefix")) {
     prefix = currentText.toString().trim();
     prefix = (prefix.equals("")) ? null : prefix;
   } else if (qName.equals("Delimiter")) {
     delimiter = currentText.toString().trim();
     delimiter = (delimiter.equals("")) ? null : delimiter;
   } else if (qName.equals("NextMarker")) {
     nextMarker = currentText.toString().trim();
     nextMarker = (nextMarker.equals("")) ? null : nextMarker;
   } else if (qName.equals("BlobType")) {
     currentBlobType = BlobType.fromValue(currentText.toString().trim());
   } else if (qName.equals("LeaseStatus")) {
     currentLeaseStatus = LeaseStatus.fromValue(currentText.toString().trim());
   } else if (qName.equals("Blob")) {
     BlobProperties md =
         new BlobPropertiesImpl(
             currentBlobType,
             currentName,
             containerUrl.getPath().replace("/", ""),
             currentUrl,
             currentLastModified,
             currentETag,
             currentSize,
             currentContentType,
             currentContentMD5,
             currentContentEncoding,
             currentContentLanguage,
             currentLeaseStatus,
             currentMetadata);
     blobMetadata.add(md);
     currentBlobType = null;
     currentName = null;
     currentUrl = null;
     currentLastModified = null;
     currentETag = null;
     currentSize = -1;
     currentContentType = null;
     currentContentEncoding = null;
     currentContentLanguage = null;
     currentContentMD5 = null;
     currentLeaseStatus = null;
     currentMetadata = Maps.newHashMap();
   } else if (qName.equals("Url")) {
     currentUrl = HttpUtils.createUri(currentText.toString().trim());
   } else if (qName.equals("Last-Modified")) {
     currentLastModified = dateParser.rfc822DateParse(currentText.toString().trim());
   } else if (qName.equals("Etag")) {
     currentETag = currentText.toString().trim();
   } else if (qName.equals("Name")) {
     if (inBlob) currentName = currentText.toString().trim();
     else if (inBlobPrefix) blobPrefixes.add(currentText.toString().trim());
   } else if (qName.equals("Content-Length")) {
     currentSize = Long.parseLong(currentText.toString().trim());
   } else if (qName.equals("Content-MD5")) {
     if (!currentText.toString().trim().equals(""))
       currentContentMD5 = CryptoStreams.base64(currentText.toString().trim());
   } else if (qName.equals("Content-Type")) {
     currentContentType = currentText.toString().trim();
   } else if (qName.equals("Content-Encoding")) {
     currentContentEncoding = currentText.toString().trim();
     if (currentContentEncoding.equals("")) currentContentEncoding = null;
   } else if (qName.equals("Content-Language")) {
     currentContentLanguage = currentText.toString().trim();
     if (currentContentLanguage.equals("")) currentContentLanguage = null;
   }
   currentText = new StringBuilder();
 }