package net.dev123.mblog.sina;
import java.text.ParseException;
import net.dev123.commons.util.ParseUtil;
import net.dev123.exception.ExceptionCode;
import net.dev123.exception.LibException;
import net.dev123.mblog.entity.RateLimitStatus;
import org.json.JSONException;
import org.json.JSONObject;
/**
* SinaRateLimitStatusAdaptor
*
* @version
* @author 马庆升
* @time 2010-8-30 下午04:36:35
*/
public class SinaRateLimitStatusAdaptor {
/** 请求超限后的错误描述字符串 */
public static final String ERROR = "Error: user requests out of rate limit!";
/**
* 从JSON字符串创建RateLimitStatus对象
*
* @param jsonString
* json字符串
* @return RateLimitStatus对象
* @throws LibException
*/
public static RateLimitStatus createRateLimitStatus(String jsonString) throws LibException {
try {
return createRateLimitStatus(new JSONObject(jsonString));
} catch (JSONException e) {
throw new LibException(ExceptionCode.JSON_PARSE_ERROR);
}
}
/**
* 从JSON对象创建RateLimitStatus对象,包级别访问控制
*
* @param json
* JSON对象
* @return RateLimitStatus对象
* @throws LibException
*/
static RateLimitStatus createRateLimitStatus(JSONObject json) throws LibException {
try {
RateLimitStatus rateLimitStatus = new RateLimitStatus();
rateLimitStatus.setHourlyLimit(ParseUtil.getInt("hourly_limit", json));
rateLimitStatus.setRemainingHits(ParseUtil.getInt("remaining_hits", json));
rateLimitStatus.setResetTime(ParseUtil.getDate("reset_time", json, "EEE MMM d HH:mm:ss Z yyyy"));
rateLimitStatus.setResetTimeInSeconds(ParseUtil.getInt("reset_time_in_seconds", json));
rateLimitStatus.setSecondsUntilReset((int) ((rateLimitStatus.getResetTime().getTime() - System
.currentTimeMillis()) / 1000));
return rateLimitStatus;
} catch (ParseException e) {
throw new LibException(ExceptionCode.DATE_PARSE_ERROR);
}
}
}