@SuppressWarnings("unchecked") private <T> MutableHttpRequest<T> buildRequest(String uri, T body, HttpMethod method) { if (uri.indexOf('{') > -1 && body != null) { if (body instanceof Map) { uri = UriTemplate.of(uri).expand((Map<String, Object>) body); } else { uri = UriTemplate.of(uri).expand(BeanMap.of(body)); } } return new NettyClientHttpRequest<T>(method, uri).body(body); } }
private NettyHttpParameters decodeParameters(String uri) { QueryStringDecoder queryStringDecoder = createDecoder(uri); return new NettyHttpParameters(queryStringDecoder.parameters(), ConversionService.SHARED); }
@Override public MutableHttpParameters getParameters() { NettyHttpParameters httpParameters = this.httpParameters; if (httpParameters == null) { synchronized (this) { // double check httpParameters = this.httpParameters; if (httpParameters == null) { httpParameters = decodeParameters(getUri().getRawPath()); this.httpParameters = httpParameters; } } } return httpParameters; }
HttpPostRequestEncoder postRequestEncoder = null; if (permitsBody) { Optional body = clientHttpRequest.getBody(); boolean hasBody = body.isPresent(); if (requestContentType.equals(MediaType.APPLICATION_FORM_URLENCODED_TYPE) && hasBody) { if (bodyValue instanceof CharSequence) { ByteBuf byteBuf = charSequenceToByteBuf((CharSequence) bodyValue, requestContentType); nettyRequest = clientHttpRequest.getFullRequest(byteBuf); } else { postRequestEncoder = buildFormDataRequest(clientHttpRequest, bodyValue); nettyRequest = clientHttpRequest.getStreamedRequest( requestBodyPublisher ); nettyRequest = clientHttpRequest.getFullRequest(bodyContent); nettyRequest = clientHttpRequest.getFullRequest(null);
@Override public <T> MutableHttpRequest<T> get(String uri) { return new NettyClientHttpRequest<>(HttpMethod.GET, uri); }
@Override public <T> Optional<T> getBody(Class<T> type) { return getBody(Argument.of(type)); }
private HttpPostRequestEncoder buildFormDataRequest(NettyClientHttpRequest clientHttpRequest, Object bodyValue) throws HttpPostRequestEncoder.ErrorDataEncoderException { HttpPostRequestEncoder postRequestEncoder = new HttpPostRequestEncoder(clientHttpRequest.getFullRequest(null), false); Map<String, Object> formData; if (bodyValue instanceof Map) { formData = (Map<String, Object>) bodyValue; } else { formData = BeanMap.of(bodyValue); } for (Map.Entry<String, Object> entry : formData.entrySet()) { Object value = entry.getValue(); if (value != null) { if (value instanceof Collection) { Collection collection = (Collection) value; for (Object val: collection) { addBodyAttribute(postRequestEncoder, entry.getKey(), val); } } else { addBodyAttribute(postRequestEncoder, entry.getKey(), value); } } } return postRequestEncoder; }
/** * @param uri The URI * @return The query string decoder */ protected QueryStringDecoder createDecoder(String uri) { Charset charset = getCharacterEncoding(); return charset != null ? new QueryStringDecoder(uri, charset) : new QueryStringDecoder(uri); }
private String resolveUriPath() { URI uri = getUri(); if (StringUtils.isNotEmpty(uri.getScheme())) { try { // obtain just the path uri = new URI(null, null, null, -1, uri.getPath(), uri.getQuery(), uri.getFragment()); } catch (URISyntaxException e) { // ignore } } return uri.toString(); }
@Override public String toString() { return getMethod() + " " + uri; } }
HttpPostRequestEncoder postRequestEncoder = null; if (permitsBody) { Optional body = clientHttpRequest.getBody(); boolean hasBody = body.isPresent(); if (requestContentType.equals(MediaType.APPLICATION_FORM_URLENCODED_TYPE) && hasBody) { if (bodyValue instanceof CharSequence) { ByteBuf byteBuf = charSequenceToByteBuf((CharSequence) bodyValue, requestContentType); nettyRequest = clientHttpRequest.getFullRequest(byteBuf); } else { postRequestEncoder = buildFormDataRequest(clientHttpRequest, bodyValue); nettyRequest = clientHttpRequest.getStreamedRequest( requestBodyPublisher ); nettyRequest = clientHttpRequest.getFullRequest(bodyContent); nettyRequest = clientHttpRequest.getFullRequest(null);
@Override public <T> MutableHttpRequest<T> head(String uri) { return new NettyClientHttpRequest<>(HttpMethod.HEAD, uri); }
@Override public <T> Optional<T> getBody(Argument<T> type) { return getBody().flatMap(b -> ConversionService.SHARED.convert(b, ConversionContext.of(type))); }
private HttpPostRequestEncoder buildMultipartRequest(NettyClientHttpRequest clientHttpRequest, Object bodyValue) throws HttpPostRequestEncoder.ErrorDataEncoderException { HttpDataFactory factory = new DefaultHttpDataFactory(DefaultHttpDataFactory.MINSIZE); io.netty.handler.codec.http.HttpRequest request = clientHttpRequest.getFullRequest(null); HttpPostRequestEncoder postRequestEncoder = new HttpPostRequestEncoder(factory, request, true, CharsetUtil.UTF_8, HttpPostRequestEncoder.EncoderMode.HTML5); if (bodyValue instanceof MultipartBody.Builder) { bodyValue = ((MultipartBody.Builder) bodyValue).build(); } if (bodyValue instanceof MultipartBody) { postRequestEncoder.setBodyHttpDatas(((MultipartBody) bodyValue).getData(request, factory)); } else { throw new MultipartException(String.format("The type %s is not a supported type for a multipart request body", bodyValue.getClass().getName())); } return postRequestEncoder; }
/** * @param uri The URI * @return The query string decoder */ protected QueryStringDecoder createDecoder(String uri) { Charset charset = getCharacterEncoding(); return charset != null ? new QueryStringDecoder(uri, charset) : new QueryStringDecoder(uri); }
private String resolveUriPath() { URI uri = getUri(); if (StringUtils.isNotEmpty(uri.getScheme())) { try { // obtain just the path uri = new URI(null, null, null, -1, uri.getPath(), uri.getQuery(), uri.getFragment()); } catch (URISyntaxException e) { // ignore } } return uri.toString(); }
@Override public String toString() { return getMethod() + " " + uri; } }
HttpPostRequestEncoder postRequestEncoder = null; if (permitsBody) { Optional body = clientHttpRequest.getBody(); boolean hasBody = body.isPresent(); if (requestContentType.equals(MediaType.APPLICATION_FORM_URLENCODED_TYPE) && hasBody) { nettyRequest = clientHttpRequest.getStreamedRequest( requestBodyPublisher ); nettyRequest = clientHttpRequest.getFullRequest(bodyContent); nettyRequest = clientHttpRequest.getFullRequest(null);
@SuppressWarnings("unchecked") private <T> MutableHttpRequest<T> buildRequest(String uri, T body, HttpMethod method) { if (uri.indexOf('{') > -1 && body != null) { if (body instanceof Map) { uri = UriTemplate.of(uri).expand((Map<String, Object>) body); } else { uri = UriTemplate.of(uri).expand(BeanMap.of(body)); } } return new NettyClientHttpRequest<T>(method, uri).body(body); } }
@Override public MutableHttpParameters getParameters() { NettyHttpParameters httpParameters = this.httpParameters; if (httpParameters == null) { synchronized (this) { // double check httpParameters = this.httpParameters; if (httpParameters == null) { httpParameters = decodeParameters(getUri().getRawPath()); this.httpParameters = httpParameters; } } } return httpParameters; }