private void uploadChecksum( File file, String path, String algo, Object checksum ) { try { if ( checksum instanceof Exception ) { throw (Exception) checksum; } String ext = checksumAlgos.get( algo ); // Here we go blocking as this is a simple request. Response response = httpClient.preparePut( path + ext ).setHeaders( headers ).setBody( String.valueOf( checksum ) ).execute().get(); if ( response == null || response.getStatusCode() >= HttpURLConnection.HTTP_BAD_REQUEST ) { throw new TransferException( String.format( "Checksum failed for %s with status code %s", path + ext, response == null ? HttpURLConnection.HTTP_INTERNAL_ERROR : response.getStatusCode() ) ); } } catch ( Exception e ) { logger.debug( "Failed to upload " + algo + " checksum for " + file + ": " + e.getMessage(), e ); } }
private void uploadChecksum( File file, String path, String algo, Object checksum ) { try { if ( checksum instanceof Exception ) { throw (Exception) checksum; } String ext = checksumAlgos.get( algo ); // Here we go blocking as this is a simple request. Response response = httpClient.preparePut( path + ext ).setHeaders( headers ).setBody( String.valueOf( checksum ) ).execute().get(); if ( response == null || response.getStatusCode() >= HttpURLConnection.HTTP_BAD_REQUEST ) { throw new TransferException( String.format( "Checksum failed for %s with status code %s", path + ext, response == null ? HttpURLConnection.HTTP_INTERNAL_ERROR : response.getStatusCode() ) ); } } catch ( Exception e ) { logger.debug( "Failed to upload " + algo + " checksum for " + file + ": " + e.getMessage(), e ); } }
@Test(groups = { "standalone", "default_provider", "async" }) public void asyncDoPostNullBytesTest() throws Throwable { try (AsyncHttpClient client = getAsyncHttpClient(null)) { FluentCaseInsensitiveStringsMap h = new FluentCaseInsensitiveStringsMap(); h.add("Content-Type", "application/x-www-form-urlencoded"); StringBuilder sb = new StringBuilder(); for (int i = 0; i < 5; i++) { sb.append("param_"); sb.append(i); sb.append("=value_"); sb.append(i); sb.append("&"); } sb.setLength(sb.length() - 1); Future<Response> future = client.preparePost(getTargetUrl()).setHeaders(h).setBody(sb.toString()) .execute(new AsyncCompletionHandlerAdapter()); Response response = future.get(); Assert.assertNotNull(response); assertEquals(response.getStatusCode(), 200); } }
@Test(groups = { "standalone", "default_provider", "async" }) public void asyncDoPostCancelTest() throws Throwable { try (AsyncHttpClient client = getAsyncHttpClient(null)) { FluentCaseInsensitiveStringsMap h = new FluentCaseInsensitiveStringsMap(); h.add("Content-Type", "application/x-www-form-urlencoded"); h.add("LockThread", "true"); StringBuilder sb = new StringBuilder(); sb.append("LockThread=true"); final AtomicReference<CancellationException> ex = new AtomicReference<>(); ex.set(null); try { Future<Response> future = client.preparePost(getTargetUrl()).setHeaders(h).setBody(sb.toString()) .execute(new AsyncCompletionHandlerAdapter() { @Override public void onThrowable(Throwable t) { if (t instanceof CancellationException) { ex.set((CancellationException) t); } t.printStackTrace(); } }); Thread.sleep(1000); future.cancel(true); } catch (IllegalStateException ise) { fail(); } Assert.assertNotNull(ex.get()); } }
@Test(groups = { "standalone", "default_provider", "async" }) public void asyncDoGetHeadersTest() throws Throwable { try (AsyncHttpClient client = getAsyncHttpClient(null)) { final CountDownLatch l = new CountDownLatch(1); FluentCaseInsensitiveStringsMap h = new FluentCaseInsensitiveStringsMap(); h.add("Test1", "Test1"); h.add("Test2", "Test2"); h.add("Test3", "Test3"); h.add("Test4", "Test4"); h.add("Test5", "Test5"); client.prepareGet(getTargetUrl()).setHeaders(h).execute(new AsyncCompletionHandlerAdapter() { @Override public Response onCompleted(Response response) throws Exception { try { assertEquals(response.getStatusCode(), 200); for (int i = 1; i < 5; i++) { assertEquals(response.getHeader("X-Test" + i), "Test" + i); } } finally { l.countDown(); } return response; } }).get(); if (!l.await(TIMEOUT, TimeUnit.SECONDS)) { Assert.fail("Timeout out"); } } }
@Test(groups = {"standalone", "default_provider", "async"}) public void asyncResponseWithUpgradeAndContentTest() throws Throwable { try (AsyncHttpClient client = getAsyncHttpClient(null)) { final CountDownLatch l = new CountDownLatch(1); FluentCaseInsensitiveStringsMap h = new FluentCaseInsensitiveStringsMap(); h.add("Y-Upgrade", "h2,h2c"); client.prepareGet(getTargetUrl()).setHeaders(h).execute(new AsyncCompletionHandlerAdapter() { @Override public Response onCompleted(Response response) throws Exception { try { assertEquals(response.getStatusCode(), 200); assertEquals(response.getHeader("Upgrade"), "h2,h2c"); } finally { l.countDown(); } return response; } }).get(); if (!l.await(TIMEOUT, TimeUnit.SECONDS)) { Assert.fail("Timeout out"); } } }
@Test(groups = { "standalone", "default_provider" }) public void idleRequestTimeoutTest() throws Exception { try (AsyncHttpClient client = getAsyncHttpClient(new AsyncHttpClientConfig.Builder().setPooledConnectionIdleTimeout(5000) .setRequestTimeout(10000).build())) { FluentCaseInsensitiveStringsMap h = new FluentCaseInsensitiveStringsMap(); h.add("Content-Type", "application/x-www-form-urlencoded"); h.add("LockThread", "true"); long t1 = millisTime(); try { client.prepareGet(getTargetUrl()).setHeaders(h).setUrl(getTargetUrl()).execute(new AsyncHandlerAdapter() { @Override public void onThrowable(Throwable t) { // t.printStackTrace(); } }).get(); Assert.fail(); } catch (Throwable ex) { final long elapsedTime = millisTime() - t1; System.out.println("EXPIRED: " + (elapsedTime)); Assert.assertNotNull(ex.getCause()); Assert.assertTrue(elapsedTime >= 10000 && elapsedTime <= 25000); } } }
@Test(groups = { "standalone", "default_provider", "async" }, expectedExceptions = { CancellationException.class }) public void asyncDoPostDelayCancelTest() throws Throwable { try (AsyncHttpClient client = getAsyncHttpClient(null)) { FluentCaseInsensitiveStringsMap h = new FluentCaseInsensitiveStringsMap(); h.add("Content-Type", "application/x-www-form-urlencoded"); h.add("LockThread", "true"); StringBuilder sb = new StringBuilder(); sb.append("LockThread=true"); Future<Response> future = client.preparePost(getTargetUrl()).setHeaders(h).setBody(sb.toString()) .execute(new AsyncCompletionHandlerAdapter() { @Override public void onThrowable(Throwable t) { } }); // Make sure we are connected before cancelling. I know, Thread.sleep // sucks! Thread.sleep(1000); future.cancel(true); future.get(TIMEOUT, TimeUnit.SECONDS); } }
private void internalSendCommand(String machineIdentifier, String url) throws IOException { logger.debug("Calling url {}", url); BoundRequestBuilder builder = client.prepareGet(url) .setHeaders(getDefaultHeaders()) .setHeader("X-Plex-Target-Client-Identifier", machineIdentifier); builder.execute(new AsyncCompletionHandler<Response>() { @Override public Response onCompleted(Response response) throws Exception { if (response.getStatusCode() != 200) { logger.error("Error while sending command to Plex: {}\r\n{}", response.getStatusText(), response.getResponseBody()); } return response; } @Override public void onThrowable(Throwable t) { logger.error("Error sending command to Plex", t); } }); }
@Test(groups = { "standalone", "default_provider", "async" }) public void asyncDoPutTest() throws Throwable { try (AsyncHttpClient client = getAsyncHttpClient(null)) { FluentCaseInsensitiveStringsMap h = new FluentCaseInsensitiveStringsMap(); h.add("Content-Type", "application/x-www-form-urlencoded"); StringBuilder sb = new StringBuilder(); for (int i = 0; i < 5; i++) { sb.append("param_"); sb.append(i); sb.append("=value_"); sb.append(i); sb.append("&"); } sb.setLength(sb.length() - 1); Response response = client.preparePut(getTargetUrl()).setHeaders(h).setBody(sb.toString()) .execute(new AsyncCompletionHandlerAdapter()).get(); assertEquals(response.getStatusCode(), 200); } }
private boolean resourceExist( String url ) throws IOException, ExecutionException, InterruptedException, TransferException, AuthorizationException { int statusCode = httpClient.prepareHead( url ).setHeaders( headers ).execute().get().getStatusCode(); switch ( statusCode ) { case HttpURLConnection.HTTP_OK: return true; case HttpURLConnection.HTTP_FORBIDDEN: throw new AuthorizationException( String.format( "Access denied to %s . Status code %s", url, statusCode ) ); case HttpURLConnection.HTTP_NOT_FOUND: return false; case HttpURLConnection.HTTP_UNAUTHORIZED: throw new AuthorizationException( String.format( "Access denied to %s . Status code %s", url, statusCode ) ); default: throw new TransferException( "Failed to look for file: " + buildUrl( url ) + ". Return code is: " + statusCode ); } }
private boolean resourceExist( String url ) throws IOException, ExecutionException, InterruptedException, TransferException, AuthorizationException { int statusCode = httpClient.prepareHead( url ).setHeaders( headers ).execute().get().getStatusCode(); switch ( statusCode ) { case HttpURLConnection.HTTP_OK: return true; case HttpURLConnection.HTTP_FORBIDDEN: throw new AuthorizationException( String.format( "Access denied to %s . Status code %s", url, statusCode ) ); case HttpURLConnection.HTTP_NOT_FOUND: return false; case HttpURLConnection.HTTP_UNAUTHORIZED: throw new AuthorizationException( String.format( "Access denied to %s . Status code %s", url, statusCode ) ); default: throw new TransferException( "Failed to look for file: " + buildUrl( url ) + ". Return code is: " + statusCode ); } }
public WrappedRequestBuilder setHeaders(FluentCaseInsensitiveStringsMap headers) { _delegate.setHeaders(headers); return this; }
public WrappedRequestBuilder setHeaders(Map<String, Collection<String>> headers) { _delegate.setHeaders(headers); return this; }
protected AsyncHttpClient.BoundRequestBuilder configureAHC(Request request) { FluentStringsMap m = DefaultSocket.decodeQueryString(request); return options.runtime().preparePost(request.uri()) .setHeaders(request.headers()) .setQueryParams(m) .setMethod(Request.METHOD.POST.name()); }
@Override protected AsyncHttpClient.BoundRequestBuilder configureAHC(Request request) { FluentStringsMap m = DefaultSocket.decodeQueryString(request); m.put("X-Atmosphere-Transport", Arrays.asList(new String[]{"polling"})); m.remove("X-atmo-protocol"); return options.runtime().preparePost(request.uri()) .setHeaders(request.headers()) .setQueryParams(m) .setMethod(Request.METHOD.POST.name()); } }
@Override protected AsyncHttpClient.BoundRequestBuilder configureAHC(Request request) { FluentStringsMap m = DefaultSocket.decodeQueryString(request); m.put("X-Atmosphere-Transport", Arrays.asList(new String[]{"polling"})); m.remove("X-atmo-protocol"); return options.runtime().preparePost(request.uri()) .setHeaders(request.headers()) .setQueryParams(m) .setMethod(Request.METHOD.POST.name()); } }
protected AsyncHttpClient.BoundRequestBuilder configureAHC(Request request) { FluentStringsMap m = DefaultSocket.decodeQueryString(request); return options.runtime().preparePost(request.uri()) .setHeaders(request.headers()) .setQueryParams(m) .setMethod(Request.METHOD.POST.name()); }
public WrappedRequestBuilder setHeaders(Map<String, Collection<String>> headers) { _delegate.setHeaders(headers); return this; }
public WrappedRequestBuilder setHeaders(FluentCaseInsensitiveStringsMap headers) { _delegate.setHeaders(headers); return this; }