jenkins-bot has submitted this change and it was merged. ( 
https://gerrit.wikimedia.org/r/325326 )

Change subject: Copy CentralAuth tokens for www.wikidata.org requests
......................................................................


Copy CentralAuth tokens for www.wikidata.org requests

Copy CentralAuth tokens for www.wikidata.org requests from wikipedia.org
if the user is logged in. There are tokens that start with "centralauth_".

Examples:
* centralauth_Token
* centralauth_User
* centralauth_Session

Gergo mentioned that this would create the local session on the fly.
This would allow us to skip CentralAuthClient implementation we had added 
earlier
and reduce the number of requests per description edit.

This happens independent of the data client. It's all contained in the
SharedPreferenceCookieManager.

The one thing added to the data client is to now add the assert=user if
a user is logged in.

Bug: T150705
Change-Id: Ic3e05370d9bb028bac80446acf8b184c49b479a7
(cherry picked from commit c5400639bb916e44b50b32e66113464db2bfa821)
---
M app/src/main/java/org/wikipedia/dataclient/SharedPreferenceCookieManager.java
M app/src/main/java/org/wikipedia/descriptions/DescriptionEditClient.java
2 files changed, 20 insertions(+), 4 deletions(-)

Approvals:
  Dbrant: Looks good to me, approved
  Niedzielski: Looks good to me, approved
  jenkins-bot: Verified



diff --git 
a/app/src/main/java/org/wikipedia/dataclient/SharedPreferenceCookieManager.java 
b/app/src/main/java/org/wikipedia/dataclient/SharedPreferenceCookieManager.java
index bc314b9..31da327 100644
--- 
a/app/src/main/java/org/wikipedia/dataclient/SharedPreferenceCookieManager.java
+++ 
b/app/src/main/java/org/wikipedia/dataclient/SharedPreferenceCookieManager.java
@@ -3,6 +3,7 @@
 import android.support.annotation.NonNull;
 import android.support.annotation.Nullable;
 
+import org.wikipedia.login.User;
 import org.wikipedia.settings.Prefs;
 import org.wikipedia.util.StringUtil;
 
@@ -20,6 +21,7 @@
 
 public final class SharedPreferenceCookieManager extends CookieManager {
     private static final String DELIMITER = ";";
+    private static final String CENTRALAUTH_PREFIX = "centralauth_";
     private final Map<String, Map<String, String>> cookieJar = new HashMap<>();
 
     private static SharedPreferenceCookieManager INSTANCE;
@@ -52,6 +54,13 @@
         String domain = uri.getAuthority();
 
         for (String domainSpec: cookieJar.keySet()) {
+            // For sites outside the wikipedia.org domain, like wikidata.org,
+            // transfer the centralauth cookies from wikipedia.org, too, if 
the user is logged in
+            if (User.isLoggedIn()
+                    && domain.equals("www.wikidata.org") && 
domainSpec.equals("wikipedia.org")) {
+                cookiesList.addAll(makeCookieList(cookieJar.get(domainSpec), 
CENTRALAUTH_PREFIX));
+            }
+
             // Very weak domain matching.
             // Primarily to make sure that cookies set for .wikipedia.org are 
sent for
             // en.wikipedia.org and *.wikimedia.org
@@ -161,15 +170,22 @@
         return cookiesMap;
     }
 
-    private List<String> makeCookieList(Map<String, String> cookies) {
+    private List<String> makeCookieList(@NonNull Map<String, String> cookies) {
+        return makeCookieList(cookies, null);
+    }
+
+    private List<String> makeCookieList(@NonNull Map<String, String> cookies,
+                                        @Nullable String prefixFilter) {
         List<String> cookiesList = new ArrayList<>();
         for (Map.Entry<String, String> entry: cookies.entrySet()) {
-            cookiesList.add(entry.getKey() + "=" + entry.getValue());
+            if (prefixFilter == null || 
entry.getKey().startsWith(prefixFilter)) {
+                cookiesList.add(entry.getKey() + "=" + entry.getValue());
+            }
         }
         return cookiesList;
     }
 
-    private String makeString(Iterable<String> list) {
+    private String makeString(@NonNull Iterable<String> list) {
         return StringUtil.listToDelimitedString(list, DELIMITER);
     }
 }
diff --git 
a/app/src/main/java/org/wikipedia/descriptions/DescriptionEditClient.java 
b/app/src/main/java/org/wikipedia/descriptions/DescriptionEditClient.java
index 8bad189..90368c0 100644
--- a/app/src/main/java/org/wikipedia/descriptions/DescriptionEditClient.java
+++ b/app/src/main/java/org/wikipedia/descriptions/DescriptionEditClient.java
@@ -63,7 +63,7 @@
 
         Call<DescriptionEdit> call = service.edit(languageCode, languageCode, 
languageCode + "wiki",
                 pageTitle.getPrefixedText(), description, editToken,
-                /* TODO: loggedIn ? "user" : */ null);
+                loggedIn ? "user" : null);
         call.enqueue(new retrofit2.Callback<DescriptionEdit>() {
             @Override
             public void onResponse(Call<DescriptionEdit> call,

-- 
To view, visit https://gerrit.wikimedia.org/r/325326
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: merged
Gerrit-Change-Id: Ic3e05370d9bb028bac80446acf8b184c49b479a7
Gerrit-PatchSet: 4
Gerrit-Project: apps/android/wikipedia
Gerrit-Branch: master
Gerrit-Owner: BearND <bsitzm...@wikimedia.org>
Gerrit-Reviewer: Brion VIBBER <br...@wikimedia.org>
Gerrit-Reviewer: Dbrant <dbr...@wikimedia.org>
Gerrit-Reviewer: Mholloway <mhollo...@wikimedia.org>
Gerrit-Reviewer: Niedzielski <sniedziel...@wikimedia.org>
Gerrit-Reviewer: jenkins-bot <>

_______________________________________________
MediaWiki-commits mailing list
MediaWiki-commits@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to