[MediaWiki-commits] [Gerrit] apps...wikipedia[master]: Hygiene: refactor insertion of common headers in Retrofit re...
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) { -MaptoSetHeaders = 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...
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) { -MaptoSetHeaders = 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,