@Override public Promise<Iterable<Transition>> getTransitions(final URI transitionsUri) { return callAndParse(client().newRequest(transitionsUri).get(), (ResponseHandler<Iterable<Transition>>) response -> { final JSONObject jsonObject = new JSONObject(response.getEntity()); if (jsonObject.has("transitions")) { return JsonParseUtil.parseJsonArray(jsonObject.getJSONArray("transitions"), transitionJsonParserV5); } else { final Collection<Transition> transitions = new ArrayList<>(jsonObject.length()); @SuppressWarnings("unchecked") final Iterator<String> iterator = jsonObject.keys(); while (iterator.hasNext()) { final String key = iterator.next(); try { final int id = Integer.parseInt(key); final Transition transition = transitionJsonParser.parse(jsonObject.getJSONObject(key), id); transitions.add(transition); } catch (JSONException e) { throw new RestClientException(e); } catch (NumberFormatException e) { throw new RestClientException( "Transition id should be an integer, but found [" + key + "]", e); } } return transitions; } } ); }
protected final <T> Promise<T> getAndParse(final URI uri, final JsonParser<?, T> parser) { return callAndParse(client.newRequest(uri).setAccept("application/json").get(), parser); }
@Override public Promise<InputStream> getAttachment(URI attachmentUri) { return callAndParse(client().newRequest(attachmentUri).get(), Message::getEntityStream); }
private int getUrlStatusCode(String url) { return httpClient.newRequest(url).get().claim().getStatusCode(); } }
private DownloadResult<ResponsePromise> scheduleDownload(Language language, String baseUrl, String path) { URI uriToDownload = resolveUri(baseUrl, path); ResponsePromise responsePromise = httpClient .newRequest(uriToDownload) .setAccept(MediaType.APPLICATION_JSON) .get(); return new DownloadResult<>(language, uriToDownload, responsePromise); }