use of org.apache.apex.shaded.ning19.com.ning.http.client.Response in project traccar by tananaev.
the class OpenCellIdGeolocationProvider method getLocation.
@Override
public void getLocation(Network network, final LocationProviderCallback callback) {
if (network.getCellTowers() != null && !network.getCellTowers().isEmpty()) {
CellTower cellTower = network.getCellTowers().iterator().next();
String request = String.format(url, cellTower.getMobileCountryCode(), cellTower.getMobileNetworkCode(), cellTower.getLocationAreaCode(), cellTower.getCellId());
Context.getAsyncHttpClient().prepareGet(request).execute(new AsyncCompletionHandler() {
@Override
public Object onCompleted(Response response) throws Exception {
try (JsonReader reader = Json.createReader(response.getResponseBodyAsStream())) {
JsonObject json = reader.readObject();
if (json.containsKey("lat") && json.containsKey("lon")) {
callback.onSuccess(json.getJsonNumber("lat").doubleValue(), json.getJsonNumber("lon").doubleValue(), 0);
} else {
callback.onFailure(new GeolocationException("Coordinates are missing"));
}
}
return null;
}
@Override
public void onThrowable(Throwable t) {
callback.onFailure(t);
}
});
} else {
callback.onFailure(new GeolocationException("No network information"));
}
}
use of org.apache.apex.shaded.ning19.com.ning.http.client.Response in project traccar by tananaev.
the class UnwiredGeolocationProvider method getLocation.
@Override
public void getLocation(Network network, final LocationProviderCallback callback) {
try {
ObjectNode json = objectMapper.valueToTree(network);
json.put("token", key);
String request = objectMapper.writeValueAsString(json);
Context.getAsyncHttpClient().preparePost(url).setHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON).setHeader(HttpHeaders.CONTENT_LENGTH, String.valueOf(request.length())).setBody(request).execute(new AsyncCompletionHandler() {
@Override
public Object onCompleted(Response response) throws Exception {
try (JsonReader reader = Json.createReader(response.getResponseBodyAsStream())) {
JsonObject json = reader.readObject();
if (json.getString("status").equals("error")) {
callback.onFailure(new GeolocationException(json.getString("message")));
} else {
callback.onSuccess(json.getJsonNumber("lat").doubleValue(), json.getJsonNumber("lon").doubleValue(), json.getJsonNumber("accuracy").doubleValue());
}
}
return null;
}
@Override
public void onThrowable(Throwable t) {
callback.onFailure(t);
}
});
} catch (JsonProcessingException e) {
callback.onFailure(e);
}
}
use of org.apache.apex.shaded.ning19.com.ning.http.client.Response in project traccar by tananaev.
the class UniversalGeolocationProvider method getLocation.
@Override
public void getLocation(Network network, final LocationProviderCallback callback) {
try {
String request = Context.getObjectMapper().writeValueAsString(network);
Context.getAsyncHttpClient().preparePost(url).setHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON).setHeader(HttpHeaders.CONTENT_LENGTH, String.valueOf(request.length())).setBody(request).execute(new AsyncCompletionHandler() {
@Override
public Object onCompleted(Response response) throws Exception {
try (JsonReader reader = Json.createReader(response.getResponseBodyAsStream())) {
JsonObject json = reader.readObject();
if (json.containsKey("error")) {
callback.onFailure(new GeolocationException(json.getJsonObject("error").getString("message")));
} else {
JsonObject location = json.getJsonObject("location");
callback.onSuccess(location.getJsonNumber("lat").doubleValue(), location.getJsonNumber("lng").doubleValue(), json.getJsonNumber("accuracy").doubleValue());
}
}
return null;
}
@Override
public void onThrowable(Throwable t) {
callback.onFailure(t);
}
});
} catch (JsonProcessingException e) {
callback.onFailure(e);
}
}
use of org.apache.apex.shaded.ning19.com.ning.http.client.Response in project riposte by Nike-Inc.
the class AsyncHttpClientHelperTest method getCircuitBreaker_returns_CircuitBreakerDelegate_wrapping_default_CircuitBreakerForHttpStatusCode_using_host_as_the_key.
@DataProvider(value = { "true", "false" }, splitBy = "\\|")
@Test
public void getCircuitBreaker_returns_CircuitBreakerDelegate_wrapping_default_CircuitBreakerForHttpStatusCode_using_host_as_the_key(boolean useNettyEventLoop) {
// given
String host = UUID.randomUUID().toString();
String url = "http://" + host + "/some/path";
String method = "GET";
AsyncHttpClient.BoundRequestBuilder reqMock = mock(AsyncHttpClient.BoundRequestBuilder.class);
Optional<CircuitBreaker<Response>> customCb = Optional.empty();
RequestBuilderWrapper rbw = new RequestBuilderWrapper(url, method, reqMock, customCb, false);
if (useNettyEventLoop)
rbw.setCtx(ctxMock);
// when
Optional<CircuitBreaker<Response>> result = helperSpy.getCircuitBreaker(rbw);
// then
assertThat(result).isPresent();
assertThat(result.get()).isInstanceOf(CircuitBreakerDelegate.class);
CircuitBreakerDelegate<Response, Integer> wrapper = (CircuitBreakerDelegate) result.get();
CircuitBreaker<Integer> delegate = (CircuitBreaker<Integer>) Whitebox.getInternalState(wrapper, "delegate");
Function<Response, Integer> eventConverter = (Function<Response, Integer>) Whitebox.getInternalState(wrapper, "eventConverter");
assertThat(delegate).isSameAs(CircuitBreakerForHttpStatusCode.getDefaultHttpStatusCodeCircuitBreakerForKey(host));
Response responseMock = mock(Response.class);
doReturn(42).when(responseMock).getStatusCode();
assertThat(eventConverter.apply(responseMock)).isEqualTo(42);
assertThat(eventConverter.apply(null)).isNull();
if (useNettyEventLoop) {
assertThat(Whitebox.getInternalState(delegate, "scheduler")).isEqualTo(eventLoopMock);
assertThat(Whitebox.getInternalState(delegate, "stateChangeNotificationExecutor")).isEqualTo(eventLoopMock);
} else {
assertThat(Whitebox.getInternalState(delegate, "scheduler")).isNotEqualTo(eventLoopMock);
assertThat(Whitebox.getInternalState(delegate, "stateChangeNotificationExecutor")).isNotEqualTo(eventLoopMock);
}
}
use of org.apache.apex.shaded.ning19.com.ning.http.client.Response in project riposte by Nike-Inc.
the class AsyncHttpClientHelperTest method executeAsyncHttpRequest_sets_up_and_executes_call_as_expected.
@DataProvider(value = { "true | true", "true | false", "false | true", "false | false" }, splitBy = "\\|")
@Test
public void executeAsyncHttpRequest_sets_up_and_executes_call_as_expected(boolean performSubspan, boolean currentTracingInfoNull) {
// given
Whitebox.setInternalState(helperSpy, "performSubSpanAroundDownstreamCalls", performSubspan);
CircuitBreaker<Response> circuitBreakerMock = mock(CircuitBreaker.class);
doReturn(Optional.of(circuitBreakerMock)).when(helperSpy).getCircuitBreaker(any(RequestBuilderWrapper.class));
ManualModeTask<Response> cbManualTaskMock = mock(ManualModeTask.class);
doReturn(cbManualTaskMock).when(circuitBreakerMock).newManualModeTask();
String url = "http://localhost/some/path";
String method = "GET";
AsyncHttpClient.BoundRequestBuilder reqMock = mock(AsyncHttpClient.BoundRequestBuilder.class);
RequestBuilderWrapper rbw = new RequestBuilderWrapper(url, method, reqMock, Optional.empty(), false);
AsyncResponseHandler responseHandlerMock = mock(AsyncResponseHandler.class);
Span initialSpan = (currentTracingInfoNull) ? null : Tracer.getInstance().startRequestWithRootSpan("foo");
Deque<Span> initialSpanStack = (currentTracingInfoNull) ? null : Tracer.getInstance().getCurrentSpanStackCopy();
Map<String, String> initialMdc = (currentTracingInfoNull) ? null : MDC.getCopyOfContextMap();
resetTracingAndMdc();
// when
CompletableFuture resultFuture = helperSpy.executeAsyncHttpRequest(rbw, responseHandlerMock, initialSpanStack, initialMdc);
// then
// Verify that the circuit breaker came from the getCircuitBreaker helper method and that its
// throwExceptionIfCircuitBreakerIsOpen() method was called.
verify(helperSpy).getCircuitBreaker(rbw);
verify(cbManualTaskMock).throwExceptionIfCircuitBreakerIsOpen();
// Verify that the inner request's execute method was called with a
// AsyncCompletionHandlerWithTracingAndMdcSupport for the handler.
ArgumentCaptor<AsyncHandler> executedHandlerCaptor = ArgumentCaptor.forClass(AsyncHandler.class);
verify(reqMock).execute(executedHandlerCaptor.capture());
AsyncHandler executedHandler = executedHandlerCaptor.getValue();
assertThat(executedHandler).isInstanceOf(AsyncCompletionHandlerWithTracingAndMdcSupport.class);
// Verify that the AsyncCompletionHandlerWithTracingAndMdcSupport was created with the expected args
AsyncCompletionHandlerWithTracingAndMdcSupport achwtams = (AsyncCompletionHandlerWithTracingAndMdcSupport) executedHandler;
assertThat(achwtams.completableFutureResponse).isSameAs(resultFuture);
assertThat(achwtams.responseHandlerFunction).isSameAs(responseHandlerMock);
assertThat(achwtams.performSubSpanAroundDownstreamCalls).isEqualTo(performSubspan);
assertThat(achwtams.circuitBreakerManualTask).isEqualTo(Optional.of(cbManualTaskMock));
if (performSubspan) {
int initialSpanStackSize = (initialSpanStack == null) ? 0 : initialSpanStack.size();
assertThat(achwtams.distributedTraceStackToUse).hasSize(initialSpanStackSize + 1);
Span subspan = (Span) achwtams.distributedTraceStackToUse.peek();
assertThat(subspan.getSpanName()).isEqualTo(handlerWithTracingAndMdcDummyExample.getSubspanSpanName(method, url));
if (initialSpan != null) {
assertThat(subspan.getTraceId()).isEqualTo(initialSpan.getTraceId());
assertThat(subspan.getParentSpanId()).isEqualTo(initialSpan.getSpanId());
}
assertThat(achwtams.mdcContextToUse.get(Tracer.TRACE_ID_MDC_KEY)).isEqualTo(subspan.getTraceId());
} else {
assertThat(achwtams.distributedTraceStackToUse).isSameAs(initialSpanStack);
assertThat(achwtams.mdcContextToUse).isSameAs(initialMdc);
}
// Verify that the trace headers were added (or not depending on state).
Span spanForDownstreamCall = achwtams.getSpanForCall();
if (initialSpan == null && !performSubspan) {
assertThat(spanForDownstreamCall).isNull();
verifyZeroInteractions(reqMock);
} else {
assertThat(spanForDownstreamCall).isNotNull();
verify(reqMock).setHeader(TraceHeaders.TRACE_SAMPLED, String.valueOf(spanForDownstreamCall.isSampleable()));
verify(reqMock).setHeader(TraceHeaders.TRACE_ID, spanForDownstreamCall.getTraceId());
verify(reqMock).setHeader(TraceHeaders.SPAN_ID, spanForDownstreamCall.getSpanId());
verify(reqMock).setHeader(TraceHeaders.PARENT_SPAN_ID, spanForDownstreamCall.getParentSpanId());
verify(reqMock).setHeader(TraceHeaders.SPAN_NAME, spanForDownstreamCall.getSpanName());
}
}
Aggregations