[MediaWiki-commits] [Gerrit] apps...wikipedia[master]: Hygiene: refactor insertion of common headers in Retrofit re...

2016-10-13 Thread jenkins-bot (Code Review)
jenkins-bot has submitted this change and it was merged.

Change subject: Hygiene: refactor insertion of common headers in Retrofit 
requests.
..


Hygiene: refactor insertion of common headers in Retrofit requests.

Change-Id: Id6b13d9bc1483506346e69170a396fc9fa4f3f43
---
M app/src/main/java/org/wikipedia/OkHttpConnectionFactory.java
M app/src/main/java/org/wikipedia/WikipediaApp.java
M app/src/main/java/org/wikipedia/analytics/EventLoggingEvent.java
M app/src/main/java/org/wikipedia/analytics/Funnel.java
M app/src/main/java/org/wikipedia/dataclient/retrofit/RetrofitFactory.java
M app/src/main/java/org/wikipedia/savedpages/SavedPageSyncService.java
6 files changed, 32 insertions(+), 28 deletions(-)

Approvals:
  Mholloway: Looks good to me, but someone else must approve
  jenkins-bot: Verified
  Niedzielski: Looks good to me, approved



diff --git a/app/src/main/java/org/wikipedia/OkHttpConnectionFactory.java 
b/app/src/main/java/org/wikipedia/OkHttpConnectionFactory.java
index 82a9026..8c363f0 100644
--- a/app/src/main/java/org/wikipedia/OkHttpConnectionFactory.java
+++ b/app/src/main/java/org/wikipedia/OkHttpConnectionFactory.java
@@ -13,9 +13,12 @@
 
 import okhttp3.Cache;
 import okhttp3.CookieJar;
+import okhttp3.Interceptor;
 import okhttp3.JavaNetCookieJar;
 import okhttp3.OkHttpClient;
 import okhttp3.OkUrlFactory;
+import okhttp3.Request;
+import okhttp3.Response;
 import okhttp3.logging.HttpLoggingInterceptor;
 
 public class OkHttpConnectionFactory implements HttpRequest.ConnectionFactory {
@@ -52,6 +55,24 @@
 .cookieJar(cookieJar)
 .cache(HTTP_CACHE)
 .addInterceptor(loggingInterceptor)
+.addInterceptor(new CommonHeaderInterceptor())
 .build();
 }
+
+// If adding a new header here, make sure to duplicate it in the MWAPI 
header builder
+// (WikipediaApp.buildCustomHeadersMap()).
+// TODO: remove above comment once buildCustomHeadersMap() is removed.
+private static class CommonHeaderInterceptor implements Interceptor {
+@Override
+public Response intercept(Interceptor.Chain chain) throws IOException {
+WikipediaApp app = WikipediaApp.getInstance();
+Request request = chain.request();
+request = request.newBuilder()
+.header("User-Agent", app.getUserAgent())
+.header(app.isEventLoggingEnabled() ? "X-WMF-UUID" : "DNT",
+app.isEventLoggingEnabled() ? 
app.getAppInstallID() : "1")
+.build();
+return chain.proceed(request);
+}
+}
 }
diff --git a/app/src/main/java/org/wikipedia/WikipediaApp.java 
b/app/src/main/java/org/wikipedia/WikipediaApp.java
index e456aee..482edbf 100644
--- a/app/src/main/java/org/wikipedia/WikipediaApp.java
+++ b/app/src/main/java/org/wikipedia/WikipediaApp.java
@@ -65,9 +65,6 @@
 import java.util.Random;
 import java.util.UUID;
 
-import okhttp3.Headers;
-import okhttp3.Request;
-
 import static org.wikipedia.util.DimenUtil.getFontSizeFromSp;
 import static org.wikipedia.util.ReleaseUtil.getChannel;
 import static org.wikipedia.util.StringUtil.emptyIfNull;
@@ -527,18 +524,10 @@
 return PrefsOnboardingStateMachine.getInstance();
 }
 
-/** For Retrofit requests. Keep in sync with #buildCustomHeadersMap */
-public Headers buildCustomHeaders(Request request, Site site) {
-Map toSetHeaders = 
buildCustomHeadersMap(getAcceptLanguage(site));
-
-Headers.Builder moreHeaders = request.headers().newBuilder();
-for (String key : toSetHeaders.keySet()) {
-moreHeaders.set(key, toSetHeaders.get(key));
-}
-return moreHeaders.build();
-}
-
-/** For java-mwapi API requests. */
+// For java-mwapi API requests.
+// If adding a new header here (before this method is removed), make sure 
to duplicate it
+// in the Retrofit header list 
(OkHttpConnectionFactory#CommonHeaderInterceptor).
+@Deprecated
 private Map buildCustomHeadersMap(String acceptLanguage) {
 Map headers = new HashMap<>();
 headers.put("User-Agent", getUserAgent());
diff --git a/app/src/main/java/org/wikipedia/analytics/EventLoggingEvent.java 
b/app/src/main/java/org/wikipedia/analytics/EventLoggingEvent.java
index a956ad7..fdadd1b 100644
--- a/app/src/main/java/org/wikipedia/analytics/EventLoggingEvent.java
+++ b/app/src/main/java/org/wikipedia/analytics/EventLoggingEvent.java
@@ -25,7 +25,6 @@
 ? EVENTLOG_URL_DEV : EVENTLOG_URL_PROD;
 
 private final JSONObject data;
-private final String userAgent;
 
 /**
  * Create an EventLoggingEvent that logs to a given revision of a given 
schema with
@@ -34,11 +33,10 @@
  * @param schema Schema name (as specified on meta.wikimedia.org)
  * @param revID Revision of 

[MediaWiki-commits] [Gerrit] apps...wikipedia[master]: Hygiene: refactor insertion of common headers in Retrofit re...

2016-10-12 Thread Dbrant (Code Review)
Dbrant has uploaded a new change for review.

  https://gerrit.wikimedia.org/r/315498

Change subject: Hygiene: refactor insertion of common headers in Retrofit 
requests.
..

Hygiene: refactor insertion of common headers in Retrofit requests.

Change-Id: Id6b13d9bc1483506346e69170a396fc9fa4f3f43
---
M app/src/main/java/org/wikipedia/OkHttpConnectionFactory.java
M app/src/main/java/org/wikipedia/WikipediaApp.java
M app/src/main/java/org/wikipedia/analytics/EventLoggingEvent.java
M app/src/main/java/org/wikipedia/analytics/Funnel.java
M app/src/main/java/org/wikipedia/dataclient/retrofit/RetrofitFactory.java
M app/src/main/java/org/wikipedia/savedpages/SavedPageSyncService.java
6 files changed, 26 insertions(+), 27 deletions(-)


  git pull ssh://gerrit.wikimedia.org:29418/apps/android/wikipedia 
refs/changes/98/315498/1

diff --git a/app/src/main/java/org/wikipedia/OkHttpConnectionFactory.java 
b/app/src/main/java/org/wikipedia/OkHttpConnectionFactory.java
index 82a9026..4727d84 100644
--- a/app/src/main/java/org/wikipedia/OkHttpConnectionFactory.java
+++ b/app/src/main/java/org/wikipedia/OkHttpConnectionFactory.java
@@ -13,9 +13,12 @@
 
 import okhttp3.Cache;
 import okhttp3.CookieJar;
+import okhttp3.Interceptor;
 import okhttp3.JavaNetCookieJar;
 import okhttp3.OkHttpClient;
 import okhttp3.OkUrlFactory;
+import okhttp3.Request;
+import okhttp3.Response;
 import okhttp3.logging.HttpLoggingInterceptor;
 
 public class OkHttpConnectionFactory implements HttpRequest.ConnectionFactory {
@@ -52,6 +55,21 @@
 .cookieJar(cookieJar)
 .cache(HTTP_CACHE)
 .addInterceptor(loggingInterceptor)
+.addInterceptor(new CommonHeaderInterceptor())
 .build();
 }
+
+private static class CommonHeaderInterceptor implements Interceptor {
+@Override
+public Response intercept(Interceptor.Chain chain) throws IOException {
+WikipediaApp app = WikipediaApp.getInstance();
+Request request = chain.request();
+request = request.newBuilder()
+.header("User-Agent", app.getUserAgent())
+.header(app.isEventLoggingEnabled() ? "X-WMF-UUID" : "DNT",
+app.isEventLoggingEnabled() ? 
app.getAppInstallID() : "1")
+.build();
+return chain.proceed(request);
+}
+}
 }
diff --git a/app/src/main/java/org/wikipedia/WikipediaApp.java 
b/app/src/main/java/org/wikipedia/WikipediaApp.java
index e456aee..210aead 100644
--- a/app/src/main/java/org/wikipedia/WikipediaApp.java
+++ b/app/src/main/java/org/wikipedia/WikipediaApp.java
@@ -65,9 +65,6 @@
 import java.util.Random;
 import java.util.UUID;
 
-import okhttp3.Headers;
-import okhttp3.Request;
-
 import static org.wikipedia.util.DimenUtil.getFontSizeFromSp;
 import static org.wikipedia.util.ReleaseUtil.getChannel;
 import static org.wikipedia.util.StringUtil.emptyIfNull;
@@ -527,18 +524,8 @@
 return PrefsOnboardingStateMachine.getInstance();
 }
 
-/** For Retrofit requests. Keep in sync with #buildCustomHeadersMap */
-public Headers buildCustomHeaders(Request request, Site site) {
-Map toSetHeaders = 
buildCustomHeadersMap(getAcceptLanguage(site));
-
-Headers.Builder moreHeaders = request.headers().newBuilder();
-for (String key : toSetHeaders.keySet()) {
-moreHeaders.set(key, toSetHeaders.get(key));
-}
-return moreHeaders.build();
-}
-
 /** For java-mwapi API requests. */
+@Deprecated
 private Map buildCustomHeadersMap(String acceptLanguage) {
 Map headers = new HashMap<>();
 headers.put("User-Agent", getUserAgent());
diff --git a/app/src/main/java/org/wikipedia/analytics/EventLoggingEvent.java 
b/app/src/main/java/org/wikipedia/analytics/EventLoggingEvent.java
index a956ad7..fdadd1b 100644
--- a/app/src/main/java/org/wikipedia/analytics/EventLoggingEvent.java
+++ b/app/src/main/java/org/wikipedia/analytics/EventLoggingEvent.java
@@ -25,7 +25,6 @@
 ? EVENTLOG_URL_DEV : EVENTLOG_URL_PROD;
 
 private final JSONObject data;
-private final String userAgent;
 
 /**
  * Create an EventLoggingEvent that logs to a given revision of a given 
schema with
@@ -34,11 +33,10 @@
  * @param schema Schema name (as specified on meta.wikimedia.org)
  * @param revID Revision of the schema to log to
  * @param wiki DBName (enwiki, dewiki, etc) of the wiki in which we are 
operating
- * @param userAgent User-Agent string to use for this request
  * @param eventData Data for the actual event payload. Considered to be
  *
  */
-public EventLoggingEvent(String schema, int revID, String wiki, String 
userAgent, JSONObject eventData) {
+public EventLoggingEvent(String schema, int revID, String wiki,