[MediaWiki-commits] [Gerrit] apps...wikipedia[master]: Always request edit token before Wikidata description edits
jenkins-bot has submitted this change and it was merged. ( https://gerrit.wikimedia.org/r/325324 ) Change subject: Always request edit token before Wikidata description edits .. Always request edit token before Wikidata description edits Note that the edit token is fetched from Wikidata. This is a step towards making description edits using logged in credentials. We still want to request a token for the non-logged in case since the hard-coded token will go away soon. See T40417. Bug: T150705 Bug: T146641 Change-Id: I91599b410dfbc6136838e9301290866ee733aaa8 --- M app/src/main/java/org/wikipedia/descriptions/DescriptionEditClient.java M app/src/main/java/org/wikipedia/descriptions/DescriptionEditFragment.java M app/src/main/java/org/wikipedia/descriptions/centralauth/CentralAuthTokenClient.java M app/src/main/java/org/wikipedia/edit/token/EditTokenClient.java M app/src/test/java/org/wikipedia/descriptions/DescriptionEditClientTest.java 5 files changed, 77 insertions(+), 35 deletions(-) Approvals: Niedzielski: Looks good to me, approved jenkins-bot: Verified diff --git a/app/src/main/java/org/wikipedia/descriptions/DescriptionEditClient.java b/app/src/main/java/org/wikipedia/descriptions/DescriptionEditClient.java index 1bbc42e..8bad189 100644 --- a/app/src/main/java/org/wikipedia/descriptions/DescriptionEditClient.java +++ b/app/src/main/java/org/wikipedia/descriptions/DescriptionEditClient.java @@ -21,8 +21,6 @@ * Data Client to submit a new or updated description to wikidata.org. */ class DescriptionEditClient { -private static final String ANONYMOUS_TOKEN = "+\\"; -private static final WikiSite WIKI_DATA_SITE = new WikiSite("www.wikidata.org", ""); private static final String ABUSEFILTER_DISALLOWED = "abusefilter-disallowed"; private static final String ABUSEFILTER_WARNING = "abusefilter-warning"; @@ -38,28 +36,33 @@ /** * Submit a new value for the Wikidata description associated with the given Wikipedia page. * - * @param pageTitle specifies the Wikipedia page the Wikidata item is linked to - * @param description the new value for the Wikidata description - * @param cb called when this is done successfully or failed + * @param wiki the Wiki site to use this on. Should be "www.wikidata.org" + * @param pageTitlespecifies the Wikipedia page the Wikidata item is linked to + * @param description the new value for the Wikidata description + * @param editTokena token from Wikidata + * @param cb called when this is done successfully or failed * @return Call object which can be used to cancel the request */ -public Call request(@NonNull PageTitle pageTitle, +public Call request(@NonNull WikiSite wiki, + @NonNull PageTitle pageTitle, @NonNull String description, + @NonNull String editToken, @NonNull Callback cb) { -return request(cachedService.service(WIKI_DATA_SITE), pageTitle, description, -pageTitle.getWikiSite().languageCode(), User.isLoggedIn(), cb); +return request(cachedService.service(wiki), pageTitle, description, +pageTitle.getWikiSite().languageCode(), editToken, User.isLoggedIn(), cb); } @SuppressWarnings("WeakerAccess") @VisibleForTesting Call request(@NonNull Service service, - @NonNull final PageTitle pageTitle, - @NonNull final String description, - @NonNull final String languageCode, - final boolean loggedIn, + @NonNull PageTitle pageTitle, + @NonNull String description, + @NonNull String languageCode, + @NonNull String editToken, + boolean loggedIn, @NonNull final Callback cb) { Call call = service.edit(languageCode, languageCode, languageCode + "wiki", -pageTitle.getPrefixedText(), description, ANONYMOUS_TOKEN, null, +pageTitle.getPrefixedText(), description, editToken, /* TODO: loggedIn ? "user" : */ null); call.enqueue(new retrofit2.Callback() { @Override @@ -106,16 +109,13 @@ } @VisibleForTesting interface Service { -@SuppressWarnings("checkstyle:parameternumber") @FormUrlEncoded -@POST("w/api.php?action=wbsetdescription&format=json") +@POST("w/api.php?action=wbsetdescription&format=json") @FormUrlEncoded Call edit(@NonNull @Field("language") String language,
[MediaWiki-commits] [Gerrit] apps...wikipedia[master]: Always request edit token before Wikidata description edits
BearND has uploaded a new change for review. https://gerrit.wikimedia.org/r/325324 Change subject: Always request edit token before Wikidata description edits .. Always request edit token before Wikidata description edits Note that the edit token is fetched from Wikidata. This is a step towards making description edits using logged in credentials. We still want to request a token for the non-logged in case since the hard-coded token will go away soon. See T40417. Bug: T150705 Bug: T146641 Change-Id: I91599b410dfbc6136838e9301290866ee733aaa8 --- M app/src/main/java/org/wikipedia/descriptions/DescriptionEditClient.java M app/src/main/java/org/wikipedia/descriptions/DescriptionEditFragment.java M app/src/main/java/org/wikipedia/descriptions/centralauth/CentralAuthTokenClient.java M app/src/main/java/org/wikipedia/edit/token/EditTokenClient.java M app/src/test/java/org/wikipedia/descriptions/DescriptionEditClientTest.java 5 files changed, 73 insertions(+), 30 deletions(-) git pull ssh://gerrit.wikimedia.org:29418/apps/android/wikipedia refs/changes/24/325324/1 diff --git a/app/src/main/java/org/wikipedia/descriptions/DescriptionEditClient.java b/app/src/main/java/org/wikipedia/descriptions/DescriptionEditClient.java index 268e81b..5a437e7 100644 --- a/app/src/main/java/org/wikipedia/descriptions/DescriptionEditClient.java +++ b/app/src/main/java/org/wikipedia/descriptions/DescriptionEditClient.java @@ -21,8 +21,8 @@ * Data Client to submit a new or updated description to wikidata.org. */ class DescriptionEditClient { -private static final String ANONYMOUS_TOKEN = "+\\"; -private static final WikiSite WIKI_DATA_SITE = new WikiSite("www.wikidata.org", ""); +static final String ANONYMOUS_TOKEN = "+\\"; +static final WikiSite WIKI_DATA_SITE = new WikiSite("www.wikidata.org", ""); @NonNull private final MwCachedService cachedService = new MwCachedService<>(Service.class); @@ -36,29 +36,32 @@ /** * Submit a new value for the Wikidata description associated with the given Wikipedia page. * - * @param pageTitle specifies the Wikipedia page the Wikidata item is linked to - * @param description the new value for the Wikidata description - * @param cb called when this is done successfully or failed + * @param pageTitlespecifies the Wikipedia page the Wikidata item is linked to + * @param description the new value for the Wikidata description + * @param editTokena token from Wikidata + * @param cb called when this is done successfully or failed * @return Call object which can be used to cancel the request */ public Call request(@NonNull PageTitle pageTitle, @NonNull String description, + @NonNull String editToken, @NonNull Callback cb) { return request(cachedService.service(WIKI_DATA_SITE), pageTitle, description, -pageTitle.getWikiSite().languageCode(), User.isLoggedIn(), cb); +pageTitle.getWikiSite().languageCode(), editToken, User.isLoggedIn(), cb); } @SuppressWarnings("WeakerAccess") @VisibleForTesting Call request(@NonNull Service service, - @NonNull final PageTitle pageTitle, - @NonNull final String description, - @NonNull final String languageCode, - final boolean loggedIn, + @NonNull PageTitle pageTitle, + @NonNull String description, + @NonNull String languageCode, + @NonNull String editToken, + boolean loggedIn, @NonNull final Callback cb) { Call call = service.edit(languageCode, languageCode + "wiki", -pageTitle.getPrefixedText(), description, ANONYMOUS_TOKEN, null, -/* TODO: loggedIn ? "user" : */ null); +pageTitle.getPrefixedText(), description, editToken, +/* loggedIn ? "user" : */ null); call.enqueue(new retrofit2.Callback() { @Override public void onResponse(Call call, @@ -111,7 +114,6 @@ @NonNull @Field("title") String title, @NonNull @Field("value") String newDescription, @NonNull @Field("token") String token, - @Nullable @Field("centralauthtoken") String centralAuthToken, @Nullable @Field("assert") String user ); } diff --git a/app/src/main/java/org/wikipedia/des