Use JSON SPARQL query for fetching nearby places (#2398)

* Use JSON response for nearby places

* Move okhttp calls to a different class

* wip

* Fetch picture of the day using JSON API

* Search images using JSON APIs

* tests

* Fix injection based on code review comments
This commit is contained in:
Vivek Maskara 2019-02-06 10:40:30 +05:30 committed by Ashish Kumar
parent 323527b3be
commit f12837650a
44 changed files with 1472 additions and 418 deletions

View file

@ -2,50 +2,37 @@ package fr.free.nrw.commons.delete;
import android.accounts.Account;
import android.content.Context;
import android.util.Log;
import com.google.gson.JsonObject;
import org.json.JSONException;
import org.json.JSONObject;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Locale;
import javax.inject.Inject;
import javax.inject.Singleton;
import fr.free.nrw.commons.Media;
import fr.free.nrw.commons.R;
import fr.free.nrw.commons.achievements.FeedbackResponse;
import fr.free.nrw.commons.auth.SessionManager;
import fr.free.nrw.commons.mwapi.MediaWikiApi;
import fr.free.nrw.commons.mwapi.OkHttpJsonApiClient;
import fr.free.nrw.commons.utils.ViewUtil;
import io.reactivex.android.schedulers.AndroidSchedulers;
import io.reactivex.disposables.CompositeDisposable;
import io.reactivex.schedulers.Schedulers;
import io.reactivex.Single;
import timber.log.Timber;
@Singleton
public class ReasonBuilder {
private SessionManager sessionManager;
private MediaWikiApi mediaWikiApi;
private CompositeDisposable compositeDisposable = new CompositeDisposable();
private String reason;
private OkHttpJsonApiClient okHttpJsonApiClient;
private Context context;
private Media media;
public ReasonBuilder(String reason,
Context context,
Media media,
@Inject
public ReasonBuilder(Context context,
SessionManager sessionManager,
MediaWikiApi mediaWikiApi){
this.reason = reason;
OkHttpJsonApiClient okHttpJsonApiClient) {
this.context = context;
this.media = media;
this.sessionManager = sessionManager;
this.mediaWikiApi = mediaWikiApi;
this.okHttpJsonApiClient = okHttpJsonApiClient;
}
private String prettyUploadedDate(Media media) {
@ -57,31 +44,27 @@ public class ReasonBuilder {
return formatter.format(date);
}
private void fetchArticleNumber() {
private Single<String> fetchArticleNumber(Media media, String reason) {
if (checkAccount()) {
compositeDisposable.add(mediaWikiApi
return okHttpJsonApiClient
.getAchievements(sessionManager.getCurrentAccount().name)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(
this::appendArticlesUsed,
t -> Timber.e(t, "Fetching achievements statistics failed")
));
.map(feedbackResponse -> appendArticlesUsed(feedbackResponse, media, reason));
}
return Single.just("");
}
private void appendArticlesUsed(FeedbackResponse object){
reason += context.getString(R.string.uploaded_by_myself).toString() + prettyUploadedDate(media);
reason += context.getString(R.string.used_by).toString()
private String appendArticlesUsed(FeedbackResponse object, Media media, String reason) {
reason += context.getString(R.string.uploaded_by_myself) + prettyUploadedDate(media);
reason += context.getString(R.string.used_by)
+ object.getArticlesUsingImages()
+ context.getString(R.string.articles).toString();
Log.i("New Reason", reason);
+ context.getString(R.string.articles);
Timber.i("New Reason %s", reason);
return reason;
}
public String getReason(){
fetchArticleNumber();
return reason;
public Single<String> getReason(Media media, String reason) {
return fetchArticleNumber(media, reason);
}
/**