@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()); } } }
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(); }
@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(); }