Skip to content

Commit 31b88b0

Browse files
authored
Merge pull request #412 from YangSen-qn/upload_gzip
version 8: uplog gzip
2 parents 732b81c + 4c5aa24 commit 31b88b0

File tree

5 files changed

+149
-13
lines changed

5 files changed

+149
-13
lines changed

library/library.iml

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -31,16 +31,16 @@
3131
<output-test url="file://$MODULE_DIR$/build/intermediates/javac/debugUnitTest/classes" />
3232
<exclude-output />
3333
<content url="file://$MODULE_DIR$">
34-
<sourceFolder url="file://$MODULE_DIR$/build/generated/renderscript_source_output_dir/debug/compileDebugRenderscript/out" isTestSource="false" generated="true" />
35-
<sourceFolder url="file://$MODULE_DIR$/build/generated/source/buildConfig/debug" isTestSource="false" generated="true" />
36-
<sourceFolder url="file://$MODULE_DIR$/build/generated/aidl_source_output_dir/debug/compileDebugAidl/out" isTestSource="false" generated="true" />
3734
<sourceFolder url="file://$MODULE_DIR$/build/generated/ap_generated_sources/debug/out" isTestSource="false" generated="true" />
35+
<sourceFolder url="file://$MODULE_DIR$/build/generated/aidl_source_output_dir/debug/compileDebugAidl/out" isTestSource="false" generated="true" />
36+
<sourceFolder url="file://$MODULE_DIR$/build/generated/source/buildConfig/debug" isTestSource="false" generated="true" />
37+
<sourceFolder url="file://$MODULE_DIR$/build/generated/renderscript_source_output_dir/debug/compileDebugRenderscript/out" isTestSource="false" generated="true" />
3838
<sourceFolder url="file://$MODULE_DIR$/build/generated/res/rs/debug" type="java-resource" generated="true" />
3939
<sourceFolder url="file://$MODULE_DIR$/build/generated/res/resValues/debug" type="java-resource" generated="true" />
4040
<sourceFolder url="file://$MODULE_DIR$/build/generated/ap_generated_sources/debugAndroidTest/out" isTestSource="true" generated="true" />
4141
<sourceFolder url="file://$MODULE_DIR$/build/generated/aidl_source_output_dir/debugAndroidTest/compileDebugAndroidTestAidl/out" isTestSource="true" generated="true" />
42-
<sourceFolder url="file://$MODULE_DIR$/build/generated/renderscript_source_output_dir/debugAndroidTest/compileDebugAndroidTestRenderscript/out" isTestSource="true" generated="true" />
4342
<sourceFolder url="file://$MODULE_DIR$/build/generated/source/buildConfig/androidTest/debug" isTestSource="true" generated="true" />
43+
<sourceFolder url="file://$MODULE_DIR$/build/generated/renderscript_source_output_dir/debugAndroidTest/compileDebugAndroidTestRenderscript/out" isTestSource="true" generated="true" />
4444
<sourceFolder url="file://$MODULE_DIR$/build/generated/res/rs/androidTest/debug" type="java-test-resource" generated="true" />
4545
<sourceFolder url="file://$MODULE_DIR$/build/generated/res/resValues/androidTest/debug" type="java-test-resource" generated="true" />
4646
<sourceFolder url="file://$MODULE_DIR$/build/generated/ap_generated_sources/debugUnitTest/out" isTestSource="true" generated="true" />
Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
package com.qiniu.android;
2+
3+
import com.qiniu.android.utils.GZipUtil;
4+
import java.util.Arrays;
5+
6+
public class GZipTest extends BaseTest {
7+
8+
public void testGZipString(){
9+
10+
String string = null;
11+
12+
byte[] gzip = GZipUtil.gZip(string);
13+
assertTrue(gzip == null);
14+
15+
string = "";
16+
gzip = GZipUtil.gZip(string);
17+
assertTrue(Arrays.equals(gzip, string.getBytes()));
18+
19+
20+
string = "ABCDEFG";
21+
gzip = GZipUtil.gZip(string);
22+
23+
byte[] gUnzip = GZipUtil.gUnzip(gzip);
24+
String stringGUnzip = new String(gUnzip);
25+
26+
assertTrue(string.equals(stringGUnzip));
27+
}
28+
29+
public void testGZipByte(){
30+
31+
byte[] bytes = null;
32+
33+
byte[] gzip = GZipUtil.gZip(bytes);
34+
assertTrue(gzip == null);
35+
36+
bytes = new byte[0];
37+
gzip = GZipUtil.gZip(bytes);
38+
assertTrue(Arrays.equals(bytes, gzip));
39+
40+
41+
String string = "ABCDEFG";
42+
bytes = string.getBytes();
43+
gzip = GZipUtil.gZip(bytes);
44+
45+
byte[] gUnzip = GZipUtil.gUnzip(gzip);
46+
String stringGUnzip = new String(gUnzip);
47+
48+
assertTrue(string.equals(stringGUnzip));
49+
}
50+
}

library/src/main/java/com/qiniu/android/collect/UploadInfoReporter.java

Lines changed: 16 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111

1212
import org.json.JSONObject;
1313

14+
import java.io.ByteArrayOutputStream;
1415
import java.io.File;
1516
import java.io.FileNotFoundException;
1617
import java.io.FileOutputStream;
@@ -191,22 +192,29 @@ private byte[] getLogData(){
191192
return null;
192193
}
193194

194-
long length = recorderTempFile.length();
195+
int fileSize = (int)recorderTempFile.length();
195196
RandomAccessFile randomAccessFile = null;
196197
byte[] data = null;
197198
try {
198199
randomAccessFile = new RandomAccessFile(recorderTempFile, "r");
199-
data = new byte[(int)length];
200-
randomAccessFile.read(data);
200+
ByteArrayOutputStream out = new ByteArrayOutputStream(fileSize);
201+
int len = 0;
202+
byte[] buff = new byte[fileSize];
203+
while ((len = randomAccessFile.read(buff)) >= 0){
204+
out.write(buff, 0, len);
205+
}
206+
data = out.toByteArray();
201207
} catch (FileNotFoundException ignored) {
202208
} catch (IOException e) {
203209
data = null;
210+
} finally {
211+
if (randomAccessFile != null){
212+
try {
213+
randomAccessFile.close();
214+
} catch (IOException e){}
215+
}
204216
}
205-
if (randomAccessFile != null){
206-
try {
207-
randomAccessFile.close();
208-
} catch (IOException e){}
209-
}
217+
210218
return data;
211219
}
212220

library/src/main/java/com/qiniu/android/http/request/RequestTransaction.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
import com.qiniu.android.storage.UpToken;
1212
import com.qiniu.android.storage.UploadOptions;
1313
import com.qiniu.android.utils.Crc32;
14+
import com.qiniu.android.utils.GZipUtil;
1415
import com.qiniu.android.utils.LogUtil;
1516
import com.qiniu.android.utils.StringUtils;
1617
import com.qiniu.android.utils.UrlSafeBase64;
@@ -352,7 +353,7 @@ public boolean shouldRetry(ResponseInfo responseInfo, JSONObject response) {
352353
return !responseInfo.isOK();
353354
}
354355
};
355-
regionRequest.post("/log/4", isAsync, logData, header, shouldRetryHandler, null, new HttpRegionRequest.RequestCompleteHandler() {
356+
regionRequest.post("/log/4?compressed=gzip", isAsync, GZipUtil.gZip(logData), header, shouldRetryHandler, null, new HttpRegionRequest.RequestCompleteHandler() {
356357
@Override
357358
public void complete(ResponseInfo responseInfo, UploadRegionRequestMetrics requestMetrics, JSONObject response) {
358359
completeHandler.complete(responseInfo, requestMetrics, response);
Lines changed: 77 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,77 @@
1+
package com.qiniu.android.utils;
2+
3+
import java.io.ByteArrayInputStream;
4+
import java.io.ByteArrayOutputStream;
5+
import java.io.File;
6+
import java.io.IOException;
7+
import java.io.RandomAccessFile;
8+
import java.util.zip.GZIPInputStream;
9+
import java.util.zip.GZIPOutputStream;
10+
11+
public class GZipUtil {
12+
13+
public static byte[] gZip(String string){
14+
if (string == null){
15+
return null;
16+
}
17+
return gZip(string.getBytes());
18+
}
19+
20+
public static byte[] gZip(byte[] bytes){
21+
if (bytes == null){
22+
return null;
23+
}
24+
if (bytes.length == 0){
25+
return bytes;
26+
}
27+
28+
ByteArrayOutputStream out = new ByteArrayOutputStream();
29+
GZIPOutputStream gzip = null;
30+
try {
31+
gzip = new GZIPOutputStream(out);
32+
gzip.write(bytes);
33+
} catch (IOException e){
34+
} finally {
35+
if (gzip != null){
36+
try {
37+
gzip.close();
38+
} catch (IOException e){
39+
}
40+
}
41+
}
42+
43+
return out.toByteArray();
44+
}
45+
46+
public static byte[] gUnzip(byte[] bytes) {
47+
if (bytes == null){
48+
return null;
49+
}
50+
if (bytes.length == 0){
51+
return bytes;
52+
}
53+
54+
ByteArrayOutputStream out = new ByteArrayOutputStream();
55+
ByteArrayInputStream in = new ByteArrayInputStream(bytes);
56+
57+
GZIPInputStream gunzip = null;
58+
try {
59+
gunzip = new GZIPInputStream(in);
60+
byte[] buffer = new byte[256];
61+
int n;
62+
while ((n = gunzip.read(buffer)) >= 0) {
63+
out.write(buffer, 0, n);
64+
}
65+
} catch (IOException e) {
66+
} finally {
67+
if (gunzip != null) {
68+
try {
69+
gunzip.close();
70+
} catch (IOException e) {
71+
}
72+
}
73+
}
74+
75+
return out.toByteArray();
76+
}
77+
}

0 commit comments

Comments
 (0)