in src/main/java/com/aliyun/openservices/log/response/GetLogsResponse.java [421:456]
public static GetLogsResponse deserializeFrom(ResponseMessage response, boolean deserialize) throws LogException {
byte[] rawData = response.GetRawBody();
Map<String, String> headers = response.getHeaders();
String compressType = headers.get(Consts.CONST_X_SLS_COMPRESSTYPE);
String rawSizeStr = headers.get(Consts.CONST_X_SLS_BODYRAWSIZE);
String requestId = response.getRequestId();
if (compressType != null && rawSizeStr != null) {
int rawSize = Integer.parseInt(rawSizeStr);
Consts.CompressType type = Consts.CompressType.fromString(compressType);
switch (type) {
case LZ4:
rawData = LZ4Encoder.decompressFromLhLz4Chunk(rawData, rawSize);
break;
case GZIP:
try {
rawData = GzipUtils.uncompress(rawData);
} catch (Exception ex) {
throw new LogException(ErrorCodes.BAD_RESPONSE, "Fail to uncompress GZIP data", requestId);
}
break;
default:
throw new LogException(ErrorCodes.BAD_RESPONSE, "The compress type is not supported: " + compressType, requestId);
}
}
try {
String data = new String(rawData, Consts.UTF_8_ENCODING);
if (deserialize) {
QueryResult result = new QueryResult();
result.deserializeFrom(data, requestId);
return new GetLogsResponse(response.getHeaders(), result);
}
return new GetLogsResponse(response.getHeaders(), data);
} catch (UnsupportedEncodingException ex) {
throw new LogException(ErrorCodes.ENCODING_EXCEPTION, ex.getMessage(), response.getRequestId());
}
}