110 lines
3.6 KiB
Plaintext
110 lines
3.6 KiB
Plaintext
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);
|
|
}
|
|
}
|
|
|
|
}
|