Skip to content

Commit 93ee4e9

Browse files
Move android apm network log interceptor to RN side
1 parent da65249 commit 93ee4e9

File tree

1 file changed

+79
-0
lines changed

1 file changed

+79
-0
lines changed

android/src/main/java/com/instabug/reactlibrary/RNInstabugAPMModule.java

Lines changed: 79 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,23 +4,44 @@
44
import android.os.Handler;
55
import android.os.Looper;
66
import android.os.SystemClock;
7+
import android.util.Log;
78

89
import com.facebook.react.bridge.Callback;
910
import com.facebook.react.bridge.ReactApplicationContext;
1011
import com.facebook.react.bridge.ReactContextBaseJavaModule;
1112
import com.facebook.react.bridge.ReactMethod;
1213
import com.instabug.apm.APM;
1314
import com.instabug.apm.model.ExecutionTrace;
15+
import com.instabug.apm.networking.APMNetworkLogger;
1416
import com.instabug.bug.BugReporting;
1517
import com.instabug.chat.Chats;
1618
import com.instabug.library.Feature;
1719
import com.instabug.reactlibrary.utils.InstabugUtil;
1820
import com.instabug.reactlibrary.utils.MainThreadHandler;
1921

22+
import org.json.JSONException;
23+
import org.json.JSONObject;
24+
25+
import java.io.File;
26+
import java.lang.reflect.InvocationTargetException;
27+
import java.lang.reflect.Method;
28+
29+
import java.io.File;
30+
import java.lang.reflect.InvocationTargetException;
31+
import java.lang.reflect.Method;
32+
import java.util.ArrayList;
2033
import java.util.HashMap;
34+
import java.util.Iterator;
35+
import java.util.LinkedHashMap;
36+
import java.util.List;
37+
import java.util.Locale;
38+
import java.util.Map;
39+
import com.instabug.library.Platform;
2140

2241
import javax.annotation.Nonnull;
2342

43+
import static com.instabug.reactlibrary.utils.InstabugUtil.getMethod;
44+
2445
public class RNInstabugAPMModule extends ReactContextBaseJavaModule {
2546

2647
public RNInstabugAPMModule(ReactApplicationContext reactApplicationContext) {
@@ -221,4 +242,62 @@ public void run() {
221242
}
222243
});
223244
}
245+
246+
/**
247+
* Send Apm network log by Reflection
248+
*/
249+
@ReactMethod
250+
public void networkLog(String networkData) throws JSONException {
251+
try{
252+
APMNetworkLogger apmNetworkLogger = new APMNetworkLogger();
253+
JSONObject jsonObject = new JSONObject(networkData);
254+
final String requestUrl = (String) jsonObject.get("url");
255+
final String requestBody = (String) jsonObject.get("requestBody");
256+
final String responseBody = (String) jsonObject.get("responseBody");
257+
final String requestMethod = (String) jsonObject.get("method");
258+
//--------------------------------------------
259+
final String requestContentType = (String) jsonObject.get("requestContentType");
260+
final String responseContentType = (String) jsonObject.get("contentType");
261+
//--------------------------------------------
262+
final long requestBodySize = ((Number) jsonObject.get("requestBodySize")).longValue();
263+
final long responseBodySize = ((Number) jsonObject.get("responseBodySize")).longValue();
264+
//--------------------------------------------
265+
final String errorDomain = (String) jsonObject.get("errorDomain");
266+
final Integer statusCode = (Integer) jsonObject.get("responseCode");
267+
final long requestDuration = ((Number) jsonObject.get("duration")).longValue();
268+
final long requestStartTime = ((Number) jsonObject.get("startTime")).longValue() * 1000;
269+
final String requestHeaders = (String) jsonObject.get("requestHeaders").toString();
270+
final String responseHeaders = (String) jsonObject.get("responseHeaders").toString();
271+
final String errorMessage;
272+
if(errorDomain.equals("")) {
273+
errorMessage = null;
274+
} else {
275+
errorMessage = errorDomain;
276+
}
277+
//--------------------------------------------
278+
String gqlQueryName = null;
279+
if(jsonObject.has("gqlQueryName")){
280+
gqlQueryName = (String) jsonObject.get("gqlQueryName");
281+
}
282+
final String serverErrorMessage = (String) jsonObject.get("serverErrorMessage");
283+
284+
try {
285+
Method method = getMethod(Class.forName("com.instabug.apm.networking.APMNetworkLogger"), "log", long.class, long.class, String.class, String.class, long.class, String.class, String.class, String.class, String.class, String.class, long.class, int.class, String.class, String.class, String.class, String.class);
286+
if (method != null) {
287+
method.invoke(apmNetworkLogger, requestStartTime, requestDuration, requestHeaders, requestBody, requestBodySize, requestMethod, requestUrl, requestContentType, responseHeaders, responseBody, responseBodySize, statusCode, responseContentType, errorMessage, gqlQueryName, serverErrorMessage);
288+
} else {
289+
Log.e("IB-CP-Bridge", "apmNetworkLogByReflection was not found by reflection");
290+
}
291+
} catch (ClassNotFoundException e) {
292+
e.printStackTrace();
293+
} catch (IllegalAccessException e) {
294+
e.printStackTrace();
295+
} catch (InvocationTargetException e) {
296+
e.printStackTrace();
297+
}
298+
}
299+
catch(Exception e) {
300+
e.printStackTrace();
301+
}
302+
}
224303
}

0 commit comments

Comments
 (0)