Skip to content

Commit ed07128

Browse files
authored
Handle invalid server URL (#95)
* Handle invalid server URL * Use Assert null
1 parent b4a4f97 commit ed07128

File tree

3 files changed

+31
-6
lines changed

3 files changed

+31
-6
lines changed

backtrace-library/src/androidTest/java/backtraceio/library/BacktraceCredentialsTest.java

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,11 @@
11
package backtraceio.library;
22

33
import static org.junit.Assert.assertEquals;
4+
import static org.junit.Assert.assertNull;
5+
import static org.junit.Assert.assertTrue;
46

57
import android.net.Uri;
8+
69
import androidx.test.ext.junit.runners.AndroidJUnit4;
710

811
import org.junit.Test;
@@ -76,4 +79,16 @@ public void createBacktraceCredentialsWithLegacyUriAndGetSubmissionToken() {
7679
BacktraceCredentials backtraceCredentials = new BacktraceCredentials(Uri.parse(legacyUrl));
7780
assertEquals(fakeToken, backtraceCredentials.getSubmissionToken());
7881
}
82+
83+
@Test
84+
public void generateEmptyTokenForInvalidSubmissionUrl() {
85+
BacktraceCredentials backtraceCredentials = new BacktraceCredentials("https://submit.backtrace.io/");
86+
assertNull(backtraceCredentials.getSubmissionToken());
87+
}
88+
89+
@Test
90+
public void generateEmptyTokenForInvalidLegacyUrl() {
91+
BacktraceCredentials backtraceCredentials = new BacktraceCredentials("https://universe.sp.backtrace.io/");
92+
assertNull(backtraceCredentials.getSubmissionToken());
93+
}
7994
}

backtrace-library/src/main/java/backtraceio/library/BacktraceCredentials.java

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -118,10 +118,19 @@ public String getSubmissionToken() {
118118
final int tokenLength = 64;
119119
final String tokenQueryParam = "token=";
120120
String submissionUrl = getSubmissionUrl().toString();
121+
final int tokenEndIndex = submissionUrl.lastIndexOf("/");
121122
if (submissionUrl.contains("submit.backtrace.io")) {
122-
return submissionUrl.substring(submissionUrl.lastIndexOf("/") - tokenLength, submissionUrl.lastIndexOf("/"));
123+
if (tokenEndIndex - tokenLength < 0) {
124+
return null;
125+
}
126+
return submissionUrl.substring(tokenEndIndex - tokenLength, tokenEndIndex);
127+
}
128+
final int tokenQueryParamStartIndex = submissionUrl.indexOf(tokenQueryParam);
129+
if (tokenQueryParamStartIndex == -1) {
130+
return null;
123131
}
124-
final int tokenQueryParamStartIndex = submissionUrl.indexOf(tokenQueryParam) + tokenQueryParam.length();
125-
return submissionUrl.substring(tokenQueryParamStartIndex, tokenQueryParamStartIndex + tokenLength);
132+
133+
final int tokenParamStartIndex = tokenQueryParamStartIndex + tokenQueryParam.length();
134+
return submissionUrl.substring(tokenParamStartIndex, tokenParamStartIndex + tokenLength);
126135
}
127136
}

backtrace-library/src/main/java/backtraceio/library/base/BacktraceBase.java

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -567,15 +567,16 @@ private OnServerResponseEventListener getDatabaseCallback(final BacktraceDatabas
567567
return new OnServerResponseEventListener() {
568568
@Override
569569
public void onEvent(BacktraceResult backtraceResult) {
570-
if (customCallback != null) {
571-
customCallback.onEvent(backtraceResult);
572-
}
573570
if (record != null) {
574571
record.close();
575572
}
576573
if (backtraceResult != null && backtraceResult.status == BacktraceResultStatus.Ok) {
577574
database.delete(record);
578575
}
576+
577+
if (customCallback != null) {
578+
customCallback.onEvent(backtraceResult);
579+
}
579580
}
580581
};
581582
}

0 commit comments

Comments
 (0)