Giter VIP home page Giter VIP logo

chuck's People

Contributors

alorma avatar eschlenz avatar jgilfelt avatar jonathan-caryl avatar simonmarquis avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

chuck's Issues

JSON is not pretty print.

JSON should be pretty print.
please add this line
String prettyJson = new JSONObject(bodyString).toString(2)
bodyText.setText(prettyJson)

Add App Shortcut to start Chuck from the Launcher

I use chuck and I like it a lot.

One thing I have seen in another library I am using is the ability to start chuck from an app shortcut in an alpha/beta release - thus it is rather hidden from the user (good for testing) but still accessible for me as the developer

:-)

Nullpointer with v1.0.1 on the SearchView

On the latest version when opening the notification I got the following crash:
E/AndroidRuntime: FATAL EXCEPTION: main Process: com.triple.verstappen.dev, PID: 6720 java.lang.NullPointerException: Attempt to invoke virtual method 'void android.support.v7.widget.SearchView.setOnQueryTextListener(android.support.v7.widget.SearchView$OnQueryTextListener)' on a null object reference at com.readystatesoftware.chuck.internal.ui.TransactionListFragment.onCreateOptionsMenu(TransactionListFragment.java:107) at android.support.v4.app.Fragment.performCreateOptionsMenu(Fragment.java:2288) at android.support.v4.app.FragmentManagerImpl.dispatchCreateOptionsMenu(FragmentManager.java:2984) at android.support.v4.app.FragmentController.dispatchCreateOptionsMenu(FragmentController.java:328) at android.support.v4.app.FragmentActivity.onCreatePanelMenu(FragmentActivity.java:363) at android.support.v7.view.WindowCallbackWrapper.onCreatePanelMenu(WindowCallbackWrapper.java:98) at android.support.v7.app.AppCompatDelegateImplBase$AppCompatWindowCallbackBase.onCreatePanelMenu(AppCompatDelegateImplBase.java:335) at android.support.v7.view.WindowCallbackWrapper.onCreatePanelMenu(WindowCallbackWrapper.java:98) at android.support.v7.app.ToolbarActionBar.populateOptionsMenu(ToolbarActionBar.java:454) at android.support.v7.app.ToolbarActionBar$1.run(ToolbarActionBar.java:61) at android.os.Handler.handleCallback(Handler.java:739) at android.os.Handler.dispatchMessage(Handler.java:95) at android.os.Looper.loop(Looper.java:148) at android.app.ActivityThread.main(ActivityThread.java:5417) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)

Request body format

I would like to show null fields. Please, add serializeNulls() or give the possibility to set my own Gson in com.readystatesoftware.chuck.internal.support.JsonConvertor

SecurityException using Chuck from AbstractAccountAuthenticator

I get the following SecurityException when using Chuck from a custom authenticator implementation:

java.lang.SecurityException: Permission Denial: writing com.readystatesoftware.chuck.internal.data.ChuckContentProvider uri content://com.myapp.debug.chuck.provider/transaction from pid=0, uid=1000 requires the provider be exported, or grantUriPermission()
	at android.content.ContentProvider.enforceWritePermissionInner(ContentProvider.java:707)
	at android.content.ContentProvider$Transport.enforceWritePermission(ContentProvider.java:517)
	at android.content.ContentProvider$Transport.insert(ContentProvider.java:262)
	at android.content.ContentResolver.insert(ContentResolver.java:1539)
	at com.readystatesoftware.chuck.ChuckInterceptor.create(ChuckInterceptor.java:225)
	at com.readystatesoftware.chuck.ChuckInterceptor.intercept(ChuckInterceptor.java:167)
	at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:147)
	at okhttp3.internal.connection.ConnectInterceptor.intercept(ConnectInterceptor.java:45)
	at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:147)
	at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:121)
	at okhttp3.internal.cache.CacheInterceptor.intercept(CacheInterceptor.java:93)
	at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:147)
	at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:121)
	at okhttp3.internal.http.BridgeInterceptor.intercept(BridgeInterceptor.java:93)
	at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:147)
	at okhttp3.internal.http.RetryAndFollowUpInterceptor.intercept(RetryAndFollowUpInterceptor.java:125)
	at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:147)
	at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:121)
	at okhttp3.RealCall.getResponseWithInterceptorChain(RealCall.java:200)
	at okhttp3.RealCall.execute(RealCall.java:77)
	at retrofit2.OkHttpCall.execute(OkHttpCall.java:180)
	at retrofit2.ExecutorCallAdapterFactory$ExecutorCallbackCall.execute(ExecutorCallAdapterFactory.java:91)
	at com.myapp.sync.MyappAuthenticator.obtainAuthToken(MyappAuthenticator.kt:118)
	at com.myapp.sync.MyappAuthenticator.getAuthToken(MyappAuthenticator.kt:70)
	at android.accounts.AbstractAccountAuthenticator$Transport.getAuthToken(AbstractAccountAuthenticator.java:244)
	at android.accounts.IAccountAuthenticator$Stub.onTransact(IAccountAuthenticator.java:113)
	at android.os.Binder.execTransact(Binder.java:674)

If I had to guess, the authenticator is running with the permissions of the AccountManager (uid=1000 strikes me as the user's account, not the app's).

Obviously, this breaks the HTTP calls; the request is never made.

OOM occurs while downloading or uploading large text file

RequestBody and ResponseBody will be saved into database and later displayed on the Fragment if they are plain text. However, when uploading or downloading large text files, if Content-Type is text/* and serve responds with non-gzipped content, all the file content will be loaded into memory and saved into databse. In this situation, OOM occurs.

I don't think it is elegant to write all the plain text RequestBody or ResponseBody into database and memory ignoring content length. I add a threshold in ChuckInterceptor. When the content length is too large, we can write a String into database instead of all the content.

So, should I open a pull request?

Proguard?

Is there any proguard rules for release builds?

Chuck should provide a way to null out databaseHelper

When using Chuck in our application, I found an issue when trying to log out and logging back in.

When logging out of our application, the databaseHelper should be closed.

It doesn't seem we get that free from Chuck. I have to kill my application and relaunch it in order for the in-memory reference for databaseHelper to be cleared.

Currently, the workaround I have for our app is to use reflection to close that dbHelper when we log out of our application. Please let me know if I'm missing something or if you acknowledge this as a bug or feature request.

            ContentProvider contentProvider = getContentResolver().acquireContentProviderClient(ChuckContentProvider.TRANSACTION_URI).getLocalContentProvider();
            if (contentProvider != null && contentProvider instanceof ChuckContentProvider) {

                try {
                    ChuckContentProvider chuckContentProvider = (ChuckContentProvider) contentProvider;
                    Field databaseHelperField = chuckContentProvider.getClass().getDeclaredField("databaseHelper");
                    databaseHelperField.setAccessible(true);
                    SQLiteOpenHelper openHelper =
                            databaseHelperField.get(chuckContentProvider) instanceof SQLiteOpenHelper ? (SQLiteOpenHelper) databaseHelperField.get(chuckContentProvider)
                                                                                                      : null;
                    if (openHelper != null) {
                        openHelper.close();
                    }

                } catch (NoSuchFieldException e) {
                    logger.logp(Level.WARNING, TAG, STR_DO_CLEAN_UP, "Cannot get declared field", e);
                } catch (IllegalAccessException e) {
                    logger.logp(Level.WARNING, TAG, STR_DO_CLEAN_UP, "Cannot access private field", e);
                }
            }

Is it necessary to use ContentProvider?

Content providers can help an application manage access to data stored by itself, stored by other apps, and provide a way to share data with other apps.But in this repository, the chuck is used only in our own application, so I think it's better to use SQLite database to manage database directly.

Permission Denial

We are using android authenticator and Chuck is failing because ChuckContentProvider is not available from different processes:

java.lang.SecurityException: Permission Denial: writing com.readystatesoftware.chuck.internal.data.ChuckContentProvider uri content://app.chuck.provider/transaction from pid=0, uid=1000 requires the provider be exported, or grantUriPermission()
	at android.content.ContentProvider.enforceWritePermissionInner(ContentProvider.java:682)
	at android.content.ContentProvider$Transport.enforceWritePermission(ContentProvider.java:497)
	at android.content.ContentProvider$Transport.insert(ContentProvider.java:259)
	at android.content.ContentResolver.insert(ContentResolver.java:1274)
	at com.readystatesoftware.chuck.ChuckInterceptor.create(ChuckInterceptor.java:220)
	at com.readystatesoftware.chuck.ChuckInterceptor.intercept(ChuckInterceptor.java:162)
	at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:92)
	at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:67)
	at okhttp3.RealCall.getResponseWithInterceptorChain(RealCall.java:179)
	at okhttp3.RealCall.execute(RealCall.java:63)
	...
	at retrofit.RestAdapter$RestHandler.invokeRequest(RestAdapter.java:326)
	at retrofit.RestAdapter$RestHandler.invoke(RestAdapter.java:240)
	at java.lang.reflect.Proxy.invoke(Proxy.java:813)
	at $Proxy36.autoLogin(Unknown Source)
	at android.accounts.AbstractAccountAuthenticator$Transport.getAuthToken(AbstractAccountAuthenticator.java:244)
	at android.accounts.IAccountAuthenticator$Stub.onTransact(IAccountAuthenticator.java:113)
	at android.os.Binder.execTransact(Binder.java:565)

If someone is experiencing the same problem the quick fix is to set android:exported="true" for ChuckContentProvider. So just add this to your AndroidManifest.xml:

<provider
    android:name="com.readystatesoftware.chuck.internal.data.ChuckContentProvider"
    android:authorities="${applicationId}.chuck.provider"
    android:exported="true"
    tools:replace="exported"
    />

Could not expand ZIP

Project not building when added debugCompile 'com.readystatesoftware.chuck:library:1.0.0'
in my dependencies.
Error log below:

> Error:Execution failed for task ':app:prepareComReadystatesoftwareChuckLibrary100Library'.
> > Could not expand ZIP '/Users/yutku/.gradle/caches/modules-2/files-2.1/com.readystatesoftware.chuck/library/1.0.0/9b35ca88dde54d309b52db9dccfc0a9486546eaa/library-1.0.0.aar'.

What have i tried?
Invalidate cache and restart.
Update gradle version and tools version.

Add option: share-by-copy to clipboard

Are you open to PRs? if so, I am willing to work on this.

Issue: I often test on emulators, which have limited sharing options. Right now, to share info provided by Chuck, I have to share to an SMS app and then manually copy-paste the data, which is annoying.

Solution: add share option to allow sending data directly to device clipboard.

Add search/filtering

It would be a complete experience if Chuk allowed us to search/filter requests/responses

P.S. Great job so far, btw!

App crases when I tap on notification to view history of requests and responses

07-12 17:10:59.095 20271-20271/com.sublink.app E/AndroidRuntime: FATAL EXCEPTION: main
                                                                 Process: com.sublink.app, PID: 20271
                                                                 java.lang.NoSuchFieldError: No field search of type I in class Lcom/readystatesoftware/chuck/R$id; or its superclasses (declaration of 'com.readystatesoftware.chuck.R$id' appears in /data/app/com.sublink.app-2/base.apk:classes20.dex)
                                                                     at com.readystatesoftware.chuck.internal.ui.TransactionListFragment.onCreateOptionsMenu(TransactionListFragment.java:105)
                                                                     at android.support.v4.app.Fragment.performCreateOptionsMenu(Fragment.java:2291)
                                                                     at android.support.v4.app.FragmentManagerImpl.dispatchCreateOptionsMenu(FragmentManager.java:3011)
                                                                     at android.support.v4.app.FragmentController.dispatchCreateOptionsMenu(FragmentController.java:328)
                                                                     at android.support.v4.app.FragmentActivity.onCreatePanelMenu(FragmentActivity.java:363)
                                                                     at android.support.v7.view.WindowCallbackWrapper.onCreatePanelMenu(WindowCallbackWrapper.java:98)
                                                                     at android.support.v7.app.AppCompatDelegateImplBase$AppCompatWindowCallbackBase.onCreatePanelMenu(AppCompatDelegateImplBase.java:335)
                                                                     at android.support.v7.view.WindowCallbackWrapper.onCreatePanelMenu(WindowCallbackWrapper.java:98)
                                                                     at android.support.v7.app.ToolbarActionBar.populateOptionsMenu(ToolbarActionBar.java:454)
                                                                     at android.support.v7.app.ToolbarActionBar$1.run(ToolbarActionBar.java:61)
                                                                     at android.os.Handler.handleCallback(Handler.java:751)
                                                                     at android.os.Handler.dispatchMessage(Handler.java:95)
                                                                     at android.os.Looper.loop(Looper.java:154)
                                                                     at android.app.ActivityThread.main(ActivityThread.java:6119)
                                                                     at java.lang.reflect.Method.invoke(Native Method)
                                                                     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:886)
                                                                     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:776)

Thrown exception on api version < 21

  Caused by: java.lang.NoClassDefFoundError: nl.qbusict.cupboard.Cupboard
                                                     at com.readystatesoftware.chuck.internal.data.ChuckDbOpenHelper.onCreate(ChuckDbOpenHelper.java:33)
                                                     at android.database.sqlite.SQLiteOpenHelper.getDatabaseLocked(SQLiteOpenHelper.java:252)
                                                     at android.database.sqlite.SQLiteOpenHelper.getWritableDatabase(SQLiteOpenHelper.java:164)
                                                     at com.readystatesoftware.chuck.internal.data.ChuckContentProvider.insert(ChuckContentProvider.java:83)

Not getting notifications

The project compiles perfectly, and when I use my application, no notification of each request appears. What should I check? What configuration do I need to do?
I'm trying this on an emulator with api 24 (Android 7)

Compile time error

Error:Execution failed for task ':lazada-app:compileReleaseDebugJavaWithJavac'.

Compilation failed; see the compiler error output for details.
Error:(17, 36) error: package com.readystatesoftware.chuck does not exist

Using Chuck.getIntent fails

Trying to launch an intent using Chuck.getIntent fails with

ActivityNotFoundException: No Activity found to handle Intent { }

Filter certain sensitive keywords on release build

This is such an awesome library that I could not express how much I was excited to introduce this feature to our Quality Assurance Engineer. It brings us to a new level to distinguish issues from Client issue or Server issue. Currently, we only enable it in debug build. However, we are seriously thinking about enabling it in release build, which will bring certain security concerns as we are not allowed to save sensitive information like access token or password. I reckon we could add certain key words to filter before the data is to cached when we build the intercepter. I am not sure this is a proper feature request for such library but I would like to give it a try and integrate such feature into my forked library. If this feature is aligning with your thoughts, I would be happy to send a pull request once it is done. Let me know how you think of it.

Multi-Process Apps Result in TRANSACTION_URI Not Being Initialized

I tried integrating Chuck into my playground app for CWAC-NetSecurity. Using Chuck either as a regular or network interceptor resulted in:

java.lang.NullPointerException: url
   at com.android.internal.util.Preconditions.checkNotNull(Preconditions.java:60)
   at android.content.ContentResolver.insert(ContentResolver.java:1224)
   at com.readystatesoftware.chuck.ChuckInterceptor.create(ChuckInterceptor.java:172)
   at com.readystatesoftware.chuck.ChuckInterceptor.intercept(ChuckInterceptor.java:114)

This would result from TRANSACTION_URI being null, either because attachInfo() is not being called at all or Uri.parse() returning null.

My playground app uses two processes. My launcher activity brings up a set of preferences to configure the scenario to try. It then starts another activity, running in a separate process, to actually test the scenario.

By default, your ChuckContentProvider goes into the default process. When I try applying Chuck in the other process, ChuckContentProvider.TRANSACTION_URI will be null, because the provider is a natural system-wide singleton, and that singleton is in the other process. Hence, attachInfo() is never called in this process to initialize TRANSACTION_URI.

(this is one of the reasons why I don't recommend multiple processes for most apps...)

I could use manifest merger to shove ChuckContentProvider into the other process, which in theory should get past this crash. However, then I suspect that your activities will fail, as the default process will not have TRANSACTION_URI. I could further shove all of those into the other process using the same manifest merger approach, and perhaps get all this working. I'm not sure if that's what you want us to do.

Some possible alternatives:

  • Use a static initializer for TRANSACTION_URI based off of BuildConfig.APPLICATION_ID, and use a static initialization block for the UriMatcher. You'd keep the attachInfo() as is. So, in normal single-process cases, developers could rename the ChuckContentProvider authority and you're covered. The limitation then is that multi-process apps would be required to leave the default authority alone, so the statically-initialized values are valid.

  • Dump ChuckContentProvider entirely and do something else that does not require static values that might not exist in all processes.

Thoughts?

Thanks!

Android Studio 2.3: All com.android.support libraries must use the exact same version specification

New lint checks in Android 2.3 will sometimes return the following false-positive when using Chuck alongside support library dependencies:

All com.android.support libraries must use the exact same version specification (mixing versions can lead to runtime crashes). Found versions 25.2.0, 25.1.1. Examples include com.android.support:animated-vector-drawable:25.2.0 and com.android.support:animated-vector-drawable:25.1.1

Workaround is to explicitly include the design support library dependency in your project:

compile 'com.android.support:design:<version>'

See: https://code.google.com/p/android/issues/detail?id=231324

Refs #31

Using with Volley

Hello
I am using Volley in my project to handle webservices.Is it possible to use this library with Volley?
if answer is negative, can you recommend me another library that is adaptive with Volley?
thanks in advance.

Android Kitkat Error

Hi,
First of all, I thank you for this library.
I got some issue on Android 4.4.x version. Here is the exception:
FATAL EXCEPTION: main Process: com.ross.android, PID: 9282 java.lang.RuntimeException: Unable to get provider com.readystatesoftware.chuck.internal.data.ChuckContentProvider: java.lang.ClassNotFoundException: Didn't find class "com.readystatesoftware.chuck.internal.data.ChuckContentProvider" on path: DexPathList[[zip file "/data/app/com.ross.android-1.apk"],nativeLibraryDirectories=[/data/app-lib/com.ross.android-1, /vendor/lib, /system/lib]] at android.app.ActivityThread.installProvider(ActivityThread.java:5060) at android.app.ActivityThread.installContentProviders(ActivityThread.java:4631) at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4571) at android.app.ActivityThread.access$1500(ActivityThread.java:155) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1406) at android.os.Handler.dispatchMessage(Handler.java:110) at android.os.Looper.loop(Looper.java:193) at android.app.ActivityThread.main(ActivityThread.java:5341) at java.lang.reflect.Method.invokeNative(Native Method) at java.lang.reflect.Method.invoke(Method.java:515) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:830) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:646) at dalvik.system.NativeStart.main(Native Method) Caused by: java.lang.ClassNotFoundException: Didn't find class "com.readystatesoftware.chuck.internal.data.ChuckContentProvider" on path: DexPathList[[zip file "/data/app/com.ross.android-1.apk"],nativeLibraryDirectories=[/data/app-lib/com.ross.android-1, /vendor/lib, /system/lib]] at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56) at java.lang.ClassLoader.loadClass(ClassLoader.java:497) at java.lang.ClassLoader.loadClass(ClassLoader.java:457) at android.app.ActivityThread.installProvider(ActivityThread.java:5045) at android.app.ActivityThread.installContentProviders(ActivityThread.java:4631)  at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4571)  at android.app.ActivityThread.access$1500(ActivityThread.java:155)  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1406)  at android.os.Handler.dispatchMessage(Handler.java:110)  at android.os.Looper.loop(Looper.java:193)  at android.app.ActivityThread.main(ActivityThread.java:5341)  at java.lang.reflect.Method.invokeNative(Native Method)  at java.lang.reflect.Method.invoke(Method.java:515)  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:830)  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:646)  at dalvik.system.NativeStart.main(Native Method) 

Thanks any advice..

Why this project need Android4.1+

I forked this project, and change the miniSdkVersion to 14, still OK for sample....

Is there any reson that must miniSdkVersion 16?

Archive logs

My app just crashed due to bad response from server. But I couldn't capture what was wrong in the response because Chuck also disappeared from notification area. And I can't access logs from the previous session.

Would be nice to be able to access data captured in the previous session (before app crash)

Upgrade to Android Support library 25.2.0

I am facing some issue adding Chuck to my project because it use android support library 25.2.0 and the actual build uses Android Support Library 25.1.1. Because it doesn't affect Chcuk it would be a good idea to upgrade.
I took the liberty to go ahead. See #30.

App crash

I have integrated the chuck library as indicated in the documentation however the app is crashing as soon it is fired up. The logs aren't much help either as they don't show an explicit crash.

The only way to stop the crash is to remove the compile 'com.readystatesoftware.chuck from build.gradle. Commenting the code to add an interceptor doesn't help either. Only removing the library from the compile options works to successfully run the app.

Any suggestions on what I should be a on a lookout for, maybe popular libraries?

cannot find symbol import okhttp3.internal.Platform

Am getting following error below after adding following to build.gradle.

    debugCompile 'com.readystatesoftware.chuck:library:1.0.4'
    releaseCompile 'com.readystatesoftware.chuck:library-no-op:1.0.4'

LoggingInterceptor.java:35: error: cannot find symbol
import okhttp3.internal.Platform;
                       ^
  symbol:   class Platform
  location: package okhttp3.internal

[FeatureRequest] Search inside response

Sometimes we get very large responses and having to look through full response is quite cumbersome.

It would be nice to have search functionality in Response Tab as it is in Main Screen. (Possibly in all tabs). It could work like in most browsers or IDEs - highlighting match and jumping between results.

Multi-process not supported

Chuck works perfect with single-process. But when coming to multi-process, it crashes.

The cause is ChuckContentProvider.TRANSACTION_URI. In another process, Conprovider.attachInfo(Context, ProviderInfo) seems to be not called, thus ChuckContentProvider.TRANSACTION_URI gets null. If we make a request in another process, NullPointerException occurs while saving data into database.

Don't throw exception for canceled calls in release mode

When I build in release mode and I cancel an OKHTTP call I get an exception as shown below.

The chuck.readystatesoftware.com.ChuckInterceptor.intercept should be full NO-OP but it is catching canceled calls and reporting them as IOExceptions. I turn around and catch those but I should not have to as I am already processing the isCanceled method on the original call.

    at http.internal.okhttp3.RetryAndFollowUpInterceptor.intercept(RetryAndFollowUpInterceptor.java:114)
    at http.internal.okhttp3.RealInterceptorChain.proceed(RealInterceptorChain.java:92)
    at http.internal.okhttp3.RealInterceptorChain.proceed(RealInterceptorChain.java:67)
    at chuck.readystatesoftware.com.ChuckInterceptor.intercept(ChuckInterceptor.java:56)
    at http.internal.okhttp3.RealInterceptorChain.proceed(RealInterceptorChain.java:92)
    at http.internal.okhttp3.RealInterceptorChain.proceed(RealInterceptorChain.java:67)
    at logging.okhttp3.HttpLoggingInterceptor.intercept(HttpLoggingInterceptor.java:145)
    at http.internal.okhttp3.RealInterceptorChain.proceed(RealInterceptorChain.java:92)
    at http.internal.okhttp3.RealInterceptorChain.proceed(RealInterceptorChain.java:67)
    at okhttp3.RealCall.getResponseWithInterceptorChain(RealCall.java:185)
    at okhttp3.RealCall.execute(RealCall.java:69)
    at retrofit2.OkHttpCall.execute(OkHttpCall.java:180)
    at retrofit2.ExecutorCallAdapterFactory$ExecutorCallbackCall.execute(ExecutorCallAdapterFactory.java:91)
    at activity.bless.lularoe.com.OpenOrdersActivity$requestOrders$1.call(166)
    at activity.bless.lularoe.com.OpenOrdersActivity$requestOrders$1.call(37)
    at flowable.operators.internal.reactivex.io.FlowableFromCallable.subscribeActual(FlowableFromCallable.java:37)
    at reactivex.io.Flowable.subscribe(Flowable.java:12995)
    at reactivex.io.Flowable.subscribe(Flowable.java:12941)
    at flowable.operators.internal.reactivex.io.FlowableSubscribeOn$SubscribeOnSubscriber.run(FlowableSubscribeOn.java:82)
    at schedulers.internal.reactivex.io.ScheduledRunnable.run(ScheduledRunnable.java:61)
    at schedulers.internal.reactivex.io.ScheduledRunnable.call(ScheduledRunnable.java:52)
    at concurrent.util.java.FutureTask.run(FutureTask.java:237)
    at concurrent.util.java.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:272)
    at concurrent.util.java.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1133)
    at concurrent.util.java.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:607)
    at lang.java.Thread.run(Thread.java:762)

compileSdkVersion is 16

my project compileSdkVersion is 14.when use change library compileSdkVersion to 14,the smaple project running normally.
Can you tell me why use compileSdkVersion 16?have some unpredictable bugs?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.