mirror of
https://github.com/TwidereProject/Twidere-Android
synced 2025-02-15 11:10:38 +01:00
updated RestFu
improved filter
This commit is contained in:
parent
2d50404a79
commit
d742d2b697
twidere.component.common
build.gradle
src/main/java/org/mariotaku/twidere/api/twitter
twidere
build.gradle
src/main/java/org/mariotaku/twidere
@ -43,7 +43,7 @@ dependencies {
|
||||
compile 'com.android.support:support-v4:23.1.1'
|
||||
compile 'com.bluelinelabs:logansquare:1.3.4'
|
||||
compile 'org.apache.commons:commons-lang3:3.4'
|
||||
compile 'com.github.mariotaku.RestFu:library:0.9.11'
|
||||
compile 'com.github.mariotaku.RestFu:library:0.9.12'
|
||||
compile 'com.hannesdorfmann.parcelableplease:annotation:1.0.2'
|
||||
compile 'com.github.mariotaku.SQLiteQB:library:0.9.3'
|
||||
compile 'com.github.mariotaku.ObjectCursor:core:0.9.3'
|
||||
|
@ -34,7 +34,7 @@ import org.mariotaku.twidere.api.twitter.api.PrivateTweetResources;
|
||||
import org.mariotaku.twidere.api.twitter.api.SavedSearchesResources;
|
||||
import org.mariotaku.twidere.api.twitter.api.SearchResource;
|
||||
import org.mariotaku.twidere.api.twitter.api.SpamReportingResources;
|
||||
import org.mariotaku.twidere.api.twitter.api.TimelinesResources;
|
||||
import org.mariotaku.twidere.api.twitter.api.TimelineResources;
|
||||
import org.mariotaku.twidere.api.twitter.api.TrendsResources;
|
||||
import org.mariotaku.twidere.api.twitter.api.TweetResources;
|
||||
import org.mariotaku.twidere.api.twitter.api.UsersResources;
|
||||
@ -43,7 +43,7 @@ import org.mariotaku.twidere.api.twitter.api.UsersResources;
|
||||
* @author Yusuke Yamamoto - yusuke at mac.com
|
||||
* @since Twitter4J 2.2.0
|
||||
*/
|
||||
public interface Twitter extends SearchResource, TimelinesResources,
|
||||
public interface Twitter extends SearchResource, TimelineResources,
|
||||
TweetResources, UsersResources, ListsResources, DirectMessagesResources, FriendsFollowersResources,
|
||||
FavoritesResources, SpamReportingResources, SavedSearchesResources, TrendsResources, PlacesGeoResources,
|
||||
HelpResources, PrivateActivityResources, PrivateTweetResources, PrivateTimelinesResources,
|
||||
|
@ -37,7 +37,7 @@ import org.mariotaku.twidere.api.twitter.model.Status;
|
||||
@KeyValue(key = "cards_platform", valueKey = "cards_platform"),
|
||||
@KeyValue(key = "include_reply_count", valueKey = "include_reply_count"),
|
||||
@KeyValue(key = "include_descendent_reply_count", valueKey = "include_descendent_reply_count")})
|
||||
public interface TimelinesResources {
|
||||
public interface TimelineResources {
|
||||
|
||||
@GET("/statuses/home_timeline.json")
|
||||
ResponseList<Status> getHomeTimeline(@Query Paging paging) throws TwitterException;
|
@ -87,7 +87,7 @@ public class TwitterConverterFactory extends RestConverter.SimpleFactory<Twitter
|
||||
}
|
||||
|
||||
@Override
|
||||
public RestConverter<HttpResponse, ?, TwitterException> fromResponse(Type type) {
|
||||
public RestConverter<HttpResponse, ?, TwitterException> forResponse(Type type) {
|
||||
RestConverter<HttpResponse, ?, TwitterException> converter = sResponseConverters.get(type);
|
||||
if (converter != null) {
|
||||
return converter;
|
||||
@ -96,12 +96,12 @@ public class TwitterConverterFactory extends RestConverter.SimpleFactory<Twitter
|
||||
}
|
||||
|
||||
@Override
|
||||
public RestConverter<?, Body, TwitterException> toParam(Type type) {
|
||||
public RestConverter<?, Body, TwitterException> forRequest(Type type) {
|
||||
final RestConverter<?, Body, TwitterException> converter = sBodyConverters.get(type);
|
||||
if (converter != null) {
|
||||
return converter;
|
||||
}
|
||||
return super.toParam(type);
|
||||
return super.forRequest(type);
|
||||
}
|
||||
|
||||
public static class UnsupportedTypeException extends UnsupportedOperationException {
|
||||
|
@ -108,8 +108,8 @@ dependencies {
|
||||
compile 'com.soundcloud.android:android-crop:1.0.1@aar'
|
||||
compile 'com.hannesdorfmann.parcelableplease:annotation:1.0.2'
|
||||
compile 'com.github.mariotaku:PickNCrop:0.9.2'
|
||||
compile 'com.github.mariotaku.RestFu:library:0.9.11'
|
||||
compile 'com.github.mariotaku.RestFu:okhttp:0.9.11'
|
||||
compile 'com.github.mariotaku.RestFu:library:0.9.12'
|
||||
compile 'com.github.mariotaku.RestFu:okhttp:0.9.12'
|
||||
compile 'com.github.mariotaku:InetAddressJni:0.9.1'
|
||||
compile 'com.diogobernardino:williamchart:2.1'
|
||||
compile 'com.lnikkila:extendedtouchview:0.1.0'
|
||||
|
@ -30,10 +30,10 @@ import org.mariotaku.twidere.api.twitter.model.ResponseList;
|
||||
import org.mariotaku.twidere.api.twitter.model.Status;
|
||||
import org.mariotaku.twidere.model.ParcelableStatus;
|
||||
import org.mariotaku.twidere.util.DataStoreUtils;
|
||||
import org.mariotaku.twidere.util.Utils;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import static org.mariotaku.twidere.util.Utils.isFiltered;
|
||||
|
||||
public class MediaTimelineLoader extends TwitterAPIStatusesLoader {
|
||||
|
||||
@ -62,6 +62,8 @@ public class MediaTimelineLoader extends TwitterAPIStatusesLoader {
|
||||
|
||||
@Override
|
||||
protected boolean shouldFilterStatus(final SQLiteDatabase database, final ParcelableStatus status) {
|
||||
return !mIsMyTimeline && isFiltered(database, -1, status.text_plain, status.text_html, status.source, -1);
|
||||
final long retweetUserId = status.is_retweet ? status.user_id : -1;
|
||||
return !mIsMyTimeline && Utils.isFiltered(database, retweetUserId, status.text_plain,
|
||||
status.text_html, status.source, -1, status.quoted_user_id);
|
||||
}
|
||||
}
|
||||
|
@ -29,10 +29,10 @@ import org.mariotaku.twidere.api.twitter.model.Paging;
|
||||
import org.mariotaku.twidere.api.twitter.model.ResponseList;
|
||||
import org.mariotaku.twidere.api.twitter.model.Status;
|
||||
import org.mariotaku.twidere.model.ParcelableStatus;
|
||||
import org.mariotaku.twidere.util.Utils;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import static org.mariotaku.twidere.util.Utils.isFiltered;
|
||||
|
||||
public class RetweetsOfMeLoader extends TwitterAPIStatusesLoader {
|
||||
|
||||
@ -50,6 +50,7 @@ public class RetweetsOfMeLoader extends TwitterAPIStatusesLoader {
|
||||
|
||||
@Override
|
||||
protected boolean shouldFilterStatus(final SQLiteDatabase database, final ParcelableStatus status) {
|
||||
return isFiltered(database, -1, status.text_plain, status.text_html, status.source, -1);
|
||||
return Utils.isFiltered(database, -1, status.text_plain, status.text_html, status.source,
|
||||
status.retweeted_by_user_id, status.quoted_user_id);
|
||||
}
|
||||
}
|
||||
|
@ -29,11 +29,10 @@ import org.mariotaku.twidere.api.twitter.model.Paging;
|
||||
import org.mariotaku.twidere.api.twitter.model.SearchQuery;
|
||||
import org.mariotaku.twidere.api.twitter.model.Status;
|
||||
import org.mariotaku.twidere.model.ParcelableStatus;
|
||||
import org.mariotaku.twidere.util.Utils;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import static org.mariotaku.twidere.util.Utils.isFiltered;
|
||||
|
||||
public class TweetSearchLoader extends TwitterAPIStatusesLoader {
|
||||
|
||||
private final String mQuery;
|
||||
@ -67,7 +66,7 @@ public class TweetSearchLoader extends TwitterAPIStatusesLoader {
|
||||
|
||||
@Override
|
||||
protected boolean shouldFilterStatus(final SQLiteDatabase database, final ParcelableStatus status) {
|
||||
return isFiltered(database, status, true);
|
||||
return Utils.isFiltered(database, status, true);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -32,8 +32,7 @@ import org.mariotaku.twidere.api.twitter.model.ResponseList;
|
||||
import org.mariotaku.twidere.api.twitter.model.Status;
|
||||
import org.mariotaku.twidere.api.twitter.Twitter;
|
||||
import org.mariotaku.twidere.api.twitter.TwitterException;
|
||||
|
||||
import static org.mariotaku.twidere.util.Utils.isFiltered;
|
||||
import org.mariotaku.twidere.util.Utils;
|
||||
|
||||
public class UserListTimelineLoader extends TwitterAPIStatusesLoader {
|
||||
|
||||
@ -68,7 +67,7 @@ public class UserListTimelineLoader extends TwitterAPIStatusesLoader {
|
||||
|
||||
@Override
|
||||
protected boolean shouldFilterStatus(final SQLiteDatabase database, final ParcelableStatus status) {
|
||||
return isFiltered(database, status, true);
|
||||
return Utils.isFiltered(database, status, true);
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -23,19 +23,16 @@ import android.content.Context;
|
||||
import android.database.sqlite.SQLiteDatabase;
|
||||
import android.support.annotation.NonNull;
|
||||
|
||||
import org.mariotaku.twidere.model.ParcelableStatus;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import org.mariotaku.twidere.api.twitter.Twitter;
|
||||
import org.mariotaku.twidere.api.twitter.TwitterException;
|
||||
import org.mariotaku.twidere.api.twitter.model.Paging;
|
||||
import org.mariotaku.twidere.api.twitter.model.ResponseList;
|
||||
import org.mariotaku.twidere.api.twitter.model.Status;
|
||||
import org.mariotaku.twidere.api.twitter.Twitter;
|
||||
import org.mariotaku.twidere.api.twitter.TwitterException;
|
||||
import org.mariotaku.twidere.model.ParcelableStatus;
|
||||
import org.mariotaku.twidere.util.DataStoreUtils;
|
||||
import org.mariotaku.twidere.util.Utils;
|
||||
|
||||
import static org.mariotaku.twidere.util.Utils.isFiltered;
|
||||
import java.util.List;
|
||||
|
||||
public class UserTimelineLoader extends TwitterAPIStatusesLoader {
|
||||
|
||||
@ -66,6 +63,8 @@ public class UserTimelineLoader extends TwitterAPIStatusesLoader {
|
||||
|
||||
@Override
|
||||
protected boolean shouldFilterStatus(final SQLiteDatabase database, final ParcelableStatus status) {
|
||||
return !mIsMyTimeline && isFiltered(database, -1, status.text_plain, status.text_html, status.source, -1);
|
||||
final long retweetUserId = status.is_retweet ? status.user_id : -1;
|
||||
return !mIsMyTimeline && Utils.isFiltered(database, retweetUserId, status.text_plain,
|
||||
status.text_html, status.source, -1, status.quoted_user_id);
|
||||
}
|
||||
}
|
||||
|
@ -58,6 +58,7 @@ public abstract class GetStatusesTask extends ManagedAsyncTask<Object, TwitterWr
|
||||
this.twitterWrapper = twitterWrapper;
|
||||
}
|
||||
|
||||
@NonNull
|
||||
public abstract ResponseList<org.mariotaku.twidere.api.twitter.model.Status> getStatuses(Twitter twitter, Paging paging)
|
||||
throws TwitterException;
|
||||
|
||||
|
@ -2029,6 +2029,7 @@ public class AsyncTwitterWrapper extends TwitterWrapper {
|
||||
this.twitterWrapper = asyncTwitterWrapper;
|
||||
}
|
||||
|
||||
@NonNull
|
||||
@Override
|
||||
public ResponseList<org.mariotaku.twidere.api.twitter.model.Status> getStatuses(final Twitter twitter, final Paging paging)
|
||||
throws TwitterException {
|
||||
|
@ -1742,41 +1742,48 @@ public final class Utils implements Constants {
|
||||
}
|
||||
|
||||
public static boolean isFiltered(final SQLiteDatabase database, final long user_id, final String text_plain,
|
||||
final String text_html, final String source, final long retweeted_by_id) {
|
||||
return isFiltered(database, user_id, text_plain, text_html, source, retweeted_by_id, true);
|
||||
final String text_html, final String source, final long retweeted_by_id, final long quotedUserId) {
|
||||
return isFiltered(database, user_id, text_plain, text_html, source, retweeted_by_id, quotedUserId, true);
|
||||
}
|
||||
|
||||
public static boolean isFiltered(final SQLiteDatabase database, final long user_id, final String text_plain,
|
||||
final String text_html, final String source, final long retweeted_by_id, final boolean filter_rts) {
|
||||
public static boolean isFiltered(final SQLiteDatabase database, final long userId,
|
||||
final String textPlain, final String textHtml, final String source,
|
||||
final long retweetedById, final long quotedUserId, final boolean filterRts) {
|
||||
if (database == null) return false;
|
||||
if (text_plain == null && text_html == null && user_id <= 0 && source == null) return false;
|
||||
if (textPlain == null && textHtml == null && userId <= 0 && source == null) return false;
|
||||
final StringBuilder builder = new StringBuilder();
|
||||
final List<String> selection_args = new ArrayList<>();
|
||||
builder.append("SELECT NULL WHERE");
|
||||
if (text_plain != null) {
|
||||
selection_args.add(text_plain);
|
||||
if (textPlain != null) {
|
||||
selection_args.add(textPlain);
|
||||
builder.append("(SELECT 1 IN (SELECT ? LIKE '%'||" + Filters.Keywords.TABLE_NAME + "." + Filters.VALUE
|
||||
+ "||'%' FROM " + Filters.Keywords.TABLE_NAME + "))");
|
||||
}
|
||||
if (text_html != null) {
|
||||
if (textHtml != null) {
|
||||
if (!selection_args.isEmpty()) {
|
||||
builder.append(" OR ");
|
||||
}
|
||||
selection_args.add(text_html);
|
||||
selection_args.add(textHtml);
|
||||
builder.append("(SELECT 1 IN (SELECT ? LIKE '%<a href=\"%'||" + Filters.Links.TABLE_NAME + "."
|
||||
+ Filters.VALUE + "||'%\">%' FROM " + Filters.Links.TABLE_NAME + "))");
|
||||
}
|
||||
if (user_id > 0) {
|
||||
if (userId > 0) {
|
||||
if (!selection_args.isEmpty()) {
|
||||
builder.append(" OR ");
|
||||
}
|
||||
builder.append("(SELECT ").append(user_id).append(" IN (SELECT ").append(Users.USER_ID).append(" FROM ").append(Users.TABLE_NAME).append("))");
|
||||
builder.append("(SELECT ").append(userId).append(" IN (SELECT ").append(Users.USER_ID).append(" FROM ").append(Users.TABLE_NAME).append("))");
|
||||
}
|
||||
if (retweeted_by_id > 0) {
|
||||
if (retweetedById > 0) {
|
||||
if (!selection_args.isEmpty()) {
|
||||
builder.append(" OR ");
|
||||
}
|
||||
builder.append("(SELECT ").append(retweeted_by_id).append(" IN (SELECT ").append(Users.USER_ID).append(" FROM ").append(Users.TABLE_NAME).append("))");
|
||||
builder.append("(SELECT ").append(retweetedById).append(" IN (SELECT ").append(Users.USER_ID).append(" FROM ").append(Users.TABLE_NAME).append("))");
|
||||
}
|
||||
if (quotedUserId > 0) {
|
||||
if (!selection_args.isEmpty()) {
|
||||
builder.append(" OR ");
|
||||
}
|
||||
builder.append("(SELECT ").append(quotedUserId).append(" IN (SELECT ").append(Users.USER_ID).append(" FROM ").append(Users.TABLE_NAME).append("))");
|
||||
}
|
||||
if (source != null) {
|
||||
if (!selection_args.isEmpty()) {
|
||||
@ -1800,7 +1807,7 @@ public final class Utils implements Constants {
|
||||
final boolean filter_rts) {
|
||||
if (database == null || status == null) return false;
|
||||
return isFiltered(database, status.user_id, status.text_plain, status.text_html, status.source,
|
||||
status.retweeted_by_user_id, filter_rts);
|
||||
status.retweeted_by_user_id, status.quoted_user_id, filter_rts);
|
||||
}
|
||||
|
||||
public static boolean isMyAccount(final Context context, final long accountId) {
|
||||
|
@ -58,6 +58,7 @@ import java.util.Map.Entry;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
|
||||
import javax.inject.Singleton;
|
||||
import javax.net.SocketFactory;
|
||||
|
||||
@Singleton
|
||||
public class TwidereDns implements Constants, Dns {
|
||||
|
Loading…
x
Reference in New Issue
Block a user