Search in sources :

Example 1 with RateLimitInterceptor

use of com.auth0.net.RateLimitInterceptor in project auth0-java by auth0.

the class ManagementAPI method buildNetworkingClient.

/**
 * Given a set of options, it creates a new instance of the {@link OkHttpClient}
 * configuring them according to their availability.
 *
 * @param options the options to set to the client.
 * @return a new networking client instance configured as requested.
 */
private OkHttpClient buildNetworkingClient(HttpOptions options) {
    OkHttpClient.Builder clientBuilder = new OkHttpClient.Builder();
    final ProxyOptions proxyOptions = options.getProxyOptions();
    if (proxyOptions != null) {
        // Set proxy
        clientBuilder.proxy(proxyOptions.getProxy());
        // Set authentication, if present
        final String proxyAuth = proxyOptions.getBasicAuthentication();
        if (proxyAuth != null) {
            clientBuilder.proxyAuthenticator(new Authenticator() {

                private static final String PROXY_AUTHORIZATION_HEADER = "Proxy-Authorization";

                @Override
                public okhttp3.Request authenticate(Route route, Response response) throws IOException {
                    if (response.request().header(PROXY_AUTHORIZATION_HEADER) != null) {
                        return null;
                    }
                    return response.request().newBuilder().header(PROXY_AUTHORIZATION_HEADER, proxyAuth).build();
                }
            });
        }
    }
    configureLogging(options.getLoggingOptions());
    Dispatcher dispatcher = new Dispatcher();
    dispatcher.setMaxRequestsPerHost(options.getMaxRequestsPerHost());
    dispatcher.setMaxRequests(options.getMaxRequests());
    return clientBuilder.addInterceptor(logging).addInterceptor(telemetry).addInterceptor(new RateLimitInterceptor(options.getManagementAPIMaxRetries())).connectTimeout(options.getConnectTimeout(), TimeUnit.SECONDS).readTimeout(options.getReadTimeout(), TimeUnit.SECONDS).dispatcher(dispatcher).build();
}
Also used : ProxyOptions(com.auth0.client.ProxyOptions) IOException(java.io.IOException) RateLimitInterceptor(com.auth0.net.RateLimitInterceptor)

Example 2 with RateLimitInterceptor

use of com.auth0.net.RateLimitInterceptor in project auth0-java by auth0.

the class ManagementAPITest method shouldUseDefaultMaxRetriesIfNotConfigured.

@Test
public void shouldUseDefaultMaxRetriesIfNotConfigured() {
    ManagementAPI api = new ManagementAPI(DOMAIN, API_TOKEN);
    assertThat(api.getClient().interceptors(), hasItem(isA(RateLimitInterceptor.class)));
    for (Interceptor i : api.getClient().interceptors()) {
        if (i instanceof RateLimitInterceptor) {
            RateLimitInterceptor rateLimitInterceptor = (RateLimitInterceptor) i;
            assertThat(rateLimitInterceptor.getMaxRetries(), is(3));
        }
    }
}
Also used : TelemetryInterceptor(com.auth0.net.TelemetryInterceptor) RateLimitInterceptor(com.auth0.net.RateLimitInterceptor) HttpLoggingInterceptor(okhttp3.logging.HttpLoggingInterceptor) RateLimitInterceptor(com.auth0.net.RateLimitInterceptor) Test(org.junit.Test)

Example 3 with RateLimitInterceptor

use of com.auth0.net.RateLimitInterceptor in project auth0-java by auth0.

the class ManagementAPITest method shouldUseCustomMaxRetriesIfConfigured.

@Test
public void shouldUseCustomMaxRetriesIfConfigured() {
    HttpOptions options = new HttpOptions();
    options.setManagementAPIMaxRetries(5);
    ManagementAPI api = new ManagementAPI(DOMAIN, API_TOKEN, options);
    assertThat(api.getClient().interceptors(), hasItem(isA(RateLimitInterceptor.class)));
    for (Interceptor i : api.getClient().interceptors()) {
        if (i instanceof RateLimitInterceptor) {
            RateLimitInterceptor rateLimitInterceptor = (RateLimitInterceptor) i;
            assertThat(rateLimitInterceptor.getMaxRetries(), is(5));
        }
    }
}
Also used : HttpOptions(com.auth0.client.HttpOptions) TelemetryInterceptor(com.auth0.net.TelemetryInterceptor) RateLimitInterceptor(com.auth0.net.RateLimitInterceptor) HttpLoggingInterceptor(okhttp3.logging.HttpLoggingInterceptor) RateLimitInterceptor(com.auth0.net.RateLimitInterceptor) Test(org.junit.Test)

Aggregations

RateLimitInterceptor (com.auth0.net.RateLimitInterceptor)3 TelemetryInterceptor (com.auth0.net.TelemetryInterceptor)2 HttpLoggingInterceptor (okhttp3.logging.HttpLoggingInterceptor)2 Test (org.junit.Test)2 HttpOptions (com.auth0.client.HttpOptions)1 ProxyOptions (com.auth0.client.ProxyOptions)1 IOException (java.io.IOException)1