[MediaWiki-commits] [Gerrit] Use new continuation API for full text search - change (apps...wikipedia)
Dbrant has submitted this change and it was merged. Change subject: Use new continuation API for full text search .. Use new continuation API for full text search Mainly to future-proof, and to avoid the API sending us this warning for every query we make: Formatting of continuation data will be changing soon. To continue using the current formatting, use the 'rawcontinue' parameter. To begin using the new format, pass an empty string for 'continue' in the initial query. I found some hints for the new continuation API here: http://www.mediawiki.org/wiki/API%3aQuery#Continuing_queries Still, the documentation could have been better there if it had use actual HTTP requests as examples. Change-Id: I705f4db4855db4de4d062aa2ac808fcfe0cecb99 --- M wikipedia/src/main/java/org/wikipedia/search/FullSearchArticlesTask.java M wikipedia/src/main/java/org/wikipedia/search/FullSearchFragment.java 2 files changed, 46 insertions(+), 21 deletions(-) Approvals: Dbrant: Looks good to me, approved diff --git a/wikipedia/src/main/java/org/wikipedia/search/FullSearchArticlesTask.java b/wikipedia/src/main/java/org/wikipedia/search/FullSearchArticlesTask.java index 28ffe7a..08d5bda 100644 --- a/wikipedia/src/main/java/org/wikipedia/search/FullSearchArticlesTask.java +++ b/wikipedia/src/main/java/org/wikipedia/search/FullSearchArticlesTask.java @@ -24,9 +24,9 @@ private final Site site; private final String searchTerm; -private final int continueOffset; +private final ContinueOffset continueOffset; -public FullSearchArticlesTask(Api api, Site site, String searchTerm, int continueOffset) { +public FullSearchArticlesTask(Api api, Site site, String searchTerm, ContinueOffset continueOffset) { super(LOW_CONCURRENCY, api); this.site = site; this.searchTerm = searchTerm; @@ -35,8 +35,7 @@ @Override public RequestBuilder buildRequest(Api api) { -final String offset = Integer.toString(continueOffset); -return api.action(query) +final RequestBuilder req = api.action(query) .param(prop, pageprops|pageimages) .param(ppprop, wikibase_item) // only interested in wikibase_item .param(generator, search) @@ -45,7 +44,6 @@ .param(gsrwhat, text) .param(gsrinfo, ) .param(gsrprop, redirecttitle) -.param(gsroffset, offset) .param(gsrlimit, NUM_RESULTS_PER_QUERY) .param(list, search) // for correct order .param(srsearch, searchTerm) @@ -53,11 +51,22 @@ .param(srwhat, text) .param(srinfo, suggestion) .param(srprop, ) -.param(sroffset, offset) .param(srlimit, NUM_RESULTS_PER_QUERY) .param(piprop, thumbnail) // for thumbnail URLs .param(pithumbsize, Integer.toString(WikipediaApp.PREFERRED_THUMB_SIZE)) .param(pilimit, NUM_RESULTS_PER_QUERY); +if (continueOffset != null) { +req.param(continue, continueOffset.cont); +if (continueOffset.sroffset 0) { +req.param(sroffset, Integer.toString(continueOffset.sroffset)); +} +if (continueOffset.gsroffset 0) { +req.param(gsroffset, Integer.toString(continueOffset.gsroffset)); +} +} else { +req.param(continue, ); // add empty continue to avoid the API warning +} +return req; } @Override @@ -74,9 +83,13 @@ } } -int newOffset = 0; -if (data.has(query-continue)) { -newOffset = data.getJSONObject(query-continue).getJSONObject(search).getInt(gsroffset); +ContinueOffset nextContinueOffset = null; +final JSONObject continueData = data.optJSONObject(continue); +if (continueData != null) { +String continueString = continueData.optString(continue, null); +Integer sroffset = continueData.optInt(sroffset); +Integer gsroffset = continueData.optInt(gsroffset); +nextContinueOffset = new ContinueOffset(continueString, sroffset, gsroffset); } JSONObject queryResult = data.optJSONObject(query); @@ -134,20 +147,20 @@ resultList.add(map.get(search.getJSONObject(i).getString(title))); } -return new FullSearchResults(resultList, newOffset, suggestion); +return new FullSearchResults(resultList, nextContinueOffset, suggestion); } private FullSearchResults emptyResults() { -return new FullSearchResults(Collections.FullSearchResultemptyList(), 0, ); +return new FullSearchResults(Collections.FullSearchResultemptyList(), null, ); } public class FullSearchResults { -private int
[MediaWiki-commits] [Gerrit] Use new continuation API for full text search - change (apps...wikipedia)
BearND has uploaded a new change for review. https://gerrit.wikimedia.org/r/174010 Change subject: Use new continuation API for full text search .. Use new continuation API for full text search Mainly to future-proof, and to avoid the API sending us this warning for every query we make: Formatting of continuation data will be changing soon. To continue using the current formatting, use the 'rawcontinue' parameter. To begin using the new format, pass an empty string for 'continue' in the initial query. I found some hints for the new continuation API here: http://www.mediawiki.org/wiki/API%3aQuery#Continuing_queries Still, the documentation could have been better there if it had use actual HTTP requests as examples. Change-Id: I705f4db4855db4de4d062aa2ac808fcfe0cecb99 --- M wikipedia/src/main/java/org/wikipedia/search/FullSearchArticlesTask.java M wikipedia/src/main/java/org/wikipedia/search/FullSearchFragment.java 2 files changed, 46 insertions(+), 21 deletions(-) git pull ssh://gerrit.wikimedia.org:29418/apps/android/wikipedia refs/changes/10/174010/1 diff --git a/wikipedia/src/main/java/org/wikipedia/search/FullSearchArticlesTask.java b/wikipedia/src/main/java/org/wikipedia/search/FullSearchArticlesTask.java index 28ffe7a..1aac1d3 100644 --- a/wikipedia/src/main/java/org/wikipedia/search/FullSearchArticlesTask.java +++ b/wikipedia/src/main/java/org/wikipedia/search/FullSearchArticlesTask.java @@ -24,9 +24,9 @@ private final Site site; private final String searchTerm; -private final int continueOffset; +private final ContinueOffset continueOffset; -public FullSearchArticlesTask(Api api, Site site, String searchTerm, int continueOffset) { +public FullSearchArticlesTask(Api api, Site site, String searchTerm, ContinueOffset continueOffset) { super(LOW_CONCURRENCY, api); this.site = site; this.searchTerm = searchTerm; @@ -35,8 +35,7 @@ @Override public RequestBuilder buildRequest(Api api) { -final String offset = Integer.toString(continueOffset); -return api.action(query) +final RequestBuilder req = api.action(query) .param(prop, pageprops|pageimages) .param(ppprop, wikibase_item) // only interested in wikibase_item .param(generator, search) @@ -45,7 +44,6 @@ .param(gsrwhat, text) .param(gsrinfo, ) .param(gsrprop, redirecttitle) -.param(gsroffset, offset) .param(gsrlimit, NUM_RESULTS_PER_QUERY) .param(list, search) // for correct order .param(srsearch, searchTerm) @@ -53,11 +51,22 @@ .param(srwhat, text) .param(srinfo, suggestion) .param(srprop, ) -.param(sroffset, offset) .param(srlimit, NUM_RESULTS_PER_QUERY) .param(piprop, thumbnail) // for thumbnail URLs .param(pithumbsize, Integer.toString(WikipediaApp.PREFERRED_THUMB_SIZE)) .param(pilimit, NUM_RESULTS_PER_QUERY); +if (continueOffset != null) { +req.param(continue, continueOffset.cont); +if (continueOffset.gsroffset 0) { +req.param(sroffset, Integer.toString(continueOffset.sroffset)); +} +if (continueOffset.gsroffset 0) { +req.param(gsroffset, Integer.toString(continueOffset.gsroffset)); +} +} else { +req.param(continue, ); // add empty continue to avoid the API warning +} +return req; } @Override @@ -74,9 +83,13 @@ } } -int newOffset = 0; -if (data.has(query-continue)) { -newOffset = data.getJSONObject(query-continue).getJSONObject(search).getInt(gsroffset); +ContinueOffset nextContinueOffset = null; +final JSONObject continueData = data.optJSONObject(continue); +if (continueData != null) { +String continueString = continueData.optString(continue, null); +Integer sroffset = continueData.optInt(sroffset); +Integer gsroffset = continueData.optInt(gsroffset); +nextContinueOffset = new ContinueOffset(continueString, sroffset, gsroffset); } JSONObject queryResult = data.optJSONObject(query); @@ -134,20 +147,20 @@ resultList.add(map.get(search.getJSONObject(i).getString(title))); } -return new FullSearchResults(resultList, newOffset, suggestion); +return new FullSearchResults(resultList, nextContinueOffset, suggestion); } private FullSearchResults emptyResults() { -return new FullSearchResults(Collections.FullSearchResultemptyList(), 0, ); +return new FullSearchResults(Collections.FullSearchResultemptyList(),