diff --git a/wikibinding/build.gradle b/wikibinding/build.gradle index 424350d..472b57a 100644 --- a/wikibinding/build.gradle +++ b/wikibinding/build.gradle @@ -37,4 +37,7 @@ dependencies { exclude group: 'com.google.android', module: 'android' } compile project(':urbanexplorerutils') + compile 'com.squareup.retrofit2:retrofit:2.1.0' + compile 'com.squareup.retrofit2:converter-gson:2.1.0' + compile 'com.squareup.okhttp3:logging-interceptor:3.2.0' } diff --git a/wikibinding/src/main/java/pl/tpolgrabia/wikibinding/WikiService.java b/wikibinding/src/main/java/pl/tpolgrabia/wikibinding/WikiService.java new file mode 100644 index 0000000..bebfaa4 --- /dev/null +++ b/wikibinding/src/main/java/pl/tpolgrabia/wikibinding/WikiService.java @@ -0,0 +1,40 @@ +package pl.tpolgrabia.wikibinding; + +import pl.tpolgrabia.wikibinding.dto.geosearch.WikiGeoResponse; +import retrofit2.Call; +import retrofit2.http.GET; +import retrofit2.http.Query; + +/** + * Created by tpolgrabia on 27.10.16. + */ +public interface WikiService { + @GET("api.php?action=query&list=geosearch&format=json") + Call fetchGeoSearch( + @Query("gscoord") String gscoord, + @Query("gsradius") Double radius, + @Query("gslimit") Long limit); + + @GET("api.php" + + "?action=query" + + "&prop=coordinates%7Cpageimages%7Cpageterms" + + "&colimit=50" + + "&piprop=thumbnail" + + "&pithumbsize=144" + + "&pilimit=50" + + "&wbptterms=description" + + "&format=json") + Call fetchPageInfos( + @Query("pageids") String pageIds); + +// aq.ajax("https://" + countryCode + ".wikipedia.org/w/api.php" + +// "?action=query" + +// "&prop=coordinates%7Cpageimages%7Cpageterms" + +// "&colimit=50" + +// "&piprop=thumbnail" + +// "&pithumbsize=144" + +// "&pilimit=50" + +// "&wbptterms=description" + +// "&pageids=" + StringUtils.join(pageIds, "|") + +// "&format=json", JSONObject.class, new AjaxCallback() { +} diff --git a/wikibinding/src/main/java/pl/tpolgrabia/wikibinding/utils/WikiUtils.java b/wikibinding/src/main/java/pl/tpolgrabia/wikibinding/utils/WikiUtils.java index acd1522..c3f90c5 100644 --- a/wikibinding/src/main/java/pl/tpolgrabia/wikibinding/utils/WikiUtils.java +++ b/wikibinding/src/main/java/pl/tpolgrabia/wikibinding/utils/WikiUtils.java @@ -6,6 +6,7 @@ import android.widget.Toast; import com.androidquery.AQuery; import com.androidquery.callback.AjaxCallback; import com.androidquery.callback.AjaxStatus; +import okhttp3.OkHttpClient; import org.apache.commons.lang3.StringUtils; import org.greenrobot.eventbus.EventBus; import org.json.JSONArray; @@ -17,6 +18,7 @@ import pl.tpolgrabia.urbanexplorerutils.events.DataLoadingFinishEvent; import pl.tpolgrabia.urbanexplorerutils.utils.LocationUtils; import pl.tpolgrabia.urbanexplorerutils.utils.NetUtils; import pl.tpolgrabia.urbanexplorerutils.utils.SettingsUtils; +import pl.tpolgrabia.wikibinding.WikiService; import pl.tpolgrabia.wikibinding.callback.WikiAppResponseCallback; import pl.tpolgrabia.wikibinding.callback.WikiResponseCallback; import pl.tpolgrabia.wikibinding.callback.WikiStatus; @@ -28,7 +30,11 @@ import pl.tpolgrabia.wikibinding.dto.generator.WikiThumbnail; import pl.tpolgrabia.wikibinding.dto.geosearch.WikiGeoObject; import pl.tpolgrabia.wikibinding.dto.geosearch.WikiGeoResponse; import pl.tpolgrabia.wikibinding.dto.geosearch.WikiGeoResponseCallback; +import retrofit2.Response; +import retrofit2.Retrofit; +import retrofit2.converter.gson.GsonConverterFactory; +import java.io.IOException; import java.util.*; /** @@ -121,6 +127,26 @@ public class WikiUtils { return wikiLocation; } + public Response fetchGeoSearchWikiMetadata2(Double latitude, + Double longitude, + Double radius, + Long limit) throws IOException { + OkHttpClient.Builder httpClient = new OkHttpClient.Builder(); + // TODO httpClient.addInterceptor(new RetrofitDebugInterceptor()); + + Retrofit retrofit = new Retrofit.Builder() + .baseUrl("https://" + countryCode + ".wikipedia.org/w/") + .addConverterFactory(GsonConverterFactory.create()) + .client(httpClient.build()) + .build(); + + return retrofit.create(WikiService.class).fetchGeoSearch( + String.format("%s%7C%s", latitude, longitude), + radius, + limit + ).execute(); + } + public void fetchGeoSearchWikiMetadata(Context ctx, Double latitude, Double longitude, @@ -280,6 +306,23 @@ public class WikiUtils { } + public Response fetchPageInfos2(List pageIds) throws IOException { + + OkHttpClient.Builder httpClient = new OkHttpClient.Builder(); + // TODO httpClient.addInterceptor(new RetrofitDebugInterceptor()); + + Retrofit retrofit = new Retrofit.Builder() + .baseUrl("https://" + countryCode + ".wikipedia.org/w/") + .addConverterFactory(GsonConverterFactory.create()) + .client(httpClient.build()) + .build(); + + return retrofit.create(WikiService.class) + .fetchPageInfos(StringUtils.join(pageIds, "|")) + .execute(); + + } + public void fetchPageInfos(List pageIds, final WikiResponseCallback callback) { AQuery aq = NetUtils.createProxyAQueryInstance(ctx); aq.ajax("https://" + countryCode + ".wikipedia.org/w/api.php" +