Skip to content

Commit deb6e5b

Browse files
author
maskara
committed
With http network logs
1 parent 25b4639 commit deb6e5b

File tree

2 files changed

+82
-0
lines changed

2 files changed

+82
-0
lines changed

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

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,13 @@
99
import android.text.TextUtils;
1010
import android.util.Log;
1111

12+
import com.facebook.stetho.okhttp3.StethoInterceptor;
13+
import com.facebook.stetho.urlconnection.StethoURLConnectionManager;
1214
import com.google.gson.Gson;
1315

16+
import org.apache.http.HttpException;
17+
import org.apache.http.HttpRequest;
18+
import org.apache.http.HttpRequestInterceptor;
1419
import org.apache.http.HttpResponse;
1520
import org.apache.http.conn.ClientConnectionManager;
1621
import org.apache.http.conn.scheme.PlainSocketFactory;
@@ -22,6 +27,7 @@
2227
import org.apache.http.impl.conn.tsccm.ThreadSafeClientConnManager;
2328
import org.apache.http.params.BasicHttpParams;
2429
import org.apache.http.params.CoreProtocolPNames;
30+
import org.apache.http.protocol.HttpContext;
2531
import org.apache.http.util.EntityUtils;
2632
import org.mediawiki.api.ApiResult;
2733
import org.mediawiki.api.MWApi;
@@ -35,6 +41,7 @@
3541
import java.text.ParseException;
3642
import java.text.SimpleDateFormat;
3743
import java.util.ArrayList;
44+
import java.util.Arrays;
3845
import java.util.Collections;
3946
import java.util.Date;
4047
import java.util.List;
@@ -85,6 +92,7 @@ public ApacheHttpClientMediaWikiApi(Context context,
8592
ClientConnectionManager cm = new ThreadSafeClientConnManager(params, schemeRegistry);
8693
params.setParameter(CoreProtocolPNames.USER_AGENT, getUserAgent());
8794
httpClient = new DefaultHttpClient(cm, params);
95+
httpClient.addRequestInterceptor(NetworkInterceptors.getHttpRequestInterceptor());
8896
api = new MWApi(apiURL, httpClient);
8997
wikidataApi = new MWApi(wikidatApiURL, httpClient);
9098
this.defaultPreferences = defaultPreferences;
Lines changed: 74 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,74 @@
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+
@NonNull
20+
public static HttpRequestInterceptor getHttpRequestInterceptor() {
21+
return (HttpRequest request, HttpContext httpContext) -> {
22+
Timber.v("<<<<<<<<<<<<<< START OF REQUEST LOGGING [%s] >>>>>>>>>>>>", request.getRequestLine().getUri());
23+
24+
Timber.v("Request line:\n %s", request.getRequestLine().toString());
25+
logRequestParams(request);
26+
logRequestHeaders(request);
27+
Timber.v("Protocol version:\n %s", request.getProtocolVersion());
28+
29+
Timber.v("<<<<<<<<<<<<<< END OF REQUEST LOGGING [%s] >>>>>>>>>>>>", request.getRequestLine().getUri());
30+
};
31+
}
32+
33+
private static void logRequestParams(HttpRequest request) {
34+
Set<String> names = new HashSet<>();
35+
if (request.getParams() instanceof ClientParamsStack) {
36+
ClientParamsStack cps = (ClientParamsStack) request.getParams();
37+
if (cps.getApplicationParams() != null
38+
&& cps.getRequestParams() instanceof HttpParamsNames) {
39+
names.addAll(((HttpParamsNames) cps.getApplicationParams()).getNames());
40+
}
41+
if (cps.getClientParams() != null
42+
&& cps.getClientParams() instanceof HttpParamsNames) {
43+
names.addAll(((HttpParamsNames) cps.getClientParams()).getNames());
44+
}
45+
if (cps.getRequestParams() != null
46+
&& cps.getRequestParams() instanceof HttpParamsNames) {
47+
names.addAll(((HttpParamsNames) cps.getRequestParams()).getNames());
48+
}
49+
if (cps.getOverrideParams() != null
50+
&& cps.getRequestParams() instanceof HttpParamsNames) {
51+
names.addAll(((HttpParamsNames) cps.getOverrideParams()).getNames());
52+
}
53+
} else {
54+
HttpParamsNames params = (HttpParamsNames) request.getParams();
55+
names = params.getNames();
56+
}
57+
58+
Timber.v("<<<<<<<<<<<<<< REQUEST PARAMS >>>>>>>>>>>>");
59+
for (String name : names) {
60+
Timber.v("Param >> %s: %s", name, request.getParams().getParameter(name));
61+
}
62+
Timber.v("<<<<<<<<<<<<<< REQUEST PARAMS >>>>>>>>>>>>");
63+
}
64+
65+
private static void logRequestHeaders(HttpRequest request) {
66+
Header[] headerFields = request.getAllHeaders();
67+
68+
Timber.v("<<<<<<<<<<<<<< HEADERS >>>>>>>>>>>>");
69+
for (int e = 0; e < request.getAllHeaders().length; e++) {
70+
Timber.v("Header >> %s: %s", headerFields[e].getName(), headerFields[e].getValue());
71+
}
72+
Timber.v("<<<<<<<<<<<<<< HEADERS >>>>>>>>>>>>");
73+
}
74+
}

0 commit comments

Comments
 (0)