Skip to content

Commit 55fba6d

Browse files
refactor: Replace APM API that uses reflection by a package private API
1 parent e8b313d commit 55fba6d

File tree

3 files changed

+207
-170
lines changed

3 files changed

+207
-170
lines changed

android/build.gradle

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,9 +16,17 @@ rootProject.allprojects {
1616
repositories {
1717
google()
1818
mavenCentral()
19+
maven {
20+
url "https://mvn.instabug.com/nexus/repository/instabug-internal/"
21+
credentials {
22+
username "instabug"
23+
password System.getenv("INSTABUG_REPOSITORY_PASSWORD")
24+
}
25+
}
1926
}
2027
}
2128

29+
2230
apply plugin: 'com.android.library'
2331

2432
android {
@@ -44,11 +52,10 @@ android {
4452
}
4553

4654
dependencies {
47-
api 'com.instabug.library:instabug:14.3.0'
55+
api 'com.instabug.library:instabug:14.3.0.6752106-SNAPSHOT'
4856
testImplementation 'junit:junit:4.13.2'
4957
testImplementation "org.mockito:mockito-inline:3.12.1"
5058
testImplementation "io.mockk:mockk:1.13.13"
51-
5259
}
5360

5461
// add upload_symbols task
Lines changed: 120 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,120 @@
1+
package com.instabug.apm.networking;
2+
3+
4+
import androidx.annotation.NonNull;
5+
6+
import com.instabug.apm.networking.mapping.NetworkRequestAttributes;
7+
import com.instabug.apm.networkinterception.cp.APMCPNetworkLog;
8+
9+
import org.json.JSONObject;
10+
11+
import java.util.HashMap;
12+
import java.util.Map;
13+
14+
public class ApmNetworkLoggerHelper {
15+
16+
/// Log network request to the Android SDK using a package private API [APMNetworkLogger.log]
17+
static public void log(@NonNull Map<String, Object> data) {
18+
try {
19+
APMNetworkLogger apmNetworkLogger = new APMNetworkLogger();
20+
final String requestUrl = (String) data.get("url");
21+
final String requestBody = (String) data.get("requestBody");
22+
final String responseBody = (String) data.get("responseBody");
23+
final String requestMethod = (String) data.get("method");
24+
//--------------------------------------------
25+
final String requestContentType = (String) data.get("requestContentType");
26+
final String responseContentType = (String) data.get("responseContentType");
27+
//--------------------------------------------
28+
final long requestBodySize = ((Number) data.get("requestBodySize")).longValue();
29+
final long responseBodySize = ((Number) data.get("responseBodySize")).longValue();
30+
//--------------------------------------------
31+
final String errorDomain = (String) data.get("errorDomain");
32+
final Integer statusCode = (Integer) data.get("responseCode");
33+
final long requestDuration = ((Number) data.get("duration")).longValue() / 1000;
34+
final long requestStartTime = ((Number) data.get("startTime")).longValue() * 1000;
35+
final String requestHeaders = (new JSONObject((HashMap<String, String>) data.get("requestHeaders"))).toString(4);
36+
final String responseHeaders = (new JSONObject((HashMap<String, String>) data.get("responseHeaders"))).toString(4);
37+
final String errorMessage;
38+
39+
if (errorDomain.equals("")) {
40+
errorMessage = null;
41+
} else {
42+
errorMessage = errorDomain;
43+
}
44+
//--------------------------------------------------
45+
String gqlQueryName = null;
46+
if (data.containsKey("gqlQueryName")) {
47+
gqlQueryName = (String) data.get("gqlQueryName");
48+
}
49+
String serverErrorMessage = "";
50+
if (data.containsKey("serverErrorMessage")) {
51+
serverErrorMessage = (String) data.get("serverErrorMessage");
52+
}
53+
Boolean isW3cHeaderFound = null;
54+
Number partialId = null;
55+
Number networkStartTimeInSeconds = null;
56+
String w3CGeneratedHeader = null;
57+
String w3CCaughtHeader = null;
58+
59+
if (data.containsKey("isW3cHeaderFound")) {
60+
isW3cHeaderFound = (Boolean) data.get("isW3cHeaderFound");
61+
}
62+
63+
if (data.containsKey("partialId")) {
64+
65+
66+
partialId = ((Number) data.get("partialId"));
67+
68+
}
69+
if (data.containsKey("networkStartTimeInSeconds")) {
70+
networkStartTimeInSeconds = ((Number) data.get("networkStartTimeInSeconds"));
71+
}
72+
73+
if (data.containsKey("w3CGeneratedHeader")) {
74+
75+
w3CGeneratedHeader = (String) data.get("w3CGeneratedHeader");
76+
77+
78+
}
79+
if (data.containsKey("w3CCaughtHeader")) {
80+
w3CCaughtHeader = (String) data.get("w3CCaughtHeader");
81+
82+
}
83+
84+
NetworkRequestAttributes requestAttributes = new NetworkRequestAttributes(
85+
requestStartTime * 1000,
86+
requestDuration,
87+
requestHeaders,
88+
requestBody,
89+
requestBodySize,
90+
requestMethod,
91+
requestUrl,
92+
requestContentType,
93+
responseHeaders,
94+
responseBody,
95+
responseBodySize,
96+
statusCode,
97+
responseContentType,
98+
gqlQueryName,
99+
errorMessage,
100+
serverErrorMessage
101+
);
102+
103+
APMCPNetworkLog.W3CExternalTraceAttributes w3cExternalTraceAttributes =
104+
null;
105+
if (isW3cHeaderFound != null) {
106+
w3cExternalTraceAttributes = new APMCPNetworkLog.W3CExternalTraceAttributes(
107+
isW3cHeaderFound, partialId == null ? null : partialId.longValue(),
108+
networkStartTimeInSeconds == null ? null : networkStartTimeInSeconds.longValue(),
109+
w3CGeneratedHeader, w3CCaughtHeader
110+
111+
);
112+
}
113+
114+
apmNetworkLogger.log(requestAttributes, w3cExternalTraceAttributes);
115+
116+
} catch (Exception e) {
117+
e.printStackTrace();
118+
}
119+
}
120+
}

0 commit comments

Comments
 (0)