Skip to content

Commit 157e744

Browse files
committed
Fetch JsonObject from the api using JavaRx and OkHttp
1 parent aa26cbe commit 157e744

File tree

4 files changed

+69
-0
lines changed

4 files changed

+69
-0
lines changed
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
package fr.free.nrw.commons.achievements;
2+
3+
public class Achievements {
4+
5+
}

app/src/main/java/fr/free/nrw/commons/achievements/AchievementsActivity.java

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,9 +16,12 @@
1616
import android.widget.ImageView;
1717
import android.widget.LinearLayout;
1818
import android.widget.RelativeLayout;
19+
import android.widget.TextView;
1920
import android.widget.Toast;
2021
import android.widget.Toolbar;
2122

23+
import org.json.JSONObject;
24+
2225
import java.io.File;
2326
import java.io.FileOutputStream;
2427
import java.io.IOException;
@@ -31,7 +34,12 @@
3134
import dagger.Binds;
3235
import fr.free.nrw.commons.R;
3336
import fr.free.nrw.commons.auth.SessionManager;
37+
import fr.free.nrw.commons.mwapi.MediaWikiApi;
3438
import fr.free.nrw.commons.theme.NavigationBaseActivity;
39+
import io.reactivex.android.schedulers.AndroidSchedulers;
40+
import io.reactivex.disposables.CompositeDisposable;
41+
import io.reactivex.schedulers.Schedulers;
42+
import timber.log.Timber;
3543

3644
/**
3745
* activity for sharing feedback on uploaded activity
@@ -42,9 +50,13 @@ public class AchievementsActivity extends NavigationBaseActivity {
4250
private static final double BADGE_IMAGE_HEIGHT_RATIO = 0.3;
4351

4452
@BindView(R.id.achievement_badge) ImageView imageView;
53+
@BindView(R.id.achievement_level)
54+
TextView textView;
4555
@BindView(R.id.toolbar) android.support.v7.widget.Toolbar toolbar;
4656
@Inject SessionManager sessionManager;
57+
@Inject MediaWikiApi mediaWikiApi;
4758

59+
private CompositeDisposable compositeDisposable = new CompositeDisposable();
4860
/**
4961
* This method helps in the creation Achievement screen and
5062
* dynamically set the size of imageView
@@ -76,6 +88,7 @@ protected void onCreate(Bundle savedInstanceState) {
7688
imageView.requestLayout();
7789

7890
setSupportActionBar(toolbar);
91+
setUploadCount();
7992
initDrawer();
8093
}
8194

@@ -133,4 +146,18 @@ void shareScreen ( Bitmap bitmap){
133146
}
134147
}
135148

149+
private void setUploadCount() {
150+
compositeDisposable.add(mediaWikiApi
151+
.getAchievements(sessionManager.getCurrentAccount().name)
152+
.subscribeOn(Schedulers.io())
153+
.observeOn(AndroidSchedulers.mainThread())
154+
.subscribe(
155+
jsonObject -> parseJson(jsonObject)
156+
));
157+
}
158+
159+
private void parseJson(JSONObject object){
160+
Log.i("json",object.toString());
161+
}
162+
136163
}

app/src/main/java/fr/free/nrw/commons/mwapi/ApacheHttpClientMediaWikiApi.java

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
import org.apache.http.params.BasicHttpParams;
2424
import org.apache.http.params.CoreProtocolPNames;
2525
import org.apache.http.util.EntityUtils;
26+
import org.json.JSONObject;
2627
import org.mediawiki.api.ApiResult;
2728
import org.mediawiki.api.MWApi;
2829
import org.w3c.dom.NodeList;
@@ -42,13 +43,18 @@
4243
import fr.free.nrw.commons.BuildConfig;
4344
import fr.free.nrw.commons.Media;
4445
import fr.free.nrw.commons.PageTitle;
46+
import fr.free.nrw.commons.achievements.Achievements;
4547
import fr.free.nrw.commons.category.CategoryImageUtils;
4648
import fr.free.nrw.commons.category.QueryContinue;
4749
import fr.free.nrw.commons.notification.Notification;
4850
import fr.free.nrw.commons.notification.NotificationUtils;
4951
import in.yuvi.http.fluent.Http;
5052
import io.reactivex.Observable;
5153
import io.reactivex.Single;
54+
import okhttp3.HttpUrl;
55+
import okhttp3.OkHttpClient;
56+
import okhttp3.Request;
57+
import okhttp3.Response;
5258
import timber.log.Timber;
5359

5460
import static fr.free.nrw.commons.utils.ContinueUtils.getQueryContinue;
@@ -615,6 +621,31 @@ public Single<Integer> getUploadCount(String userName) {
615621
});
616622
}
617623

624+
@NonNull
625+
@Override
626+
public Single<JSONObject> getAchievements(String userName) {
627+
final String fetchAchievementUrlTemplate =
628+
wikiMediaToolforgeUrl + "urbanecmbot/commonsmisc/feedback.py";
629+
return Single.fromCallable(()->{
630+
String url = String.format(
631+
Locale.ENGLISH,
632+
fetchAchievementUrlTemplate,
633+
new PageTitle(userName).getText());
634+
HttpUrl.Builder urlBuilder = HttpUrl.parse(url).newBuilder();
635+
urlBuilder.addQueryParameter("user",userName);
636+
Log.i("url",urlBuilder.toString());
637+
Request request = new Request.Builder()
638+
.url(urlBuilder.toString())
639+
.build();
640+
OkHttpClient client = new OkHttpClient();
641+
Response response = client.newCall(request).execute();
642+
String jsonData = response.body().string();
643+
JSONObject jsonObject = new JSONObject(jsonData);
644+
return jsonObject;
645+
});
646+
647+
}
648+
618649
private Date parseMWDate(String mwDate) {
619650
SimpleDateFormat isoFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'", Locale.ENGLISH); // Assuming MW always gives me UTC
620651
try {

app/src/main/java/fr/free/nrw/commons/mwapi/MediaWikiApi.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,14 @@
33
import android.support.annotation.NonNull;
44
import android.support.annotation.Nullable;
55

6+
import org.json.JSONObject;
7+
68
import java.io.IOException;
79
import java.io.InputStream;
810
import java.util.List;
911

1012
import fr.free.nrw.commons.Media;
13+
import fr.free.nrw.commons.achievements.Achievements;
1114
import fr.free.nrw.commons.notification.Notification;
1215
import io.reactivex.Observable;
1316
import io.reactivex.Single;
@@ -75,6 +78,9 @@ public interface MediaWikiApi {
7578
@NonNull
7679
Single<Integer> getUploadCount(String userName);
7780

81+
@NonNull
82+
Single<JSONObject> getAchievements (String userName);
83+
7884
interface ProgressListener {
7985
void onProgress(long transferred, long total);
8086
}

0 commit comments

Comments
 (0)