public InputStream getResponseBodyAsStream() { return response.getResponseBodyAsStream(); }
@Test public void testPutEmptyBody() throws Exception { try (AsyncHttpClient ahc = asyncHttpClient()) { Response response = ahc.preparePut(getTargetUrl()).setBody("String").execute().get(); assertNotNull(response); assertEquals(response.getStatusCode(), 204); assertEquals(response.getResponseBody(), ""); assertNotNull(response.getResponseBodyAsStream()); assertEquals(response.getResponseBodyAsStream().read(), -1); } }
/** * Get the response body as a stream * * @return The stream to read the response body from */ @Override public InputStream getBodyAsStream() { return ahcResponse.getResponseBodyAsStream(); }
public InputStream getResponseBodyAsStream() throws IOException { return response.getResponseBodyAsStream(); }
/** * Get the response body as a {@link JsonNode} * * @return the json response */ @Override public JsonNode asJson() { // Jackson will automatically detect the correct encoding according to the rules in RFC-4627 return Json.parse(ahcResponse.getResponseBodyAsStream()); }
@Override public T onCompleted(Response response) throws Exception { logResponse(response); if (isStatus2xx(response)) { if (typeParams.length > 0) { JavaType type = mapper.getTypeFactory().constructParametricType(clazz, typeParams); return mapper.convertValue(mapper.readTree(response.getResponseBodyAsStream()).get(name), type); } return mapper.convertValue(mapper.readTree(response.getResponseBodyAsStream()).get(name), clazz); } else if (isRateLimitResponse(response)) { throw new ZendeskResponseRateLimitException(response); } if (response.getStatusCode() == 404) { return null; } throw new ZendeskResponseException(response); } }
@Override public List<SearchResultEntity> onCompleted(Response response) throws Exception { logResponse(response); if (isStatus2xx(response)) { JsonNode responseNode = mapper.readTree(response.getResponseBodyAsStream()).get(name); setPagedProperties(responseNode, null); List<SearchResultEntity> values = new ArrayList<>(); for (JsonNode node : responseNode) { Class<? extends SearchResultEntity> clazz = searchResultTypes.get(node.get("result_type").asText()); if (clazz != null) { values.add(mapper.convertValue(node, clazz)); } } return values; } else if (isRateLimitResponse(response)) { throw new ZendeskResponseRateLimitException(response); } throw new ZendeskResponseException(response); } };
@Override public T onCompleted(Response response) throws Exception { logResponse(response); if (isStatus2xx(response)) { return (T) mapper.reader(clazz).readValue(response.getResponseBodyAsStream()); } else if (isRateLimitResponse(response)) { throw new ZendeskResponseRateLimitException(response); } if (response.getStatusCode() == 404) { return null; } throw new ZendeskResponseException(response); } };
@Override public JsonNode apply(Response response) { try { return new MappingJsonFactory().createParser(response.getResponseBodyAsStream()).readValueAsTree(); } catch (IOException ioe) { throw new IllegalStateException(ioe); } } };
/** * Get the response body as a {@link Document DOM document} * * @return a DOM document */ @Override public Document asXml() { String contentType = contentType(); Charset charset = HttpUtils.parseCharset(contentType); if (charset == null) { charset = StandardCharsets.UTF_8; } return play.libs.XML.fromInputStream(ahcResponse.getResponseBodyAsStream(), charset.name()); }
@Override public T onCompleted(org.asynchttpclient.Response ahcResponse) { try { final Map<String, String> headersMap = new HashMap<>(); for (Map.Entry<String, String> header : ahcResponse.getHeaders()) { headersMap.put(header.getKey(), header.getValue()); } final Response response = new Response(ahcResponse.getStatusCode(), ahcResponse.getStatusText(), headersMap, ahcResponse.getResponseBodyAsStream()); @SuppressWarnings("unchecked") final T t = converter == null ? (T) response : converter.convert(response); if (callback != null) { callback.onCompleted(t); } return t; } catch (IOException | RuntimeException e) { onThrowable(e); return null; } }
private static JsonObject extractResponse(Response response) { PeekableInputStream bodyStream = new PeekableInputStream(response.getResponseBodyAsStream()); try { if (!bodyStream.peek().isPresent()) { return null; } String contentType = response.getHeader("Content-Type"); if (!JSON.match(contentType.trim())) { throw new StashClientException("Received response with type " + contentType + " instead of JSON"); } Reader body = new InputStreamReader(bodyStream); Object obj = Jsoner.deserialize(body); return (JsonObject)obj; } catch (DeserializationException | ClassCastException | IOException e) { throw new StashClientException("Could not parse JSON response", e); } }
@Override public CompletionStage<JsonStructure> queryAsJson(ConnectionRequestsQuery query) { Objects.requireNonNull(query); if (!MediaType.APPLICATION_JSON.equals(acceptMimeType)) { throw new UnsupportedOperationException("This method is only available with a JSON deserializer."); } final String url = String.format("%s/rest/external/network/requests", endpoint); return execute(authenticated(query, new RequestBuilder(GET) .setUrl(url) .setHeader(HttpHeaders.ACCEPT, acceptMimeType))) .thenApply(r -> { if (r.getStatusCode() == 200) { return deserializer.parseToObject(r.getResponseBodyAsStream()); } throw parseHttpStatusCode(query.getUserContext(), r); }); }
@Override public TradeshiftException read(UserContext ctx, Response response) { final Optional<String> message = parseMsg(response.getContentType(), response.getResponseBodyAsStream()); switch (response.getStatusCode()) { case HTTP_BAD_REQUEST: return message.map(m -> new BadRequest(ctx, m)).orElseGet(() -> new BadRequest(ctx)); case HTTP_UNAUTHORIZED: return message.map(m -> new Unauthorized(ctx, m)).orElseGet(() -> new Unauthorized(ctx)); case HTTP_FORBIDDEN: return message.map(m -> new Forbidden(ctx, m)).orElseGet(() -> new Forbidden(ctx)); case HTTP_NOT_FOUND: return message.map(m -> new NotFound(ctx, m)).orElseGet(() -> new NotFound(ctx)); case HTTP_INTERNAL_ERROR: return message.map(m -> new SystemException(ctx, m)) .orElseGet(() -> new SystemException(ctx, "Internal server error")); default: int httpStatus = response.getStatusCode(); if (httpStatus >= HTTP_BAD_REQUEST && httpStatus < HTTP_INTERNAL_ERROR) { return message.map(m -> new ClientError(ctx, httpStatus, m)) .orElseGet(() -> new ClientError(ctx, httpStatus, null)); } else if (httpStatus >= HTTP_INTERNAL_ERROR) { return message.map(m -> new ServerError(ctx, m)) .orElseGet(() -> new ServerError(ctx, null)); } return new SystemException(ctx, "Unexpected status code from server: " + response.getStatusCode()); } }
/** * {@inheritDoc} */ @Override public final T onCompleted() throws Exception { if (status != null) { Response response = status.prepareResponse(headers, bodies); Document document = null; if (status.getStatusCode() == 207) { document = readXMLResponse(response.getResponseBodyAsStream()); } return onCompleted(new WebDavResponse(status.prepareResponse(headers, bodies), document)); } else { throw new IllegalStateException("Status is null"); } }
@Override public CompletionStage<Stream<NetworkRequest>> queryPending(ConnectionRequestsQuery query) { Objects.requireNonNull(query); final String url = String.format("%s/rest/external/network/requests", endpoint); return execute(authenticated(query, new RequestBuilder(GET) .setUrl(url) .setHeader(HttpHeaders.ACCEPT, acceptMimeType))) .thenApply(r -> { if (r.getStatusCode() == 200) { return deserializer.pendingConnections(r.getResponseBodyAsStream()).getItems().stream(); } throw parseHttpStatusCode(query.getUserContext(), r); }); }
private static String findElasticSearchVersion(final AsyncHttpClient httpClient, final String elasticSearchInstance) throws Exception { LOGGER.info("Finding Elasticsearch version for " + elasticSearchInstance); try { final Response response = httpClient.prepareGet(elasticSearchInstance).execute().get(); if (response.getStatusCode() == 200) { final JsonObject jsonObject = Json.createReader(response.getResponseBodyAsStream()).readObject(); final String version = jsonObject.getJsonObject("version").getString("number"); LOGGER.info("Elasticsearch " + elasticSearchInstance + " is using version " + version); return version; } throw new ElasticSearchSetupException( "Could not retrieve Elasticsearch version due to status code " + response.getStatusCode()); } catch (final Exception e) { throw new ElasticSearchSetupException("Could not retrieve Elasticsearch version: " + e.getMessage(), e); } }
@Override public CompletionStage<com.tradeshift.sdk.network.domain.Connection> query(ConnectionQuery query) { Objects.requireNonNull(query); final ID<Connection> connectionId = query.getConnectionId(); final String url = String.format("%s/rest/external/network/connections/%s", endpoint, connectionId); return execute(authenticated(query, new RequestBuilder(GET) .setUrl(url) .setHeader(HttpHeaders.ACCEPT, acceptMimeType))) .thenApply(r -> { if (r.getStatusCode() == 200) { return deserializer.deserializeConnection(r.getResponseBodyAsStream()); } throw parseHttpStatusCode(query.getUserContext(), r); }); }