Skip to content

Commit 8f83bfd

Browse files
author
maskara
committed
With http network logs
1 parent 12a83da commit 8f83bfd

File tree

2 files changed

+86
-0
lines changed

2 files changed

+86
-0
lines changed

app/src/main/java/fr/free/nrw/commons/mwapi/ApacheHttpClientMediaWikiApi.java

+1
Original file line numberDiff line numberDiff line change
@@ -92,6 +92,7 @@ public ApacheHttpClientMediaWikiApi(Context context,
9292
ClientConnectionManager cm = new ThreadSafeClientConnManager(params, schemeRegistry);
9393
params.setParameter(CoreProtocolPNames.USER_AGENT, getUserAgent());
9494
httpClient = new DefaultHttpClient(cm, params);
95+
httpClient.addRequestInterceptor(NetworkInterceptors.getHttpRequestInterceptor());
9596
api = new MWApi(apiURL, httpClient);
9697
wikidataApi = new MWApi(wikidatApiURL, httpClient);
9798
this.defaultPreferences = defaultPreferences;
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,85 @@
1+
package fr.free.nrw.commons.mwapi;
2+
3+
import android.support.annotation.NonNull;
4+
5+
import org.apache.http.Header;
6+
import org.apache.http.HttpRequest;
7+
import org.apache.http.HttpRequestInterceptor;
8+
import org.apache.http.impl.client.ClientParamsStack;
9+
import org.apache.http.params.HttpParamsNames;
10+
import org.apache.http.protocol.HttpContext;
11+
12+
import java.util.HashSet;
13+
import java.util.Set;
14+
15+
import timber.log.Timber;
16+
17+
public class NetworkInterceptors {
18+
19+
/**
20+
* Interceptor to log the HTTP request
21+
*/
22+
@NonNull
23+
public static HttpRequestInterceptor getHttpRequestInterceptor() {
24+
return (HttpRequest request, HttpContext httpContext) -> {
25+
Timber.v("<<<<<<<<<<<<<< START OF REQUEST LOGGING [%s] >>>>>>>>>>>>", request.getRequestLine().getUri());
26+
27+
Timber.v("Request line:\n %s", request.getRequestLine().toString());
28+
logRequestParams(request);
29+
logRequestHeaders(request);
30+
Timber.v("Protocol version:\n %s", request.getProtocolVersion());
31+
32+
Timber.v("<<<<<<<<<<<<<< END OF REQUEST LOGGING [%s] >>>>>>>>>>>>", request.getRequestLine().getUri());
33+
};
34+
}
35+
36+
/**
37+
* Log all request params from a HTTPRequest
38+
* @param request
39+
*/
40+
private static void logRequestParams(HttpRequest request) {
41+
Set<String> names = new HashSet<>();
42+
if (request.getParams() instanceof ClientParamsStack) {
43+
ClientParamsStack cps = (ClientParamsStack) request.getParams();
44+
if (cps.getApplicationParams() != null
45+
&& cps.getRequestParams() instanceof HttpParamsNames) {
46+
names.addAll(((HttpParamsNames) cps.getApplicationParams()).getNames());
47+
}
48+
if (cps.getClientParams() != null
49+
&& cps.getClientParams() instanceof HttpParamsNames) {
50+
names.addAll(((HttpParamsNames) cps.getClientParams()).getNames());
51+
}
52+
if (cps.getRequestParams() != null
53+
&& cps.getRequestParams() instanceof HttpParamsNames) {
54+
names.addAll(((HttpParamsNames) cps.getRequestParams()).getNames());
55+
}
56+
if (cps.getOverrideParams() != null
57+
&& cps.getRequestParams() instanceof HttpParamsNames) {
58+
names.addAll(((HttpParamsNames) cps.getOverrideParams()).getNames());
59+
}
60+
} else {
61+
HttpParamsNames params = (HttpParamsNames) request.getParams();
62+
names = params.getNames();
63+
}
64+
65+
Timber.v("<<<<<<<<<<<<<< REQUEST PARAMS >>>>>>>>>>>>");
66+
for (String name : names) {
67+
Timber.v("Param >> %s: %s", name, request.getParams().getParameter(name));
68+
}
69+
Timber.v("<<<<<<<<<<<<<< REQUEST PARAMS >>>>>>>>>>>>");
70+
}
71+
72+
/**
73+
* Log all headers from a HTTPRequest
74+
* @param request
75+
*/
76+
private static void logRequestHeaders(HttpRequest request) {
77+
Header[] headerFields = request.getAllHeaders();
78+
79+
Timber.v("<<<<<<<<<<<<<< HEADERS >>>>>>>>>>>>");
80+
for (int e = 0; e < request.getAllHeaders().length; e++) {
81+
Timber.v("Header >> %s: %s", headerFields[e].getName(), headerFields[e].getValue());
82+
}
83+
Timber.v("<<<<<<<<<<<<<< HEADERS >>>>>>>>>>>>");
84+
}
85+
}

0 commit comments

Comments
 (0)