/**
* $id$
* Copyright 2011-2012 Renren Inc. All rights reserved.
*/
package com.renren.api.connect.android.status;
import android.os.Bundle;
import android.os.Parcel;
import android.os.Parcelable;
import com.renren.api.connect.android.common.RequestParam;
import com.renren.api.connect.android.exception.RenrenError;
import com.renren.api.connect.android.exception.RenrenException;
/**
* 人人网开放平台Status.set状态请求接口
*
* @author Shaofeng Wang (shaofeng.wang@renren-inc.com)
*
*/
public class StatusSetRequestParam extends RequestParam implements Parcelable{
/**
* 请求的api
*/
private static final String METHOD = "status.set";
/**
* 一条人人状态的字符长度上限
* 由140字扩展至240
*/
public static final int MAX_LENGTH = 240;
/**
* 状态的label,一般用来作为在Bundle等对象中使用时的key值
*/
public static final String STATUS_LABEL = "status_set_request_param";
/**
* 状态文本信息
*/
private String status;
public StatusSetRequestParam(String status) {
this.status = status;
}
public StatusSetRequestParam(Parcel in) {
status = in.readString();
}
public String getStatus() {
return status;
}
public void setStatus(String status) {
this.status = status;
}
/**
* 根据状态的长度上限对状态进行截断
* @return
* 在长度上限范围内的状态。若传入的status为空,则返回null
*/
public StatusSetRequestParam trim() {
if(status == null) {
return null;
}
if(status.length() > StatusSetRequestParam.MAX_LENGTH) {
status = status.substring(0, StatusSetRequestParam.MAX_LENGTH);
}
return new StatusSetRequestParam(status);
}
@Override
public int describeContents() {
return 0;
}
@Override
public void writeToParcel(Parcel dest, int flags) {
if(status != null) {
dest.writeString(status);
}
}
public static final Parcelable.Creator<StatusSetRequestParam> CREATOR
= new Parcelable.Creator<StatusSetRequestParam>() {
public StatusSetRequestParam createFromParcel(Parcel in) {
return new StatusSetRequestParam(in);
}
public StatusSetRequestParam[] newArray(int size) {
return new StatusSetRequestParam[size];
}
};
@Override
public Bundle getParams() throws RenrenException {
if (status == null || status.length() == 0) {
String errorMsg = "Cannot send null status.";
throw new RenrenException(
RenrenError.ERROR_CODE_NULL_PARAMETER, errorMsg,
errorMsg);
}
if (status.length() > MAX_LENGTH) {
String errorMsg = "The length of the status should be smaller than "
+ StatusSetRequestParam.MAX_LENGTH + " characters.";
throw new RenrenException(
RenrenError.ERROR_CODE_PARAMETER_EXTENDS_LIMIT, errorMsg,
errorMsg);
}
Bundle params = new Bundle();
params.putString("method", METHOD);
params.putString("status", status);
return params;
}
}