Merge remote-tracking branch 'origin/2.8-release' into 2.8-release

# Conflicts:
#	app/build.gradle
#	app/src/main/java/fr/free/nrw/commons/di/CommonsApplicationModule.java
This commit is contained in:
misaochan 2018-07-28 23:39:15 +10:00
commit d05cf395d8
23 changed files with 208 additions and 93 deletions

View file

@ -92,6 +92,7 @@ public class ApacheHttpClientMediaWikiApi implements MediaWikiApi {
ClientConnectionManager cm = new ThreadSafeClientConnManager(params, schemeRegistry);
params.setParameter(CoreProtocolPNames.USER_AGENT, getUserAgent());
httpClient = new DefaultHttpClient(cm, params);
httpClient.addRequestInterceptor(NetworkInterceptors.getHttpRequestInterceptor());
api = new MWApi(apiURL, httpClient);
wikidataApi = new MWApi(wikidatApiURL, httpClient);
this.defaultPreferences = defaultPreferences;

View file

@ -0,0 +1,85 @@
package fr.free.nrw.commons.mwapi;
import android.support.annotation.NonNull;
import org.apache.http.Header;
import org.apache.http.HttpRequest;
import org.apache.http.HttpRequestInterceptor;
import org.apache.http.impl.client.ClientParamsStack;
import org.apache.http.params.HttpParamsNames;
import org.apache.http.protocol.HttpContext;
import java.util.HashSet;
import java.util.Set;
import timber.log.Timber;
public class NetworkInterceptors {
/**
* Interceptor to log the HTTP request
*/
@NonNull
public static HttpRequestInterceptor getHttpRequestInterceptor() {
return (HttpRequest request, HttpContext httpContext) -> {
Timber.v("<<<<<<<<<<<<<< START OF REQUEST LOGGING [%s] >>>>>>>>>>>>", request.getRequestLine().getUri());
Timber.v("Request line:\n %s", request.getRequestLine().toString());
logRequestParams(request);
logRequestHeaders(request);
Timber.v("Protocol version:\n %s", request.getProtocolVersion());
Timber.v("<<<<<<<<<<<<<< END OF REQUEST LOGGING [%s] >>>>>>>>>>>>", request.getRequestLine().getUri());
};
}
/**
* Log all request params from a HTTPRequest
* @param request
*/
private static void logRequestParams(HttpRequest request) {
Set<String> names = new HashSet<>();
if (request.getParams() instanceof ClientParamsStack) {
ClientParamsStack cps = (ClientParamsStack) request.getParams();
if (cps.getApplicationParams() != null
&& cps.getRequestParams() instanceof HttpParamsNames) {
names.addAll(((HttpParamsNames) cps.getApplicationParams()).getNames());
}
if (cps.getClientParams() != null
&& cps.getClientParams() instanceof HttpParamsNames) {
names.addAll(((HttpParamsNames) cps.getClientParams()).getNames());
}
if (cps.getRequestParams() != null
&& cps.getRequestParams() instanceof HttpParamsNames) {
names.addAll(((HttpParamsNames) cps.getRequestParams()).getNames());
}
if (cps.getOverrideParams() != null
&& cps.getRequestParams() instanceof HttpParamsNames) {
names.addAll(((HttpParamsNames) cps.getOverrideParams()).getNames());
}
} else {
HttpParamsNames params = (HttpParamsNames) request.getParams();
names = params.getNames();
}
Timber.v("<<<<<<<<<<<<<< REQUEST PARAMS >>>>>>>>>>>>");
for (String name : names) {
Timber.v("Param >> %s: %s", name, request.getParams().getParameter(name));
}
Timber.v("<<<<<<<<<<<<<< REQUEST PARAMS >>>>>>>>>>>>");
}
/**
* Log all headers from a HTTPRequest
* @param request
*/
private static void logRequestHeaders(HttpRequest request) {
Header[] headerFields = request.getAllHeaders();
Timber.v("<<<<<<<<<<<<<< HEADERS >>>>>>>>>>>>");
for (int e = 0; e < request.getAllHeaders().length; e++) {
Timber.v("Header >> %s: %s", headerFields[e].getName(), headerFields[e].getValue());
}
Timber.v("<<<<<<<<<<<<<< HEADERS >>>>>>>>>>>>");
}
}