summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJoey Grover <joeygrover@gmail.com>2017-05-16 22:08:07 +0100
committerGitHub <noreply@github.com>2017-05-16 22:08:07 +0100
commit0dd722c1fb1b95190e0e4481d6d5fffb7ef6e599 (patch)
tree17d4930a14a441af5fa6848e9b2d2fe27c964aa0
parentdd036925b17b18f11030bfa260db825ac29fea02 (diff)
parentae8a31b9356e0c4ccf6182251ff3a364c79dcf6e (diff)
downloadsdl_android-0dd722c1fb1b95190e0e4481d6d5fffb7ef6e599.tar.gz
Merge pull request #492 from smartdevicelink/bugfix/utest_Mime
bugfix/utest_Mime
-rw-r--r--sdl_android/src/main/java/com/smartdevicelink/trace/Mime.java71
1 files changed, 53 insertions, 18 deletions
diff --git a/sdl_android/src/main/java/com/smartdevicelink/trace/Mime.java b/sdl_android/src/main/java/com/smartdevicelink/trace/Mime.java
index 026f31721..799ac98f4 100644
--- a/sdl_android/src/main/java/com/smartdevicelink/trace/Mime.java
+++ b/sdl_android/src/main/java/com/smartdevicelink/trace/Mime.java
@@ -3,10 +3,18 @@ package com.smartdevicelink.trace;
// Borrowed from Dave Boll's infamous SdlLinkRelay.java
public class Mime {
-
- private static String m_base64Chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
-
+
+ private static final String BASE_64_CHARS = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
+
+ /**
+ * @param str A String to encode into base64 String.
+ * @return Base64 encoded String or a null String if input is null.
+ */
public static String base64Encode(String str) {
+ if(str == null){
+ return null;
+ }
+
String b64String = "";
try {
byte[] strBytes = str.getBytes("US-ASCII");
@@ -17,49 +25,76 @@ public class Mime {
return b64String;
}
+ /**
+ * @param bytesToEncode A byte array to encode into base64 String.
+ * @return Base64 encoded String or a null String if input array is null.
+ */
public static String base64Encode(byte bytesToEncode[]) {
- return base64Encode(bytesToEncode, 0, bytesToEncode.length);
+ if(bytesToEncode != null){
+ return base64Encode(bytesToEncode, 0, bytesToEncode.length);
+ }
+ return null;
}
+ /**
+ * @param bytesToEncode A byte array to encode into base64 String.
+ * @param offset Offset to begin at
+ * @param length Length to read
+ * @return Base64 encoded String or a null String if input array is null or the input range is out of bounds.
+ */
public static String base64Encode(byte bytesToEncode[], int offset, int length) {
+ if (bytesToEncode == null || bytesToEncode.length < length || bytesToEncode.length < offset + length) {
+ return null;
+ }
+
StringBuilder sb = new StringBuilder();
- int idxin = 0;
- int b64idx = 0;
+ int idxin = 0;
+ int b64idx = 0;
- for (idxin=offset;idxin < offset + length;idxin++) {
- switch ((idxin-offset) % 3) {
+ for (idxin = offset; idxin < offset + length; idxin++) {
+ switch ((idxin - offset) % 3) {
case 0:
b64idx = (bytesToEncode[idxin] >> 2) & 0x3f;
break;
case 1:
b64idx = (bytesToEncode[idxin] >> 4) & 0x0f;
- b64idx |= ((bytesToEncode[idxin-1] << 4)& 0x30);
+ b64idx |= ((bytesToEncode[idxin - 1] << 4) & 0x30);
break;
case 2:
b64idx = (bytesToEncode[idxin] >> 6) & 0x03;
- b64idx |= ((bytesToEncode[idxin-1] << 2)& 0x3c);
- sb.append(m_base64Chars.charAt(b64idx));
+ b64idx |= ((bytesToEncode[idxin - 1] << 2) & 0x3c);
+ sb.append(getBase64Char(b64idx));
b64idx = bytesToEncode[idxin] & 0x3f;
break;
}
- sb.append(m_base64Chars.charAt(b64idx));
+ sb.append(getBase64Char(b64idx));
}
- switch ((idxin-offset) % 3) {
+ switch ((idxin - offset) % 3) {
case 0:
break;
case 1:
- b64idx = (bytesToEncode[idxin-1] << 4) & 0x30;
- sb.append(m_base64Chars.charAt(b64idx));
+ b64idx = (bytesToEncode[idxin - 1] << 4) & 0x30;
+ sb.append(getBase64Char(b64idx));
sb.append("==");
break;
case 2:
- b64idx = ((bytesToEncode[idxin-1] << 2)& 0x3c);
- sb.append(m_base64Chars.charAt(b64idx));
+ b64idx = ((bytesToEncode[idxin - 1] << 2) & 0x3c);
+ sb.append(getBase64Char(b64idx));
sb.append('=');
break;
- }
+ }
+
return sb.toString();
+
+ }
+
+ private static char getBase64Char(int b64idx){
+ if(b64idx >= 0 && b64idx < BASE_64_CHARS.length()) {
+ return BASE_64_CHARS.charAt(b64idx);
+ }else{
+ return 0x20;
+ }
}
} \ No newline at end of file