Search in sources :

Example 11 with Level

use of okhttp3.logging.HttpLoggingInterceptor.Level in project feign by OpenFeign.

the class FallbackFactoryTest method defaultFallbackFactory_logsAtFineLevel.

@Test
public void defaultFallbackFactory_logsAtFineLevel() {
    server.enqueue(new MockResponse().setResponseCode(500));
    AtomicBoolean logged = new AtomicBoolean();
    Logger logger = new Logger("", null) {

        @Override
        public void log(Level level, String msg, Throwable thrown) {
            logged.set(true);
            assertThat(msg).isEqualTo("fallback due to: [500 Server Error] during [POST] to [http://localhost:" + server.getPort() + "/] [TestInterface#invoke()]: []");
            assertThat(thrown).isInstanceOf(FeignException.class);
        }
    };
    logger.setLevel(Level.FINE);
    target(new FallbackFactory.Default<>(() -> "foo", logger)).invoke();
    assertThat(logged.get()).isTrue();
}
Also used : MockResponse(okhttp3.mockwebserver.MockResponse) AtomicBoolean(java.util.concurrent.atomic.AtomicBoolean) Level(java.util.logging.Level) Logger(java.util.logging.Logger) Test(org.junit.Test)

Example 12 with Level

use of okhttp3.logging.HttpLoggingInterceptor.Level in project feign by OpenFeign.

the class FallbackFactoryTest method defaultFallbackFactory_doesntLogByDefault.

@Test
public void defaultFallbackFactory_doesntLogByDefault() {
    server.enqueue(new MockResponse().setResponseCode(500));
    Logger logger = new Logger("", null) {

        @Override
        public void log(Level level, String msg, Throwable thrown) {
            throw new AssertionError("logged eventhough not FINE level");
        }
    };
    target(new FallbackFactory.Default<>(() -> "foo", logger)).invoke();
}
Also used : MockResponse(okhttp3.mockwebserver.MockResponse) Level(java.util.logging.Level) Logger(java.util.logging.Logger) Test(org.junit.Test)

Example 13 with Level

use of okhttp3.logging.HttpLoggingInterceptor.Level in project bitcoin-wallet by bitcoin-wallet.

the class AlertDialogsFragment method process.

private void process() {
    final PackageInfo packageInfo = application.packageInfo();
    final HttpUrl.Builder url = Constants.VERSION_URL.newBuilder();
    url.addEncodedQueryParameter("package", packageInfo.packageName);
    final String installerPackageName = Installer.installerPackageName(application);
    if (installerPackageName != null)
        url.addEncodedQueryParameter("installer", installerPackageName);
    url.addQueryParameter("sdk", Integer.toString(Build.VERSION.SDK_INT));
    url.addQueryParameter("current", Integer.toString(packageInfo.versionCode));
    final HttpUrl versionUrl = url.build();
    AsyncTask.execute(() -> {
        try {
            log.debug("querying \"{}\"...", versionUrl);
            final Request.Builder request = new Request.Builder();
            request.url(versionUrl);
            final Headers.Builder headers = new Headers.Builder();
            headers.add("Accept-Charset", "utf-8");
            final String userAgent = application.httpUserAgent();
            if (userAgent != null)
                headers.add("User-Agent", userAgent);
            request.headers(headers.build());
            final Builder httpClientBuilder = Constants.HTTP_CLIENT.newBuilder();
            httpClientBuilder.connectionSpecs(Collections.singletonList(ConnectionSpec.RESTRICTED_TLS));
            final Call call = httpClientBuilder.build().newCall(request.build());
            final Response response = call.execute();
            if (response.isSuccessful()) {
                // Maybe show timeskew alert.
                final Date serverDate = response.headers().getDate("Date");
                if (serverDate != null) {
                    final long diffMinutes = Math.abs((System.currentTimeMillis() - serverDate.getTime()) / DateUtils.MINUTE_IN_MILLIS);
                    if (diffMinutes >= 60) {
                        log.info("according to \"" + versionUrl + "\", system clock is off by " + diffMinutes + " minutes");
                        viewModel.showTimeskewAlertDialog.postValue(new Event<>(diffMinutes));
                        return;
                    }
                }
                // Read properties from server.
                final Map<String, String> properties = new HashMap<>();
                try (final BufferedReader reader = new BufferedReader(response.body().charStream())) {
                    while (true) {
                        final String line = reader.readLine();
                        if (line == null)
                            break;
                        if (line.charAt(0) == '#')
                            continue;
                        final Splitter splitter = Splitter.on('=').trimResults();
                        final Iterator<String> split = splitter.split(line).iterator();
                        if (!split.hasNext())
                            continue;
                        final String key = split.next();
                        if (!split.hasNext()) {
                            properties.put(null, key);
                            continue;
                        }
                        final String value = split.next();
                        if (!split.hasNext()) {
                            properties.put(key.toLowerCase(Locale.US), value);
                            continue;
                        }
                        log.info("Ignoring line: {}", line);
                    }
                }
                // Maybe show version alert.
                String versionKey = null;
                String version = null;
                if (installer != null) {
                    versionKey = "version." + installer.name().toLowerCase(Locale.US);
                    version = properties.get(versionKey);
                }
                if (version == null) {
                    versionKey = "version";
                    version = properties.get(versionKey);
                }
                if (version != null) {
                    log.info("according to \"{}\", strongly recommended minimum app {} is \"{}\"", versionUrl, versionKey, version);
                    final Integer recommendedVersionCode = Ints.tryParse(version);
                    if (recommendedVersionCode != null) {
                        if (recommendedVersionCode > application.packageInfo().versionCode) {
                            viewModel.showVersionAlertDialog.postValue(Event.simple());
                            return;
                        }
                    }
                }
                // Maybe show insecure device alert.
                if (Build.VERSION.SECURITY_PATCH.compareToIgnoreCase(Constants.SECURITY_PATCH_INSECURE_BELOW) < 0) {
                    viewModel.showInsecureDeviceAlertDialog.postValue(new Event<>(Constants.SECURITY_PATCH_INSECURE_BELOW));
                    return;
                }
                // Maybe show insecure bluetooth alert.
                final String minSecurityPatchLevel = properties.get("min.security_patch.bluetooth");
                if (minSecurityPatchLevel != null) {
                    log.info("according to \"{}\", minimum security patch level for bluetooth is {}", versionUrl, minSecurityPatchLevel);
                    if (Build.VERSION.SECURITY_PATCH.compareTo(minSecurityPatchLevel) < 0) {
                        final BluetoothAdapter bluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
                        if (bluetoothAdapter != null && BluetoothAdapter.getDefaultAdapter().isEnabled()) {
                            viewModel.showInsecureBluetoothAlertDialog.postValue(new Event<>(minSecurityPatchLevel));
                            return;
                        }
                    }
                }
                // Maybe show low storage alert.
                final Intent stickyIntent = activity.registerReceiver(null, new IntentFilter(Intent.ACTION_DEVICE_STORAGE_LOW));
                if (stickyIntent != null) {
                    viewModel.showLowStorageAlertDialog.postValue(Event.simple());
                    return;
                }
                // Maybe show too much balance alert.
                if (Constants.NETWORK_PARAMETERS.getId().equals(MainNetParams.ID_MAINNET)) {
                    final Coin balance = application.getWallet().getBalance();
                    if (balance.isGreaterThan(Constants.TOO_MUCH_BALANCE_THRESHOLD)) {
                        viewModel.showTooMuchBalanceAlertDialog.postValue(Event.simple());
                        return;
                    }
                }
                log.info("all good, no alert dialog shown");
            }
        } catch (final Exception x) {
            if (x instanceof UnknownHostException || x instanceof SocketException || x instanceof SocketTimeoutException) {
                // swallow
                log.debug("problem reading", x);
            } else {
                CrashReporter.saveBackgroundTrace(new RuntimeException(versionUrl.toString(), x), application.packageInfo());
                log.warn("problem parsing", x);
            }
        }
    });
}
Also used : SocketException(java.net.SocketException) HashMap(java.util.HashMap) Headers(okhttp3.Headers) Builder(okhttp3.OkHttpClient.Builder) Coin(org.bitcoinj.core.Coin) Call(okhttp3.Call) IntentFilter(android.content.IntentFilter) Splitter(com.google.common.base.Splitter) UnknownHostException(java.net.UnknownHostException) PackageInfo(android.content.pm.PackageInfo) Request(okhttp3.Request) Intent(android.content.Intent) HttpUrl(okhttp3.HttpUrl) Date(java.util.Date) SocketException(java.net.SocketException) SocketTimeoutException(java.net.SocketTimeoutException) UnknownHostException(java.net.UnknownHostException) Response(okhttp3.Response) SocketTimeoutException(java.net.SocketTimeoutException) BufferedReader(java.io.BufferedReader) BluetoothAdapter(android.bluetooth.BluetoothAdapter)

Example 14 with Level

use of okhttp3.logging.HttpLoggingInterceptor.Level in project EhViewer by seven332.

the class CookieRepositoryTest method testPersistent.

@Test
public void testPersistent() {
    Context app = RuntimeEnvironment.application;
    HttpUrl urlEh = HttpUrl.parse("http://www.ehviewer.com/");
    Cookie cookieEh1 = new Cookie.Builder().name("user").value("1234567890").domain("ehviewer.com").path("/").build();
    Cookie cookieEh2 = new Cookie.Builder().name("level").value("999").domain("www.ehviewer.com").path("/").expiresAt(System.currentTimeMillis() + 100000).build();
    Cookie cookieEh3 = new Cookie.Builder().name("speed").value("10").domain("www.ehviewer.com").path("/").expiresAt(System.currentTimeMillis() + 100000).build();
    HttpUrl urlNMB = HttpUrl.parse("http://h.nimingban.com/");
    Cookie cookieNMB = new Cookie.Builder().name("hash").value("0987654321").domain("nimingban.com").expiresAt(System.currentTimeMillis() + 100000).path("/").build();
    CookieRepository repository = new CookieRepository(app, "cookie.db");
    repository.saveFromResponse(urlEh, Arrays.asList(cookieEh1, cookieEh2, cookieEh3));
    repository.saveFromResponse(urlNMB, Collections.singletonList(cookieNMB));
    Map<String, CookieSet> map = Reflect.on(repository).field("map").get();
    assertEquals(3, map.size());
    equals(map.get("ehviewer.com"), Collections.singletonList(cookieEh1));
    equals(map.get("www.ehviewer.com"), Arrays.asList(cookieEh2, cookieEh3));
    equals(map.get("nimingban.com"), Collections.singletonList(cookieNMB));
    repository.close();
    repository = new CookieRepository(app, "cookie.db");
    map = Reflect.on(repository).field("map").get();
    assertEquals(2, map.size());
    equals(map.get("www.ehviewer.com"), Arrays.asList(cookieEh2, cookieEh3));
    equals(map.get("nimingban.com"), Collections.singletonList(cookieNMB));
    repository.close();
}
Also used : Context(android.content.Context) Cookie(okhttp3.Cookie) HttpUrl(okhttp3.HttpUrl) Test(org.junit.Test)

Example 15 with Level

use of okhttp3.logging.HttpLoggingInterceptor.Level in project EhViewer by seven332.

the class CookieRepositoryTest method testUpdate.

@Test
public void testUpdate() {
    Context app = RuntimeEnvironment.application;
    HttpUrl urlEh = HttpUrl.parse("http://www.ehviewer.com/");
    Cookie cookieEh1 = new Cookie.Builder().name("level").value("999").domain("www.ehviewer.com").path("/").expiresAt(System.currentTimeMillis() + 100000).build();
    Cookie cookieEh2 = new Cookie.Builder().name("level").value("0").domain("www.ehviewer.com").path("/").expiresAt(System.currentTimeMillis() + 100000).build();
    CookieRepository repository = new CookieRepository(app, "cookie.db");
    repository.saveFromResponse(urlEh, Collections.singletonList(cookieEh1));
    repository.saveFromResponse(urlEh, Collections.singletonList(cookieEh2));
    Map<String, CookieSet> map = Reflect.on(repository).field("map").get();
    assertEquals(1, map.size());
    equals(map.get("www.ehviewer.com"), Collections.singletonList(cookieEh2));
    repository.close();
    repository = new CookieRepository(app, "cookie.db");
    map = Reflect.on(repository).field("map").get();
    assertEquals(1, map.size());
    equals(map.get("www.ehviewer.com"), Collections.singletonList(cookieEh2));
    repository.close();
}
Also used : Context(android.content.Context) Cookie(okhttp3.Cookie) HttpUrl(okhttp3.HttpUrl) Test(org.junit.Test)

Aggregations

Request (okhttp3.Request)14 Response (okhttp3.Response)13 IOException (java.io.IOException)12 ResponseBody (okhttp3.ResponseBody)12 Test (org.junit.Test)12 HttpUrl (okhttp3.HttpUrl)9 RequestBody (okhttp3.RequestBody)8 Charset (java.nio.charset.Charset)7 Headers (okhttp3.Headers)7 OkHttpClient (okhttp3.OkHttpClient)7 MockResponse (okhttp3.mockwebserver.MockResponse)7 Buffer (okio.Buffer)7 BufferedSource (okio.BufferedSource)7 Context (android.content.Context)6 Connection (okhttp3.Connection)6 MediaType (okhttp3.MediaType)6 Protocol (okhttp3.Protocol)6 HttpHeaders (okhttp3.internal.http.HttpHeaders)6 EOFException (java.io.EOFException)5 ArrayList (java.util.ArrayList)5