package com.zenip.weibo.sdk.android.api;
import com.weibo.sdk.android.Oauth2AccessToken;
import com.weibo.sdk.android.WeiboParameters;
import com.weibo.sdk.android.net.RequestListener;
/**
* 此类封装了评论的接口,详情见<a href=
* "http://open.weibo.com/wiki/API%E6%96%87%E6%A1%A3_V2#.E8.AF.84.E8.AE.BA"
* >评论接口</a>
*
* @author xiaowei6@staff.sina.com.cn
*/
public class CommentsAPI extends WeiboAPI {
public CommentsAPI(Oauth2AccessToken accessToken) {
super(accessToken);
}
private static final String SERVER_URL_PRIX = API_SERVER + "/comments";
/**
* 根据微博ID返回某条微博的评论列表
*
* @param id 需要查询的微博ID。
* @param since_id 若指定此参数,则返回ID比since_id大的评论(即比since_id时间晚的评论),默认为0。
* @param max_id 若指定此参数,则返回ID小于或等于max_id的评论,默认为0。
* @param count 单页返回的记录条数,默认为50
* @param page 返回结果的页码,默认为1。
* @param filter_by_author 作者筛选类型,0:全部、1:我关注的人、2:陌生人,默认为0。
* @param listener
*/
public void show(long id, long since_id, long max_id, int count, int page,
AUTHOR_FILTER filter_by_author, RequestListener listener) {
WeiboParameters params = new WeiboParameters();
params.add("id", id);
params.add("since_id", since_id);
params.add("max_id", max_id);
params.add("count", count);
params.add("page", page);
params.add("filter_by_author", filter_by_author.ordinal());
requestAsync(SERVER_URL_PRIX + "/show.json", params, HTTPMETHOD_GET, listener);
}
/**
* 获取当前登录用户所发出的评论列表
*
* @param since_id 若指定此参数,则返回ID比since_id大的评论(即比since_id时间晚的评论),默认为0。
* @param max_id 若指定此参数,则返回ID小于或等于max_id的评论,默认为0。
* @param count 单页返回的记录条数,默认为50。
* @param page 返回结果的页码,默认为1。
* @param filter_by_source 来源筛选类型,0:全部、1:来自微博的评论、2:来自微群的评论,默认为0。
* @param listener
*/
public void byME(long since_id, long max_id, int count, int page, SRC_FILTER filter_by_source,
RequestListener listener) {
WeiboParameters params = new WeiboParameters();
params.add("since_id", since_id);
params.add("max_id", max_id);
params.add("count", count);
params.add("page", page);
params.add("filter_by_source", filter_by_source.ordinal());
requestAsync(SERVER_URL_PRIX + "/by_me.json", params, HTTPMETHOD_GET, listener);
}
/**
* 获取当前登录用户所接收到的评论列表
*
* @param since_id 若指定此参数,则返回ID比since_id大的评论(即比since_id时间晚的评论),默认为0。
* @param max_id 若指定此参数,则返回ID小于或等于max_id的评论,默认为0。
* @param count 单页返回的记录条数,默认为50。
* @param page 返回结果的页码,默认为1。
* @param filter_by_author 作者筛选类型,0:全部、1:我关注的人、2:陌生人,默认为0。
* @param filter_by_source 来源筛选类型,0:全部、1:来自微博的评论、2:来自微群的评论,默认为0。
* @param listener
*/
public void toME(long since_id, long max_id, int count, int page,
AUTHOR_FILTER filter_by_author, SRC_FILTER filter_by_source, RequestListener listener) {
WeiboParameters params = new WeiboParameters();
params.add("since_id", since_id);
params.add("max_id", max_id);
params.add("count", count);
params.add("page", page);
params.add("filter_by_author", filter_by_author.ordinal());
params.add("filter_by_source", filter_by_source.ordinal());
requestAsync(SERVER_URL_PRIX + "/to_me.json", params, HTTPMETHOD_GET, listener);
}
/**
* 获取当前登录用户的最新评论包括接收到的与发出的
*
* @param since_id 若指定此参数,则返回ID比since_id大的评论(即比since_id时间晚的评论),默认为0。
* @param max_id 若指定此参数,则返回ID小于或等于max_id的评论,默认为0。
* @param count 单页返回的记录条数,默认为50。
* @param page 返回结果的页码,默认为1。
* @param trim_user
* 返回值中user字段开关,false:返回完整user字段、true:user字段仅返回user_id,默认为false。
* @param listener
*/
public void timeline(long since_id, long max_id, int count, int page, boolean trim_user,
RequestListener listener) {
WeiboParameters params = new WeiboParameters();
params.add("since_id", since_id);
params.add("max_id", max_id);
params.add("count", count);
params.add("page", page);
if (trim_user) {
params.add("trim_user", 1);
} else {
params.add("trim_user", 0);
}
requestAsync(SERVER_URL_PRIX + "/timeline.json", params, HTTPMETHOD_GET, listener);
}
/**
* 获取最新的提到当前登录用户的评论,即@我的评论 若指定此参数,则返回ID比since_id大的评论(即比since_id时间晚的评论),默认为0。
*
* @param since_id 若指定此参数,则返回ID小于或等于max_id的评论,默认为0。
* @param max_id 若指定此参数,则返回ID小于或等于max_id的评论,默认为0。
* @param count 单页返回的记录条数,默认为50。
* @param page 返回结果的页码,默认为1。
* @param filter_by_author 作者筛选类型,0:全部、1:我关注的人、2:陌生人,默认为0。
* @param filter_by_source 来源筛选类型,0:全部、1:来自微博的评论、2:来自微群的评论,默认为0。
* @param listener
*/
public void mentions(long since_id, long max_id, int count, int page,
AUTHOR_FILTER filter_by_author, SRC_FILTER filter_by_source, RequestListener listener) {
WeiboParameters params = new WeiboParameters();
params.add("since_id", since_id);
params.add("max_id", max_id);
params.add("count", count);
params.add("page", page);
params.add("filter_by_author", filter_by_author.ordinal());
params.add("filter_by_source", filter_by_source.ordinal());
requestAsync(SERVER_URL_PRIX + "/mentions.json", params, HTTPMETHOD_GET, listener);
}
/**
* 根据评论ID批量返回评论信息
*
* @param cids 需要查询的批量评论ID数组,最大50。
* @param listener
*/
public void showBatch(long[] cids, RequestListener listener) {
WeiboParameters params = new WeiboParameters();
StringBuilder strb = new StringBuilder();
for (long cid : cids) {
strb.append(String.valueOf(cid)).append(",");
}
strb.deleteCharAt(strb.length() - 1);
params.add("cids", strb.toString());
requestAsync(SERVER_URL_PRIX + "/show_batch.json", params, HTTPMETHOD_GET, listener);
}
/**
* 对一条微博进行评论
*
* @param comment 评论内容,内容不超过140个汉字。
* @param id 需要评论的微博ID。
* @param comment_ori 当评论转发微博时,是否评论给原微博
* @param listener
*/
public void create(String comment, long id, boolean comment_ori, RequestListener listener) {
WeiboParameters params = new WeiboParameters();
params.add("comment", comment);
params.add("id", id);
if (comment_ori) {
params.add("comment_ori", 0);
} else {
params.add("comment_ori", 1);
}
requestAsync(SERVER_URL_PRIX + "/create.json", params, HTTPMETHOD_POST, listener);
}
/**
* 删除一条评论
*
* @param cid 要删除的评论ID,只能删除登录用户自己发布的评论。
* @param listener
*/
public void destroy(long cid, RequestListener listener) {
WeiboParameters params = new WeiboParameters();
params.add("cid", cid);
requestAsync(SERVER_URL_PRIX + "/destroy.json", params, HTTPMETHOD_POST, listener);
}
/**
* 根据评论ID批量删除评论
*
* @param ids 需要删除的评论ID数组,最多20个。
* @param listener
*/
public void destroyBatch(long[] ids, RequestListener listener) {
WeiboParameters params = new WeiboParameters();
StringBuilder strb = new StringBuilder();
for (long cid : ids) {
strb.append(String.valueOf(cid)).append(",");
}
strb.deleteCharAt(strb.length() - 1);
params.add("ids", strb.toString());
requestAsync(SERVER_URL_PRIX + "/sdestroy_batch.json", params, HTTPMETHOD_POST, listener);
}
/**
* 回复一条评论
*
* @param cid 需要回复的评论ID。
* @param id 需要评论的微博ID。
* @param comment 回复评论内容,内容不超过140个汉字。
* @param without_mention 回复中是否自动加入“回复@用户名”,true:是、false:否,默认为false。
* @param comment_ori 当评论转发微博时,是否评论给原微博,false:否、true:是,默认为false。
* @param listener
*/
public void reply(long cid, long id, String comment, boolean without_mention,
boolean comment_ori, RequestListener listener) {
WeiboParameters params = new WeiboParameters();
params.add("cid", cid);
params.add("id", id);
params.add("comment", comment);
if (without_mention) {
params.add("without_mention", 1);
} else {
params.add("without_mention", 0);
}
if (comment_ori) {
params.add("comment_ori", 1);
} else {
params.add("comment_ori", 0);
}
requestAsync(SERVER_URL_PRIX + "/reply.json", params, HTTPMETHOD_POST, listener);
}
}