Fetch JsonObject from the api using JavaRx and OkHttp

This commit is contained in:
tanvidadu 2018-05-23 01:49:54 +05:30
parent aa26cbe814
commit 157e744ba3
4 changed files with 69 additions and 0 deletions

View file

@ -0,0 +1,5 @@
package fr.free.nrw.commons.achievements;
public class Achievements {
}

View file

@ -16,9 +16,12 @@ import android.view.View;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.RelativeLayout;
import android.widget.TextView;
import android.widget.Toast;
import android.widget.Toolbar;
import org.json.JSONObject;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
@ -31,7 +34,12 @@ import butterknife.ButterKnife;
import dagger.Binds;
import fr.free.nrw.commons.R;
import fr.free.nrw.commons.auth.SessionManager;
import fr.free.nrw.commons.mwapi.MediaWikiApi;
import fr.free.nrw.commons.theme.NavigationBaseActivity;
import io.reactivex.android.schedulers.AndroidSchedulers;
import io.reactivex.disposables.CompositeDisposable;
import io.reactivex.schedulers.Schedulers;
import timber.log.Timber;
/**
* activity for sharing feedback on uploaded activity
@ -42,9 +50,13 @@ public class AchievementsActivity extends NavigationBaseActivity {
private static final double BADGE_IMAGE_HEIGHT_RATIO = 0.3;
@BindView(R.id.achievement_badge) ImageView imageView;
@BindView(R.id.achievement_level)
TextView textView;
@BindView(R.id.toolbar) android.support.v7.widget.Toolbar toolbar;
@Inject SessionManager sessionManager;
@Inject MediaWikiApi mediaWikiApi;
private CompositeDisposable compositeDisposable = new CompositeDisposable();
/**
* This method helps in the creation Achievement screen and
* dynamically set the size of imageView
@ -76,6 +88,7 @@ public class AchievementsActivity extends NavigationBaseActivity {
imageView.requestLayout();
setSupportActionBar(toolbar);
setUploadCount();
initDrawer();
}
@ -133,4 +146,18 @@ public class AchievementsActivity extends NavigationBaseActivity {
}
}
private void setUploadCount() {
compositeDisposable.add(mediaWikiApi
.getAchievements(sessionManager.getCurrentAccount().name)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(
jsonObject -> parseJson(jsonObject)
));
}
private void parseJson(JSONObject object){
Log.i("json",object.toString());
}
}

View file

@ -23,6 +23,7 @@ import org.apache.http.impl.conn.tsccm.ThreadSafeClientConnManager;
import org.apache.http.params.BasicHttpParams;
import org.apache.http.params.CoreProtocolPNames;
import org.apache.http.util.EntityUtils;
import org.json.JSONObject;
import org.mediawiki.api.ApiResult;
import org.mediawiki.api.MWApi;
import org.w3c.dom.NodeList;
@ -42,6 +43,7 @@ import java.util.concurrent.Callable;
import fr.free.nrw.commons.BuildConfig;
import fr.free.nrw.commons.Media;
import fr.free.nrw.commons.PageTitle;
import fr.free.nrw.commons.achievements.Achievements;
import fr.free.nrw.commons.category.CategoryImageUtils;
import fr.free.nrw.commons.category.QueryContinue;
import fr.free.nrw.commons.notification.Notification;
@ -49,6 +51,10 @@ import fr.free.nrw.commons.notification.NotificationUtils;
import in.yuvi.http.fluent.Http;
import io.reactivex.Observable;
import io.reactivex.Single;
import okhttp3.HttpUrl;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.Response;
import timber.log.Timber;
import static fr.free.nrw.commons.utils.ContinueUtils.getQueryContinue;
@ -615,6 +621,31 @@ public class ApacheHttpClientMediaWikiApi implements MediaWikiApi {
});
}
@NonNull
@Override
public Single<JSONObject> getAchievements(String userName) {
final String fetchAchievementUrlTemplate =
wikiMediaToolforgeUrl + "urbanecmbot/commonsmisc/feedback.py";
return Single.fromCallable(()->{
String url = String.format(
Locale.ENGLISH,
fetchAchievementUrlTemplate,
new PageTitle(userName).getText());
HttpUrl.Builder urlBuilder = HttpUrl.parse(url).newBuilder();
urlBuilder.addQueryParameter("user",userName);
Log.i("url",urlBuilder.toString());
Request request = new Request.Builder()
.url(urlBuilder.toString())
.build();
OkHttpClient client = new OkHttpClient();
Response response = client.newCall(request).execute();
String jsonData = response.body().string();
JSONObject jsonObject = new JSONObject(jsonData);
return jsonObject;
});
}
private Date parseMWDate(String mwDate) {
SimpleDateFormat isoFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'", Locale.ENGLISH); // Assuming MW always gives me UTC
try {

View file

@ -3,11 +3,14 @@ package fr.free.nrw.commons.mwapi;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import org.json.JSONObject;
import java.io.IOException;
import java.io.InputStream;
import java.util.List;
import fr.free.nrw.commons.Media;
import fr.free.nrw.commons.achievements.Achievements;
import fr.free.nrw.commons.notification.Notification;
import io.reactivex.Observable;
import io.reactivex.Single;
@ -75,6 +78,9 @@ public interface MediaWikiApi {
@NonNull
Single<Integer> getUploadCount(String userName);
@NonNull
Single<JSONObject> getAchievements (String userName);
interface ProgressListener {
void onProgress(long transferred, long total);
}