use of com.networknt.exception.ClientException in project light-portal by networknt.
the class GetFormTest method testGetForm.
@Test
public void testGetForm() throws ClientException, ApiException {
final Http2Client client = Http2Client.getInstance();
final CountDownLatch latch = new CountDownLatch(1);
final ClientConnection connection;
try {
connection = client.connect(new URI(url), Http2Client.WORKER, Http2Client.SSL, Http2Client.POOL, enableHttp2 ? OptionMap.create(UndertowOptions.ENABLE_HTTP2, true) : OptionMap.EMPTY).get();
} catch (Exception e) {
throw new ClientException(e);
}
final String requestBody = "{\"host\":\"lightapi.net\",\"service\":\"form\",\"action\":\"getForm\",\"version\":\"0.1.0\"}";
System.out.println("json:" + requestBody);
final AtomicReference<ClientResponse> reference = new AtomicReference<>();
try {
ClientRequest request = new ClientRequest().setPath("/api/json").setMethod(Methods.POST);
request.getRequestHeaders().put(Headers.CONTENT_TYPE, "application/json");
request.getRequestHeaders().put(Headers.TRANSFER_ENCODING, "chunked");
connection.sendRequest(request, client.createClientCallback(reference, latch, requestBody));
latch.await();
} catch (Exception e) {
logger.error("Exception: ", e);
throw new ClientException(e);
} finally {
IoUtils.safeClose(connection);
}
int statusCode = reference.get().getResponseCode();
String body = reference.get().getAttachment(Http2Client.RESPONSE_BODY);
Assert.assertEquals(200, statusCode);
Assert.assertNotNull(body);
}
use of com.networknt.exception.ClientException in project light-portal by networknt.
the class UserIdDeleteHandlerTest method testUserIdDeleteHandlerTest.
@Test
public void testUserIdDeleteHandlerTest() throws ClientException, ApiException {
final Http2Client client = Http2Client.getInstance();
final CountDownLatch latch = new CountDownLatch(1);
final ClientConnection connection;
try {
connection = client.connect(new URI(url), Http2Client.WORKER, Http2Client.SSL, Http2Client.POOL, enableHttp2 ? OptionMap.create(UndertowOptions.ENABLE_HTTP2, true) : OptionMap.EMPTY).get();
} catch (Exception e) {
throw new ClientException(e);
}
final AtomicReference<ClientResponse> reference = new AtomicReference<>();
try {
ClientRequest request = new ClientRequest().setPath("/v1/user/122222").setMethod(Methods.DELETE);
connection.sendRequest(request, client.createClientCallback(reference, latch));
latch.await();
} catch (Exception e) {
logger.error("Exception: ", e);
throw new ClientException(e);
} finally {
IoUtils.safeClose(connection);
}
int statusCode = reference.get().getResponseCode();
String body = reference.get().getAttachment(Http2Client.RESPONSE_BODY);
System.out.println("response:" + body);
Assert.assertEquals(200, statusCode);
Assert.assertNotNull(body);
}
use of com.networknt.exception.ClientException in project light-4j by networknt.
the class TraceabilityHandlerTest method testGetWithoutTid.
@Test
public void testGetWithoutTid() throws Exception {
final Http2Client client = Http2Client.getInstance();
final CountDownLatch latch = new CountDownLatch(1);
final ClientConnection connection;
try {
connection = client.connect(new URI("http://localhost:8080"), Http2Client.WORKER, Http2Client.SSL, Http2Client.POOL, OptionMap.EMPTY).get();
} catch (Exception e) {
throw new ClientException(e);
}
final AtomicReference<ClientResponse> reference = new AtomicReference<>();
try {
ClientRequest request = new ClientRequest().setPath("/get").setMethod(Methods.GET);
// request.getRequestHeaders().put(Constants.TRACEABILITY_ID, "12345");
connection.sendRequest(request, client.createClientCallback(reference, latch));
latch.await();
} catch (Exception e) {
logger.error("Exception: ", e);
throw new ClientException(e);
} finally {
IoUtils.safeClose(connection);
}
int statusCode = reference.get().getResponseCode();
Assert.assertEquals(200, statusCode);
if (statusCode == 200) {
String body = reference.get().getAttachment(Http2Client.RESPONSE_BODY);
Assert.assertNotNull(body);
Assert.assertEquals("get", body);
String tid = reference.get().getResponseHeaders().getFirst(Constants.TRACEABILITY_ID);
Assert.assertNull(tid);
}
}
use of com.networknt.exception.ClientException in project light-4j by networknt.
the class Http2Client method checkCCTokenExpired.
private void checkCCTokenExpired() throws ClientException, ApiException {
long tokenRenewBeforeExpired = (Integer) tokenConfig.get(TOKEN_RENEW_BEFORE_EXPIRED);
long expiredRefreshRetryDelay = (Integer) tokenConfig.get(EXPIRED_REFRESH_RETRY_DELAY);
long earlyRefreshRetryDelay = (Integer) tokenConfig.get(EARLY_REFRESH_RETRY_DELAY);
boolean isInRenewWindow = expire - System.currentTimeMillis() < tokenRenewBeforeExpired;
if (logger.isTraceEnabled())
logger.trace("isInRenewWindow = " + isInRenewWindow);
if (isInRenewWindow) {
if (expire <= System.currentTimeMillis()) {
if (logger.isTraceEnabled())
logger.trace("In renew window and token is expired.");
// block other request here to prevent using expired token.
synchronized (Http2Client.class) {
if (expire <= System.currentTimeMillis()) {
if (logger.isTraceEnabled())
logger.trace("Within the synch block, check if the current request need to renew token");
if (!renewing || System.currentTimeMillis() > expiredRetryTimeout) {
// if there is no other request is renewing or the renewing flag is true but renewTimeout is passed
renewing = true;
expiredRetryTimeout = System.currentTimeMillis() + expiredRefreshRetryDelay;
if (logger.isTraceEnabled())
logger.trace("Current request is renewing token synchronously as token is expired already");
getCCToken();
renewing = false;
} else {
if (logger.isTraceEnabled())
logger.trace("Circuit breaker is tripped and not timeout yet!");
// reject all waiting requests by thrown an exception.
throw new ApiException(new Status(STATUS_CLIENT_CREDENTIALS_TOKEN_NOT_AVAILABLE));
}
}
}
} else {
// Not expired yet, try to renew async but let requests use the old token.
if (logger.isTraceEnabled())
logger.trace("In renew window but token is not expired yet.");
synchronized (Http2Client.class) {
if (expire > System.currentTimeMillis()) {
if (!renewing || System.currentTimeMillis() > earlyRetryTimeout) {
renewing = true;
earlyRetryTimeout = System.currentTimeMillis() + earlyRefreshRetryDelay;
if (logger.isTraceEnabled())
logger.trace("Retrieve token async is called while token is not expired yet");
ScheduledExecutorService executor = Executors.newSingleThreadScheduledExecutor();
executor.schedule(() -> {
try {
getCCToken();
renewing = false;
if (logger.isTraceEnabled())
logger.trace("Async get token is completed.");
} catch (Exception e) {
logger.error("Async retrieve token error", e);
// swallow the exception here as it is on a best effort basis.
}
}, 50, TimeUnit.MILLISECONDS);
executor.shutdown();
}
}
}
}
}
if (logger.isTraceEnabled())
logger.trace("Check secondary token is done!");
}
use of com.networknt.exception.ClientException in project light-4j by networknt.
the class OauthHelper method getKey.
public static String getKey(KeyRequest keyRequest, boolean http2) throws ClientException {
final Http2Client client = Http2Client.getInstance();
final CountDownLatch latch = new CountDownLatch(1);
final ClientConnection connection;
try {
connection = client.connect(new URI(keyRequest.getServerUrl()), Http2Client.WORKER, Http2Client.SSL, Http2Client.POOL, http2 ? OptionMap.create(UndertowOptions.ENABLE_HTTP2, true) : OptionMap.EMPTY).get();
} catch (Exception e) {
throw new ClientException(e);
}
final AtomicReference<ClientResponse> reference = new AtomicReference<>();
try {
ClientRequest request = new ClientRequest().setPath(keyRequest.getUri()).setMethod(Methods.GET);
request.getRequestHeaders().put(Headers.AUTHORIZATION, getBasicAuthHeader(keyRequest.getClientId(), keyRequest.getClientSecret()));
request.getRequestHeaders().put(Headers.HOST, "localhost");
connection.sendRequest(request, client.createClientCallback(reference, latch));
latch.await();
} catch (Exception e) {
logger.error("Exception: ", e);
throw new ClientException(e);
} finally {
IoUtils.safeClose(connection);
}
return reference.get().getAttachment(Http2Client.RESPONSE_BODY);
}
Aggregations