[MediaWiki-commits] [Gerrit] apps...wikipedia[master]: Always request edit token before Wikidata description edits

2016-12-07 Thread jenkins-bot (Code Review)
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

2016-12-05 Thread BearND (Code Review)
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