| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -8,15 +8,20 @@ | |||
| 8 | 8 | import com.cloudinary.strategies.AbstractApiStrategy; | |
| 9 | 9 | import com.cloudinary.utils.ObjectUtils; | |
| 10 | 10 | import org.apache.hc.client5.http.classic.methods.*; | |
| 11 | + import org.apache.hc.client5.http.config.RequestConfig; | ||
| 11 | 12 | import org.apache.hc.client5.http.entity.UrlEncodedFormEntity; | |
| 12 | 13 | import org.apache.hc.client5.http.impl.classic.CloseableHttpClient; | |
| 13 | 14 | import org.apache.hc.client5.http.impl.classic.CloseableHttpResponse; | |
| 15 | + import org.apache.hc.client5.http.impl.classic.HttpClientBuilder; | ||
| 14 | 16 | import org.apache.hc.client5.http.impl.classic.HttpClients; | |
| 17 | + import org.apache.hc.client5.http.io.HttpClientConnectionManager; | ||
| 15 | 18 | import org.apache.hc.core5.http.HttpEntity; | |
| 19 | + import org.apache.hc.core5.http.HttpHost; | ||
| 16 | 20 | import org.apache.hc.core5.http.NameValuePair; | |
| 17 | 21 | import org.apache.hc.core5.http.io.entity.EntityUtils; | |
| 18 | 22 | import org.apache.hc.core5.http.io.entity.StringEntity; | |
| 19 | 23 | import org.apache.hc.core5.net.URIBuilder; | |
| 24 | + import org.apache.hc.core5.util.Timeout; | ||
| 20 | 25 | import org.cloudinary.json.JSONException; | |
| 21 | 26 | import org.cloudinary.json.JSONObject; | |
| 22 | 27 | ||
@@ -36,15 +41,42 @@ public class ApiStrategy extends AbstractApiStrategy { | |||
| 36 | 41 | ||
| 37 | 42 | private CloseableHttpClient client; | |
| 38 | 43 | ||
| 39 | - @Override | ||
| 40 | 44 | public void init(Api api) { | |
| 41 | 45 | super.init(api); | |
| 42 | 46 | ||
| 43 | - this.client = HttpClients.custom() | ||
| 44 | - .setUserAgent(this.api.cloudinary.getUserAgent() + " ApacheHttpClient/" + APACHE_HTTP_CLIENT_VERSION) | ||
| 47 | + HttpClientBuilder clientBuilder = HttpClients.custom(); | ||
| 48 | + clientBuilder.useSystemProperties().setUserAgent(this.api.cloudinary.getUserAgent() + " ApacheHttpClient/" + APACHE_HTTP_CLIENT_VERSION); | ||
| 49 | + | ||
| 50 | + HttpClientConnectionManager connectionManager = (HttpClientConnectionManager) api.cloudinary.config.properties.get("connectionManager"); | ||
| 51 | + if (connectionManager != null) { | ||
| 52 | + clientBuilder.setConnectionManager(connectionManager); | ||
| 53 | + } | ||
| 54 | + | ||
| 55 | + RequestConfig requestConfig = buildRequestConfig(); | ||
| 56 | + | ||
| 57 | + client = clientBuilder | ||
| 58 | + .setDefaultRequestConfig(requestConfig) | ||
| 45 | 59 | .build(); | |
| 46 | 60 | } | |
| 47 | 61 | ||
| 62 | + public RequestConfig buildRequestConfig() { | ||
| 63 | + RequestConfig.Builder requestConfigBuilder = RequestConfig.custom(); | ||
| 64 | + | ||
| 65 | + if (api.cloudinary.config.proxyHost != null && api.cloudinary.config.proxyPort != 0) { | ||
| 66 | + HttpHost proxy = new HttpHost(api.cloudinary.config.proxyHost, api.cloudinary.config.proxyPort); | ||
| 67 | + requestConfigBuilder.setProxy(proxy); | ||
| 68 | + } | ||
| 69 | + | ||
| 70 | + int timeout = this.api.cloudinary.config.timeout; | ||
| 71 | + if (timeout > 0) { | ||
| 72 | + requestConfigBuilder.setResponseTimeout(Timeout.ofSeconds(timeout)) | ||
| 73 | + .setConnectionRequestTimeout(Timeout.ofSeconds(timeout)) | ||
| 74 | + .setConnectTimeout(Timeout.ofSeconds(timeout)); | ||
| 75 | + } | ||
| 76 | + | ||
| 77 | + return requestConfigBuilder.build(); | ||
| 78 | + } | ||
| 79 | + | ||
| 48 | 80 | @SuppressWarnings({"rawtypes", "unchecked"}) | |
| 49 | 81 | public ApiResponse callApi(Api.HttpMethod method, String apiUrl, Map<String, ?> params, Map options, String autorizationHeader) throws Exception { | |
| 50 | 82 | HttpUriRequestBase request = prepareRequest(method, apiUrl, params, options); | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -1,15 +1,50 @@ | |||
| 1 | 1 | package com.cloudinary.test; | |
| 2 | 2 | ||
| 3 | + import com.cloudinary.Cloudinary; | ||
| 3 | 4 | import com.cloudinary.api.ApiResponse; | |
| 5 | + import com.cloudinary.http5.ApiStrategy; | ||
| 4 | 6 | import com.cloudinary.utils.ObjectUtils; | |
| 7 | + import org.apache.hc.client5.http.config.RequestConfig; | ||
| 8 | + import org.apache.hc.core5.http.HttpHost; | ||
| 5 | 9 | import org.apache.hc.core5.util.Timeout; | |
| 6 | 10 | import org.junit.Test; | |
| 7 | 11 | import org.junit.experimental.categories.Category; | |
| 12 | + | ||
| 8 | 13 | import java.util.Map; | |
| 9 | 14 | ||
| 10 | 15 | ||
| 11 | 16 | public class ApiTest extends AbstractApiTest { | |
| 12 | 17 | ||
| 18 | + @Test | ||
| 19 | + public void testBuildRequestConfig_withProxyAndTimeout() { | ||
| 20 | + Cloudinary cloudinary = new Cloudinary("cloudinary://test:test@test.com"); | ||
| 21 | + cloudinary.config.proxyHost = "127.0.0.1"; | ||
| 22 | + cloudinary.config.proxyPort = 8080; | ||
| 23 | + cloudinary.config.timeout = 15; | ||
| 24 | + | ||
| 25 | + RequestConfig requestConfig = ((ApiStrategy)cloudinary.api().getStrategy()).buildRequestConfig(); | ||
| 26 | + | ||
| 27 | + assert(requestConfig.getProxy() != null); | ||
| 28 | + HttpHost proxy = requestConfig.getProxy(); | ||
| 29 | + assert("127.0.0.1" == proxy.getHostName()); | ||
| 30 | + assert(8080 == proxy.getPort()); | ||
| 31 | + | ||
| 32 | + assert(15000 == requestConfig.getConnectionRequestTimeout().toMilliseconds()); | ||
| 33 | + assert(15000 == requestConfig.getResponseTimeout().toMilliseconds()); | ||
| 34 | + } | ||
| 35 | + | ||
| 36 | + @Test | ||
| 37 | + public void testBuildRequestConfig_withoutProxy() { | ||
| 38 | + Cloudinary cloudinary = new Cloudinary("cloudinary://test:test@test.com"); | ||
| 39 | + cloudinary.config.timeout = 10; | ||
| 40 | + | ||
| 41 | + RequestConfig requestConfig = ((ApiStrategy)cloudinary.api().getStrategy()).buildRequestConfig(); | ||
| 42 | + | ||
| 43 | + assert(requestConfig.getProxy() == null); | ||
| 44 | + assert(10000 == requestConfig.getConnectionRequestTimeout().toMilliseconds()); | ||
| 45 | + assert(10000 == requestConfig.getResponseTimeout().toMilliseconds()); | ||
| 46 | + } | ||
| 47 | + | ||
| 13 | 48 | @Category(TimeoutTest.class) | |
| 14 | 49 | @Test(expected = Exception.class) | |
| 15 | 50 | public void testConnectTimeoutParameter() throws Exception { | |
@@ -41,5 +76,4 @@ public void testTimeoutParameter() throws Exception { | |||
| 41 | 76 | throw new Exception("Socket timeout"); | |
| 42 | 77 | } | |
| 43 | 78 | } | |
| 44 | - } | ||
| 45 | - | ||
| 79 | + } | ||
| Back | FazBrowse Home | New Git URL |
0 commit comments