mirror of
https://github.com/TwidereProject/Twidere-Android
synced 2025-02-02 17:56:56 +01:00
fixed some crashes
This commit is contained in:
parent
7d9c4bc0b0
commit
095f499b1c
@ -39,11 +39,11 @@ android {
|
||||
dependencies {
|
||||
apt 'com.bluelinelabs:logansquare-compiler:1.1.0'
|
||||
apt 'com.hannesdorfmann.parcelableplease:processor:1.0.1'
|
||||
compile 'com.android.support:support-annotations:22.1.1'
|
||||
compile 'com.android.support:support-v4:22.1.1'
|
||||
compile 'com.android.support:support-annotations:22.2.0'
|
||||
compile 'com.android.support:support-v4:22.2.0'
|
||||
compile 'com.bluelinelabs:logansquare:1.1.0'
|
||||
compile 'org.apache.commons:commons-lang3:3.4'
|
||||
compile 'com.github.mariotaku:RestFu:6ef0913'
|
||||
compile 'com.github.mariotaku:RestFu:c8bd230561'
|
||||
compile 'com.hannesdorfmann.parcelableplease:annotation:1.0.1'
|
||||
compile project(':twidere.component.querybuilder')
|
||||
compile fileTree(dir: 'libs', include: ['*.jar'])
|
||||
|
@ -740,8 +740,14 @@ public class SignInActivity extends BaseAppCompatActivity implements OnClickList
|
||||
}
|
||||
|
||||
private SignInResponse authxAuth() throws TwitterException {
|
||||
final String versionSuffix = noVersionSuffix ? null : "1.1";
|
||||
final Endpoint endpoint = new Endpoint(TwitterAPIFactory.getApiUrl(apiUrlFormat, "api", versionSuffix));
|
||||
String endpointUrl, signEndpointUrl;
|
||||
endpointUrl = TwitterAPIFactory.getApiUrl(apiUrlFormat, "api", null);
|
||||
if (!sameOAuthSigningUrl) {
|
||||
signEndpointUrl = TwitterAPIFactory.getApiUrl(DEFAULT_TWITTER_API_URL_FORMAT, "api", null);
|
||||
} else {
|
||||
signEndpointUrl = endpointUrl;
|
||||
}
|
||||
Endpoint endpoint = new OAuthEndpoint(endpointUrl, signEndpointUrl);
|
||||
OAuthAuthorization auth = new OAuthAuthorization(consumerKey.getOauthToken(), consumerKey.getOauthTokenSecret());
|
||||
final TwitterOAuth oauth = TwitterAPIFactory.getInstance(context, endpoint, auth, TwitterOAuth.class);
|
||||
final OAuthToken accessToken = oauth.getAccessToken(username, password, TwitterOAuth.XAuthMode.CLIENT);
|
||||
|
@ -36,6 +36,7 @@ import android.os.Handler;
|
||||
import android.os.Parcelable;
|
||||
import android.support.v4.app.NotificationCompat;
|
||||
import android.support.v4.app.NotificationCompat.Builder;
|
||||
import android.text.TextUtils;
|
||||
import android.util.Log;
|
||||
import android.widget.Toast;
|
||||
|
||||
@ -50,6 +51,13 @@ import org.mariotaku.twidere.Constants;
|
||||
import org.mariotaku.twidere.R;
|
||||
import org.mariotaku.twidere.activity.MainActivity;
|
||||
import org.mariotaku.twidere.activity.MainHondaJOJOActivity;
|
||||
import org.mariotaku.twidere.api.twitter.Twitter;
|
||||
import org.mariotaku.twidere.api.twitter.TwitterException;
|
||||
import org.mariotaku.twidere.api.twitter.TwitterUpload;
|
||||
import org.mariotaku.twidere.api.twitter.model.MediaUploadResponse;
|
||||
import org.mariotaku.twidere.api.twitter.model.Status;
|
||||
import org.mariotaku.twidere.api.twitter.model.StatusUpdate;
|
||||
import org.mariotaku.twidere.api.twitter.model.UserMentionEntity;
|
||||
import org.mariotaku.twidere.app.TwidereApplication;
|
||||
import org.mariotaku.twidere.model.MediaUploadResult;
|
||||
import org.mariotaku.twidere.model.ParcelableAccount;
|
||||
@ -90,13 +98,6 @@ import java.util.List;
|
||||
|
||||
import edu.tsinghua.spice.Utilies.SpiceProfilingUtil;
|
||||
import edu.tsinghua.spice.Utilies.TypeMappingUtil;
|
||||
import org.mariotaku.twidere.api.twitter.model.MediaUploadResponse;
|
||||
import org.mariotaku.twidere.api.twitter.model.Status;
|
||||
import org.mariotaku.twidere.api.twitter.model.StatusUpdate;
|
||||
import org.mariotaku.twidere.api.twitter.Twitter;
|
||||
import org.mariotaku.twidere.api.twitter.TwitterException;
|
||||
import org.mariotaku.twidere.api.twitter.model.UserMentionEntity;
|
||||
import org.mariotaku.twidere.api.twitter.TwitterUpload;
|
||||
|
||||
import static android.text.TextUtils.isEmpty;
|
||||
import static org.mariotaku.twidere.util.ContentValuesCreator.createMessageDraft;
|
||||
@ -543,8 +544,13 @@ public class BackgroundOperationService extends IntentService implements Constan
|
||||
is = new ContentLengthInputStream(file);
|
||||
is.setReadListener(new StatusMediaUploadListener(this, mNotificationManager, builder,
|
||||
statusUpdate));
|
||||
final MediaUploadResponse uploadResp = upload.uploadMedia(
|
||||
new FileTypedData(is, file.getName(), file.length(), ContentType.parse(o.outMimeType)));
|
||||
final ContentType contentType;
|
||||
if (TextUtils.isEmpty(o.outMimeType)) {
|
||||
contentType = ContentType.parse("image/*");
|
||||
} else {
|
||||
contentType = ContentType.parse(o.outMimeType);
|
||||
}
|
||||
final MediaUploadResponse uploadResp = upload.uploadMedia(new FileTypedData(is, file.getName(), file.length(), contentType));
|
||||
mediaIds[i] = uploadResp.getId();
|
||||
}
|
||||
} catch (final FileNotFoundException e) {
|
||||
|
@ -367,7 +367,12 @@ public class TwitterAPIFactory implements TwidereConstants {
|
||||
public static class TwidereExceptionFactory implements ExceptionFactory {
|
||||
@Override
|
||||
public Exception newException(Throwable cause, RestHttpRequest request, RestHttpResponse response) {
|
||||
final TwitterException te = new TwitterException(cause);
|
||||
final TwitterException te;
|
||||
if (cause != null) {
|
||||
te = new TwitterException(cause);
|
||||
} else {
|
||||
te = new TwitterException();
|
||||
}
|
||||
te.setResponse(response);
|
||||
return te;
|
||||
}
|
||||
|
@ -19,11 +19,13 @@
|
||||
|
||||
package org.mariotaku.twidere.util.net;
|
||||
|
||||
import android.os.Looper;
|
||||
import android.support.annotation.NonNull;
|
||||
import android.support.annotation.Nullable;
|
||||
import android.util.Pair;
|
||||
|
||||
import com.squareup.okhttp.Call;
|
||||
import com.squareup.okhttp.Callback;
|
||||
import com.squareup.okhttp.Headers;
|
||||
import com.squareup.okhttp.MediaType;
|
||||
import com.squareup.okhttp.OkHttpClient;
|
||||
@ -34,9 +36,11 @@ import com.squareup.okhttp.ResponseBody;
|
||||
|
||||
import org.mariotaku.restfu.Utils;
|
||||
import org.mariotaku.restfu.http.ContentType;
|
||||
import org.mariotaku.restfu.http.RestHttpCallback;
|
||||
import org.mariotaku.restfu.http.RestHttpClient;
|
||||
import org.mariotaku.restfu.http.RestHttpRequest;
|
||||
import org.mariotaku.restfu.http.RestHttpResponse;
|
||||
import org.mariotaku.restfu.http.RestQueuedRequest;
|
||||
import org.mariotaku.restfu.http.mime.TypedData;
|
||||
import org.mariotaku.twidere.util.DebugModeUtils;
|
||||
|
||||
@ -67,6 +71,11 @@ public class OkHttpRestClient implements RestHttpClient {
|
||||
@NonNull
|
||||
@Override
|
||||
public RestHttpResponse execute(RestHttpRequest restHttpRequest) throws IOException {
|
||||
final Call call = newCall(restHttpRequest);
|
||||
return new OkRestHttpResponse(call.execute());
|
||||
}
|
||||
|
||||
private Call newCall(final RestHttpRequest restHttpRequest) {
|
||||
final Request.Builder builder = new Request.Builder();
|
||||
builder.method(restHttpRequest.getMethod(), RestToOkBody.wrap(restHttpRequest.getBody()));
|
||||
builder.url(restHttpRequest.getUrl());
|
||||
@ -76,8 +85,32 @@ public class OkHttpRestClient implements RestHttpClient {
|
||||
builder.addHeader(header.first, header.second);
|
||||
}
|
||||
}
|
||||
final Call call = client.newCall(builder.build());
|
||||
return new OkRestHttpResponse(call.execute());
|
||||
return client.newCall(builder.build());
|
||||
}
|
||||
|
||||
@Override
|
||||
public RestQueuedRequest enqueue(final RestHttpRequest request, final RestHttpCallback callback) {
|
||||
final Call call = newCall(request);
|
||||
call.enqueue(new Callback() {
|
||||
@Override
|
||||
public void onFailure(final Request request, final IOException e) {
|
||||
if (call.isCanceled()) {
|
||||
callback.cancelled();
|
||||
return;
|
||||
}
|
||||
callback.exception(e);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onResponse(final Response response) throws IOException {
|
||||
if (call.isCanceled()) {
|
||||
callback.cancelled();
|
||||
return;
|
||||
}
|
||||
callback.callback(new OkRestHttpResponse(response));
|
||||
}
|
||||
});
|
||||
return new OkHttpQueuedRequest(client, call);
|
||||
}
|
||||
|
||||
private static class RestToOkBody extends RequestBody {
|
||||
@ -196,4 +229,35 @@ public class OkHttpRestClient implements RestHttpClient {
|
||||
body.close();
|
||||
}
|
||||
}
|
||||
|
||||
private static class OkHttpQueuedRequest implements RestQueuedRequest {
|
||||
private final OkHttpClient client;
|
||||
private final Call call;
|
||||
private boolean cancelled;
|
||||
|
||||
public OkHttpQueuedRequest(final OkHttpClient client, final Call call) {
|
||||
this.client = client;
|
||||
this.call = call;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isCancelled() {
|
||||
return cancelled || call.isCanceled();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void cancel() {
|
||||
cancelled = true;
|
||||
if (Looper.myLooper() != Looper.getMainLooper()) {
|
||||
call.cancel();
|
||||
} else {
|
||||
client.getDispatcher().getExecutorService().execute(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
call.cancel();
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user