初始化
This commit is contained in:
@@ -0,0 +1,109 @@
|
||||
package com.ifish.jpush.common.resp;
|
||||
|
||||
import com.google.gson.Gson;
|
||||
import com.google.gson.JsonArray;
|
||||
import com.google.gson.JsonElement;
|
||||
import com.google.gson.JsonObject;
|
||||
import com.google.gson.JsonParser;
|
||||
import com.google.gson.JsonSyntaxException;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
public class ResponseWrapper {
|
||||
private static final Logger LOG = LoggerFactory.getLogger(ResponseWrapper.class);
|
||||
private static final int RESPONSE_CODE_NONE = -1;
|
||||
|
||||
private static Gson _gson = new Gson();
|
||||
private static JsonParser jsonParser = new JsonParser();
|
||||
|
||||
public int responseCode = RESPONSE_CODE_NONE;
|
||||
public String responseContent;
|
||||
|
||||
public ErrorObject error; // error for non-200 response, used by new API
|
||||
|
||||
public int rateLimitQuota;
|
||||
public int rateLimitRemaining;
|
||||
public int rateLimitReset;
|
||||
|
||||
public void setRateLimit(String quota, String remaining, String reset) {
|
||||
if (null == quota) return;
|
||||
|
||||
try {
|
||||
rateLimitQuota = Integer.parseInt(quota);
|
||||
rateLimitRemaining = Integer.parseInt(remaining);
|
||||
rateLimitReset = Integer.parseInt(reset);
|
||||
|
||||
LOG.debug("JPush API Rate Limiting params - quota:" + quota + ", remaining:" + remaining + ", reset:" + reset);
|
||||
} catch (NumberFormatException e) {
|
||||
LOG.debug("Unexpected - parse rate limiting headers error.");
|
||||
}
|
||||
}
|
||||
|
||||
public void setErrorObject() {
|
||||
error = new ErrorObject();
|
||||
error.error = new ErrorEntity();
|
||||
try {
|
||||
JsonElement element = jsonParser.parse(responseContent);
|
||||
JsonObject errorObj = null;
|
||||
if( element instanceof JsonArray) {
|
||||
JsonArray array = (JsonArray) element;
|
||||
for(int i = 0; i < array.size(); i++) {
|
||||
if(array.get(i).getAsJsonObject().has("error")) {
|
||||
errorObj = array.get(i).getAsJsonObject();
|
||||
break;
|
||||
}
|
||||
}
|
||||
} else if(element instanceof JsonObject) {
|
||||
errorObj = (JsonObject) element;
|
||||
} else {
|
||||
// nothing
|
||||
}
|
||||
if(null != errorObj) {
|
||||
JsonObject errorMsg = errorObj;
|
||||
if(errorObj.has("msg_id")) {
|
||||
error.msg_id = errorObj.get("msg_id").getAsLong();
|
||||
}
|
||||
if (errorObj.has("error")) {
|
||||
errorMsg = (JsonObject) errorObj.get("error");
|
||||
}
|
||||
if(errorMsg.has("code")) {
|
||||
error.error.code = errorMsg.get("code").getAsInt();
|
||||
}
|
||||
if(errorMsg.has("message")) {
|
||||
error.error.message = errorMsg.get("message").getAsString();
|
||||
}
|
||||
}
|
||||
} catch(JsonSyntaxException e) {
|
||||
LOG.error("Unexpected - responseContent:" + responseContent, e);
|
||||
} catch (Exception e) {
|
||||
LOG.error("Unexpected - responseContent:" + responseContent, e);
|
||||
}
|
||||
}
|
||||
|
||||
public boolean isServerResponse() {
|
||||
if (responseCode / 100 == 2) return true;
|
||||
if (responseCode > 0 && null != error && error.error.code > 0) return true;
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return _gson.toJson(this);
|
||||
}
|
||||
|
||||
public static class ErrorObject {
|
||||
public long msg_id;
|
||||
public ErrorEntity error;
|
||||
}
|
||||
|
||||
public static class ErrorEntity {
|
||||
public int code;
|
||||
public String message;
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return _gson.toJson(this);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user