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

@ -8,20 +8,21 @@ import javax.inject.Singleton;
import fr.free.nrw.commons.Media;
import fr.free.nrw.commons.bookmarks.Bookmark;
import fr.free.nrw.commons.mwapi.MediaWikiApi;
import fr.free.nrw.commons.mwapi.OkHttpJsonApiClient;
@Singleton
public class BookmarkPicturesController {
private MediaWikiApi mediaWikiApi;
@Inject
BookmarkPicturesDao bookmarkDao;
private final OkHttpJsonApiClient okHttpJsonApiClient;
private final BookmarkPicturesDao bookmarkDao;
private List<Bookmark> currentBookmarks;
@Inject public BookmarkPicturesController(MediaWikiApi mediaWikiApi) {
this.mediaWikiApi = mediaWikiApi;
@Inject
public BookmarkPicturesController(OkHttpJsonApiClient okHttpJsonApiClient,
BookmarkPicturesDao bookmarkDao) {
this.okHttpJsonApiClient = okHttpJsonApiClient;
this.bookmarkDao = bookmarkDao;
currentBookmarks = new ArrayList<>();
}
@ -34,7 +35,9 @@ public class BookmarkPicturesController {
currentBookmarks = bookmarks;
ArrayList<Media> medias = new ArrayList<>();
for (Bookmark bookmark : bookmarks) {
List<Media> tmpMedias = mediaWikiApi.searchImages(bookmark.getMediaName(), 0);
List<Media> tmpMedias = okHttpJsonApiClient
.searchImages(bookmark.getMediaName(), 0)
.blockingGet();
for (Media m : tmpMedias) {
if (m.getCreator().trim().equals(bookmark.getMediaCreator().trim())) {
medias.add(m);

View file

@ -13,11 +13,13 @@ import java.util.List;
import javax.inject.Inject;
import javax.inject.Named;
import javax.inject.Provider;
import javax.inject.Singleton;
import fr.free.nrw.commons.bookmarks.Bookmark;
import static fr.free.nrw.commons.bookmarks.pictures.BookmarkPicturesContentProvider.BASE_URI;
@Singleton
public class BookmarkPicturesDao {
private final Provider<ContentProviderClient> clientProvider;