/*
* Copyright (C) 2010-2013 The SINA WEIBO Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.sina.weibo.sdk.openapi.legacy;
import android.content.Context;
import android.graphics.Bitmap;
import android.text.TextUtils;
import com.sina.weibo.sdk.auth.Oauth2AccessToken;
import com.sina.weibo.sdk.net.RequestListener;
import com.sina.weibo.sdk.net.WeiboParameters;
import com.sina.weibo.sdk.openapi.AbsOpenAPI;
/**
* 该类封装了微博接口。
* 详情请参考<a href="http://t.cn/8F3e7SE">微博接口</a>
*
* @author SINA
* @date 2014-03-03
*/
public class StatusesAPI extends AbsOpenAPI {
/** 过滤类型ID,0:全部、1:原创、2:图片、3:视频、4:音乐 */
public static final int FEATURE_ALL = 0;
public static final int FEATURE_ORIGINAL = 1;
public static final int FEATURE_PICTURE = 2;
public static final int FEATURE_VIDEO = 3;
public static final int FEATURE_MUSICE = 4;
/** 作者筛选类型,0:全部、1:我关注的人、2:陌生人 */
public static final int AUTHOR_FILTER_ALL = 0;
public static final int AUTHOR_FILTER_ATTENTIONS = 1;
public static final int AUTHOR_FILTER_STRANGER = 2;
/** 来源筛选类型,0:全部、1:来自微博的评论、2:来自微群的评论 */
public static final int SRC_FILTER_ALL = 0;
public static final int SRC_FILTER_WEIBO = 1;
public static final int SRC_FILTER_WEIQUN = 2;
/** 原创筛选类型,0:全部微博、1:原创的微博。 */
public static final int TYPE_FILTER_ALL = 0;
public static final int TYPE_FILTER_ORIGAL = 1;
/** 获取类型,1:微博、2:评论、3:私信,默认为1。 */
public static final int TYPE_STATUSES = 1;
public static final int TYPE_COMMENTS = 2;
public static final int TYPE_MESSAGE = 3;
/** 标识是否在转发的同时发表评论,0:否、1:评论给当前微博、2:评论给原微博、3:都评论,默认为0 */
public static final int COMMENTS_NONE = 0;
public static final int COMMENTS_CUR_STATUSES = 1;
public static final int COMMENTS_RIGAL_STATUSES = 2;
public static final int COMMENTS_BOTH = 3;
/** 表情类别,face:普通表情、ani:魔法表情、cartoon:动漫表情,默认为face。 */
public static final String EMOTION_TYPE_FACE = "face";
public static final String EMOTION_TYPE_ANI = "ani";
public static final String EMOTION_TYPE_CARTOON = "cartoon";
/** 语言类别,cnname:简体、twname:繁体,默认为cnname。 */
public static final String LANGUAGE_CNNAME = "cnname";
public static final String LANGUAGE_TWNAME = "twname";
public StatusesAPI(Context context, String appKey, Oauth2AccessToken accessToken) {
super(context, appKey, accessToken);
}
private static final String SERVER_URL_PRIX = API_SERVER + "/statuses";
/**
* 返回最新的公共微博。
*
* @param count 单页返回的记录条数,默认为50
* @param page 返回结果的页码,默认为1
* @param base_app 是否只获取当前应用的数据。false为否(所有数据),true为是(仅当前应用),默认为false
* @param listener 异步请求回调接口
*/
public void publicTimeline(int count, int page, boolean base_app, RequestListener listener) {
WeiboParameters params = new WeiboParameters(mAppKey);
params.put("count", count);
params.put("page", page);
params.put("base_app", base_app ? 1 : 0);
requestAsync(SERVER_URL_PRIX + "/public_timeline.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 base_app 是否只获取当前应用的数据。false为否(所有数据),true为是(仅当前应用),默认为false
* @param featureType 过滤类型ID,0:全部、1:原创、2:图片、3:视频、4:音乐,默认为0。
* <li> {@link #FEATURE_ALL}
* <li> {@link #FEATURE_ORIGINAL}
* <li> {@link #FEATURE_PICTURE}
* <li> {@link #FEATURE_VIDEO}
* <li> {@link #FEATURE_MUSICE}
* @param trim_user 返回值中user字段开关,false:返回完整user字段、true:user字段仅返回user_id,默认为false
* @param listener 异步请求回调接口
*/
public void friendsTimeline(long since_id, long max_id, int count, int page, boolean base_app, int featureType,
boolean trim_user, RequestListener listener) {
WeiboParameters params = buildTimeLineWithAppTrim(since_id, max_id, count, page, base_app, trim_user, featureType);
requestAsync(SERVER_URL_PRIX + "/friends_timeline.json", params, HTTPMETHOD_GET, listener);
}
/**
* 获取当前登录用户及其所关注用户的最新微博的ID。
*
* @param since_id 若指定此参数,则返回ID比since_id大的微博(即比since_id时间晚的微博),默认为0
* @param max_id 若指定此参数,则返回ID小于或等于max_id的微博,默认为0
* @param count 单页返回的记录条数,默认为50
* @param page 返回结果的页码,默认为1
* @param base_app 是否只获取当前应用的数据。false为否(所有数据),true为是(仅当前应用),默认为false
* @param featureType 过滤类型ID,0:全部、1:原创、2:图片、3:视频、4:音乐,默认为0
* <li> {@link #FEATURE_ALL}
* <li> {@link #FEATURE_ORIGINAL}
* <li> {@link #FEATURE_PICTURE}
* <li> {@link #FEATURE_VIDEO}
* <li> {@link #FEATURE_MUSICE}
* @param listener 异步请求回调接口
*/
public void friendsTimelineIds(long since_id, long max_id, int count, int page, boolean base_app, int featureType,
RequestListener listener) {
WeiboParameters params = buildTimeLineWithApp(since_id, max_id, count, page, base_app, featureType);
requestAsync(SERVER_URL_PRIX + "/friends_timeline/ids.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 base_app 是否只获取当前应用的数据。false为否(所有数据),true为是(仅当前应用),默认为false
* @param featureType 过滤类型ID,0:全部、1:原创、2:图片、3:视频、4:音乐,默认为0
* <li> {@link #FEATURE_ALL}
* <li> {@link #FEATURE_ORIGINAL}
* <li> {@link #FEATURE_PICTURE}
* <li> {@link #FEATURE_VIDEO}
* <li> {@link #FEATURE_MUSICE}
* @param trim_user 返回值中user字段开关,false:返回完整user字段、true:user字段仅返回user_id,默认为false
* @param listener 异步请求回调接口
*/
public void homeTimeline(long since_id, long max_id, int count, int page, boolean base_app, int featureType,
boolean trim_user, RequestListener listener) {
WeiboParameters params = buildTimeLineWithAppTrim(since_id, max_id, count, page, base_app, trim_user,
featureType);
requestAsync(SERVER_URL_PRIX + "/home_timeline.json", params, HTTPMETHOD_GET, listener);
}
/**
* 获取某个用户最新发表的微博列表。
*
* @param uid 需要查询的用户ID
* @param since_id 若指定此参数,则返回ID比since_id大的微博(即比since_id时间晚的微博),默认为0
* @param max_id 若指定此参数,则返回ID小于或等于max_id的微博,默认为0
* @param count 单页返回的记录条数,默认为50
* @param page 返回结果的页码,默认为1
* @param base_app 是否只获取当前应用的数据。false为否(所有数据),true为是(仅当前应用),默认为false
* @param featureType 过滤类型ID,0:全部、1:原创、2:图片、3:视频、4:音乐,默认为0
* <li> {@link #FEATURE_ALL}
* <li> {@link #FEATURE_ORIGINAL}
* <li> {@link #FEATURE_PICTURE}
* <li> {@link #FEATURE_VIDEO}
* <li> {@link #FEATURE_MUSICE}
* @param trim_user 返回值中user字段开关,false:返回完整user字段、true:user字段仅返回user_id,默认为false
* @param listener 异步请求回调接口
*/
public void userTimeline(long uid, long since_id, long max_id, int count, int page, boolean base_app,
int featureType, boolean trim_user, RequestListener listener) {
WeiboParameters params = buildTimeLineWithAppTrim(since_id, max_id, count, page, base_app, trim_user,
featureType);
params.put("uid", uid);
requestAsync(SERVER_URL_PRIX + "/user_timeline.json", params, HTTPMETHOD_GET, listener);
}
/**
* 获取某个用户最新发表的微博列表。
*
* @param screen_name 需要查询的用户昵称
* @param since_id 若指定此参数,则返回ID比since_id大的微博(即比since_id时间晚的微博),默认为0
* @param max_id 若指定此参数,则返回ID小于或等于max_id的微博,默认为0
* @param count 单页返回的记录条数,默认为50
* @param page 返回结果的页码,默认为1
* @param base_app 是否只获取当前应用的数据。false为否(所有数据),true为是(仅当前应用),默认为false
* @param featureType 过滤类型ID,0:全部、1:原创、2:图片、3:视频、4:音乐,默认为0
* <li> {@link #FEATURE_ALL}
* <li> {@link #FEATURE_ORIGINAL}
* <li> {@link #FEATURE_PICTURE}
* <li> {@link #FEATURE_VIDEO}
* <li> {@link #FEATURE_MUSICE}
* @param trim_user 返回值中user字段开关,false:返回完整user字段、true:user字段仅返回user_id,默认为false
* @param listener 异步请求回调接口
*/
public void userTimeline(String screen_name, long since_id, long max_id, int count, int page, boolean base_app,
int featureType, boolean trim_user, RequestListener listener) {
WeiboParameters params = buildTimeLineWithAppTrim(since_id, max_id, count, page, base_app, trim_user,
featureType);
params.put("screen_name", screen_name);
requestAsync(SERVER_URL_PRIX + "/user_timeline.json", params, HTTPMETHOD_GET, listener);
}
/**
* 获取当前用户最新发表的微博列表
*
* @param screen_name 需要查询的用户昵称
* @param since_id 若指定此参数,则返回ID比since_id大的微博(即比since_id时间晚的微博),默认为0
* @param max_id 若指定此参数,则返回ID小于或等于max_id的微博,默认为0
* @param count 单页返回的记录条数,默认为50
* @param page 返回结果的页码,默认为1
* @param base_app 是否只获取当前应用的数据。false为否(所有数据),true为是(仅当前应用),默认为false
* @param featureType 过滤类型ID,0:全部、1:原创、2:图片、3:视频、4:音乐,默认为0
* <li> {@link #FEATURE_ALL}
* <li> {@link #FEATURE_ORIGINAL}
* <li> {@link #FEATURE_PICTURE}
* <li> {@link #FEATURE_VIDEO}
* <li> {@link #FEATURE_MUSICE}
* @param trim_user 返回值中user字段开关,false:返回完整user字段、true:user字段仅返回user_id,默认为false
* @param listener 异步请求回调接口
*/
public void userTimeline(long since_id, long max_id, int count, int page, boolean base_app, int featureType,
boolean trim_user, RequestListener listener) {
WeiboParameters params = buildTimeLineWithAppTrim(since_id, max_id, count, page, base_app, trim_user,
featureType);
requestAsync(SERVER_URL_PRIX + "/user_timeline.json", params, HTTPMETHOD_GET, listener);
}
/**
* 获取用户发布的微博的ID
*
* @param uid 需要查询的用户ID
* @param since_id 若指定此参数,则返回ID比since_id大的微博(即比since_id时间晚的微博),默认为0
* @param max_id 若指定此参数,则返回ID小于或等于max_id的微博,默认为0
* @param count 单页返回的记录条数,默认为50
* @param page 返回结果的页码,默认为1
* @param base_app 是否只获取当前应用的数据。false为否(所有数据),true为是(仅当前应用),默认为false
* @param featureType 过滤类型ID,0:全部、1:原创、2:图片、3:视频、4:音乐,默认为0
* <li> {@link #FEATURE_ALL}
* <li> {@link #FEATURE_ORIGINAL}
* <li> {@link #FEATURE_PICTURE}
* <li> {@link #FEATURE_VIDEO}
* <li> {@link #FEATURE_MUSICE}
* @param listener 异步请求回调接口
*/
public void userTimelineIds(long uid, long since_id, long max_id, int count, int page, boolean base_app,
int featureType, RequestListener listener) {
WeiboParameters params = buildTimeLineWithApp(since_id, max_id, count, page, base_app, featureType);
params.put("uid", uid);
requestAsync(SERVER_URL_PRIX + "/user_timeline/ids.json", params, HTTPMETHOD_GET, listener);
}
/**
* 获取用户发布的微博的ID
*
* @param screen_name 需要查询的用户昵称
* @param since_id 若指定此参数,则返回ID比since_id大的微博(即比since_id时间晚的微博),默认为0
* @param max_id 若指定此参数,则返回ID小于或等于max_id的微博,默认为0
* @param count 单页返回的记录条数,默认为50
* @param page 返回结果的页码,默认为1
* @param base_app 是否只获取当前应用的数据。false为否(所有数据),true为是(仅当前应用),默认为false
* @param featureType 过滤类型ID,0:全部、1:原创、2:图片、3:视频、4:音乐,默认为0
* <li> {@link #FEATURE_ALL}
* <li> {@link #FEATURE_ORIGINAL}
* <li> {@link #FEATURE_PICTURE}
* <li> {@link #FEATURE_VIDEO}
* <li> {@link #FEATURE_MUSICE}
* @param listener 异步请求回调接口
*/
public void userTimelineIds(String screen_name, long since_id, long max_id, int count, int page, boolean base_app,
int featureType, RequestListener listener) {
WeiboParameters params = buildTimeLineWithApp(since_id, max_id, count, page, base_app, featureType);
params.put("screen_name", screen_name);
requestAsync(SERVER_URL_PRIX + "/user_timeline/ids.json", params, HTTPMETHOD_GET, listener);
}
/**
* 获取指定微博的转发微博列表
*
* @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 authorType 作者筛选类型,0:全部、1:我关注的人、2:陌生人,默认为0。可为以下几种:
* <li> {@link #AUTHOR_FILTER_ALL}
* <li> {@link #AUTHOR_FILTER_ATTENTIONS}
* <li> {@link #AUTHOR_FILTER_STRANGER}
* @param listener 异步请求回调接口
*/
public void repostTimeline(long id, long since_id, long max_id, int count, int page, int authorType,
RequestListener listener) {
WeiboParameters params = buildTimeLineBase(since_id, max_id, count, page);
params.put("id", id);
params.put("filter_by_author", authorType);
requestAsync(SERVER_URL_PRIX + "/repost_timeline.json", params, HTTPMETHOD_GET, listener);
}
/**
* 获取一条原创微博的最新转发微博的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 authorType 作者筛选类型,0:全部、1:我关注的人、2:陌生人,默认为0。可为以下几种:
* <li> {@link #AUTHOR_FILTER_ALL}
* <li> {@link #AUTHOR_FILTER_ATTENTIONS}
* <li> {@link #AUTHOR_FILTER_STRANGER}
* @param listener 异步请求回调接口
*/
public void repostTimelineIds(long id, long since_id, long max_id, int count, int page, int authorType,
RequestListener listener) {
WeiboParameters params = buildTimeLineBase(since_id, max_id, count, page);
params.put("id", id);
params.put("filter_by_author", authorType);
requestAsync(SERVER_URL_PRIX + "/repost_timeline/ids.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 listener 异步请求回调接口
*/
public void repostByMe(long since_id, long max_id, int count, int page, RequestListener listener) {
WeiboParameters params = buildTimeLineBase(since_id, max_id, count, page);
requestAsync(SERVER_URL_PRIX + "/repost_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 authorType 作者筛选类型,0:全部、1:我关注的人、2:陌生人,默认为0。可为以下几种:
* <li> {@link #AUTHOR_FILTER_ALL}
* <li> {@link #AUTHOR_FILTER_ATTENTIONS}
* <li> {@link #AUTHOR_FILTER_STRANGER}
* @param sourceType 来源筛选类型,0:全部、1:来自微博的评论、2:来自微群的评论。可分为以下几种:
* <li> {@link #SRC_FILTER_ALL}
* <li> {@link #SRC_FILTER_WEIBO}
* <li> {@link #SRC_FILTER_WEIQUN}
* @param filterType 原创筛选类型,0:全部微博、1:原创的微博,默认为0。可分为以下几种:
* <li> {@link #TYPE_FILTER_ALL}
* <li> {@link #TYPE_FILTER_ORIGAL}
* @param trim_user 返回值中user字段开关,false:返回完整user字段、true:user字段仅返回user_id,默认为false
* @param listener 异步请求回调接口
*/
public void mentions(long since_id, long max_id, int count, int page, int authorType, int sourceType,
int filterType, boolean trim_user, RequestListener listener) {
WeiboParameters params = buildTimeLineBase(since_id, max_id, count, page);
params.put("filter_by_author", authorType);
params.put("filter_by_source", sourceType);
params.put("filter_by_type", filterType);
params.put("trim_user", trim_user ? 1 : 0);
requestAsync(SERVER_URL_PRIX + "/mentions.json", params, HTTPMETHOD_GET, listener);
}
/**
* 获取@当前用户的最新微博的ID。
*
* @param since_id 若指定此参数,则返回ID比since_id大的微博(即比since_id时间晚的微博),默认为0
* @param max_id 若指定此参数,则返回ID小于或等于max_id的微博,默认为0
* @param count 单页返回的记录条数,默认为50
* @param page 返回结果的页码,默认为1
* @param authorType 作者筛选类型,0:全部、1:我关注的人、2:陌生人,默认为0。可为以下几种:
* <li> {@link #AUTHOR_FILTER_ALL}
* <li> {@link #AUTHOR_FILTER_ATTENTIONS}
* <li> {@link #AUTHOR_FILTER_STRANGER}
* @param sourceType 来源筛选类型,0:全部、1:来自微博的评论、2:来自微群的评论。可分为以下几种:
* <li> {@link #SRC_FILTER_ALL}
* <li> {@link #SRC_FILTER_WEIBO}
* <li> {@link #SRC_FILTER_WEIQUN}
* @param filterType 原创筛选类型,0:全部微博、1:原创的微博,默认为0。可分为以下几种:
* <li> {@link #TYPE_FILTER_ALL}
* <li> {@link #TYPE_FILTER_ORIGAL}
* @param listener 异步请求回调接口
*/
public void mentionsIds(long since_id, long max_id, int count, int page, int authorType, int sourceType,
int filterType, RequestListener listener) {
WeiboParameters params = buildTimeLineBase(since_id, max_id, count, page);
params.put("filter_by_author", authorType);
params.put("filter_by_source", sourceType);
params.put("filter_by_type", filterType);
requestAsync(SERVER_URL_PRIX + "/mentions/ids.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 base_app 是否只获取当前应用的数据。false为否(所有数据),true为是(仅当前应用),默认为false
* @param featureType 过滤类型ID,0:全部、1:原创、2:图片、3:视频、4:音乐,默认为0
* <li> {@link #FEATURE_ALL}
* <li> {@link #FEATURE_ORIGINAL}
* <li> {@link #FEATURE_PICTURE}
* <li> {@link #FEATURE_VIDEO}
* <li> {@link #FEATURE_MUSICE}
* @param trim_user 返回值中user字段开关,false:返回完整user字段、true:user字段仅返回user_id,默认为false
* @param listener 异步请求回调接口
*/
public void bilateralTimeline(long since_id, long max_id, int count, int page, boolean base_app, int featureType,
boolean trim_user, RequestListener listener) {
WeiboParameters params = buildTimeLineWithAppTrim(since_id, max_id, count, page, base_app, trim_user,
featureType);
requestAsync(SERVER_URL_PRIX + "/bilateral_timeline.json", params, HTTPMETHOD_GET, listener);
}
/**
* 根据微博ID获取单条微博内容。
*
* @param id 需要获取的微博ID
* @param listener 异步请求回调接口
*/
public void show(long id, RequestListener listener) {
WeiboParameters params = new WeiboParameters(mAppKey);
params.put("id", id);
requestAsync(SERVER_URL_PRIX + "/show.json", params, HTTPMETHOD_GET, listener);
}
/**
* 通过微博(评论、私信)ID获取其MID。
*
* @param ids 需要查询的微博(评论、私信)ID,最多不超过20个。
* @param type 获取类型,1:微博、2:评论、3:私信,默认为1。可为几下几种:
* <li> {@link #TYPE_STATUSES}
* <li> {@link #TYPE_COMMENTS}
* <li> {@link #TYPE_MESSAGE}
* @param listener 异步请求回调接口
*/
public void queryMID(long[] ids, int type, RequestListener listener) {
WeiboParameters params = new WeiboParameters(mAppKey);
if (1 == ids.length) {
params.put("id", ids[0]);
} else {
params.put("is_batch", 1);
StringBuilder strb = new StringBuilder();
for (long id : ids) {
strb.append(id).append(",");
}
strb.deleteCharAt(strb.length() - 1);
params.put("id", strb.toString());
}
params.put("type", type);
requestAsync(SERVER_URL_PRIX + "/querymid.json", params, HTTPMETHOD_GET, listener);
}
/**
* 通过微博(评论、私信)MID获取其ID,形如“3z4efAo4lk”的MID即为经过base62转换的MID。
*
* @param mids 需要查询的微博(评论、私信)MID,最多不超过20个
* @param type 获取类型,1:微博、2:评论、3:私信,默认为1。可为几下几种:
* <li> {@link #TYPE_STATUSES}
* <li> {@link #TYPE_COMMENTS}
* <li> {@link #TYPE_MESSAGE}
* @param inbox 仅对私信有效,当MID类型为私信时用此参数,0:发件箱、1:收件箱,默认为0
* @param isBase62 MID是否是base62编码,0:否、1:是,默认为0
* @param listener 异步请求回调接口
*/
public void queryID(String[] mids, int type, boolean inbox, boolean isBase62, RequestListener listener) {
WeiboParameters params = new WeiboParameters(mAppKey);
if (mids != null) {
if (1 == mids.length) {
params.put("mid", mids[0]);
} else {
params.put("is_batch", 1);
StringBuilder strb = new StringBuilder();
for (String mid : mids) {
strb.append(mid).append(",");
}
strb.deleteCharAt(strb.length() - 1);
params.put("mid", strb.toString());
}
}
params.put("type", type);
params.put("inbox", inbox ? 1 : 0);
params.put("isBase62", isBase62 ? 1 : 0);
requestAsync(SERVER_URL_PRIX + "/queryid.json", params, HTTPMETHOD_GET, listener);
}
/**
* 按天返回热门微博转发榜的微博列表。
*
* @param count 返回的记录条数,最大不超过50,默认为20
* @param base_app 是否只获取当前应用的数据。false为否(所有数据),true为是(仅当前应用),默认为false
* @param listener 异步请求回调接口
*/
public void hotRepostDaily(int count, boolean base_app, RequestListener listener) {
WeiboParameters params = buildHotParams(count, base_app);
requestAsync(SERVER_URL_PRIX + "/hot/repost_daily.json", params, HTTPMETHOD_GET, listener);
}
/**
* 按周返回热门微博转发榜的微博列表。
*
* @param count 返回的记录条数,最大不超过50,默认为20
* @param base_app 是否只获取当前应用的数据。false为否(所有数据),true为是(仅当前应用),默认为false
* @param listener 异步请求回调接口
*/
public void hotRepostWeekly(int count, boolean base_app, RequestListener listener) {
WeiboParameters params = buildHotParams(count, base_app);
requestAsync(SERVER_URL_PRIX + "/hot/repost_weekly.json", params, HTTPMETHOD_GET, listener);
}
/**
* 按天返回热门微博评论榜的微博列表。
*
* @param count 返回的记录条数,最大不超过50,默认为20
* @param base_app 是否只获取当前应用的数据。false为否(所有数据),true为是(仅当前应用),默认为false
* @param listener 异步请求回调接口
*/
public void hotCommentsDaily(int count, boolean base_app, RequestListener listener) {
WeiboParameters params = buildHotParams(count, base_app);
requestAsync(SERVER_URL_PRIX + "/hot/comments_daily.json", params, HTTPMETHOD_GET, listener);
}
/**
* 按周返回热门微博评论榜的微博列表。
*
* @param count 返回的记录条数,最大不超过50,默认为20
* @param base_app 是否只获取当前应用的数据。false为否(所有数据),true为是(仅当前应用),默认为false
* @param listener 异步请求回调接口
*/
public void hotCommentsWeekly(int count, boolean base_app, RequestListener listener) {
WeiboParameters params = buildHotParams(count, base_app);
requestAsync(SERVER_URL_PRIX + "/hot/comments_weekly.json", params, HTTPMETHOD_GET, listener);
}
/**
* 批量获取指定微博的转发数评论数。
*
* @param ids 需要获取数据的微博ID,最多不超过100个
* @param listener 异步请求回调接口
*/
public void count(String[] ids, RequestListener listener) {
WeiboParameters params = new WeiboParameters(mAppKey);
StringBuilder strb = new StringBuilder();
for (String id : ids) {
strb.append(id).append(",");
}
strb.deleteCharAt(strb.length() - 1);
params.put("ids", strb.toString());
requestAsync(SERVER_URL_PRIX + "/count.json", params, HTTPMETHOD_GET, listener);
}
/**
* 转发一条微博。
*
* @param id 要转发的微博ID
* @param status 添加的转发文本,内容不超过140个汉字,不填则默认为“转发微博”
* @param commentType 是否在转发的同时发表评论,0:否、1:评论给当前微博、2:评论给原微博、3:都评论,默认为0
* <li> {@link #COMMENTS_NONE}
* <li> {@link #COMMENTS_CUR_STATUSES}
* <li> {@link #COMMENTS_RIGAL_STATUSES}
* <li> {@link #COMMENTS_BOTH}
* @param listener 异步请求回调接口
*/
public void repost(long id, String status, int commentType, RequestListener listener) {
WeiboParameters params = new WeiboParameters(mAppKey);
params.put("id", id);
params.put("status", status);
params.put("is_comment", commentType);
requestAsync(SERVER_URL_PRIX + "/repost.json", params, HTTPMETHOD_POST, listener);
}
/**
* 根据微博ID删除指定微博。
*
* @param id 需要删除的微博ID
* @param listener 异步请求回调接口
*/
public void destroy(long id, RequestListener listener) {
WeiboParameters params = new WeiboParameters(mAppKey);
params.put("id", id);
requestAsync(SERVER_URL_PRIX + "/destroy.json", params, HTTPMETHOD_POST, listener);
}
/**
* 发布一条新微博(连续两次发布的微博不可以重复)。
*
* @param content 要发布的微博文本内容,内容不超过140个汉字
* @param lat 纬度,有效范围:-90.0到+90.0,+表示北纬,默认为0.0
* @param lon 经度,有效范围:-180.0到+180.0,+表示东经,默认为0.0
* @param listener 异步请求回调接口
*/
public void update(String content, String lat, String lon, RequestListener listener) {
WeiboParameters params = buildUpdateParams(content, lat, lon);
requestAsync(SERVER_URL_PRIX + "/update.json", params, HTTPMETHOD_POST, listener);
}
/**
* 上传图片并发布一条新微博,此方法会处理urlencode。
*
* @param content 要发布的微博文本内容,内容不超过140个汉字
* @param bitmap 要上传的图片,仅支持JPEG、GIF、PNG格式,图片大小小于5M
* @param lat 纬度,有效范围:-90.0到+90.0,+表示北纬,默认为0.0
* @param lon 经度,有效范围:-180.0到+180.0,+表示东经,默认为0.0
* @param listener 异步请求回调接口
*/
public void upload(String content, Bitmap bitmap, String lat, String lon, RequestListener listener) {
WeiboParameters params = buildUpdateParams(content, lat, lon);
params.put("pic", bitmap);
requestAsync(SERVER_URL_PRIX + "/upload.json", params, HTTPMETHOD_POST, listener);
}
/**
* 指定一个图片URL地址抓取后上传并同时发布一条新微博,此方法会处理URLencode。
*
* @param status 要发布的微博文本内容,内容不超过140个汉字
* @param imageUrl 图片的URL地址,必须以http开头
* @param pic_id 已经上传的图片pid,多个时使用英文半角逗号符分隔,最多不超过九张。 imageUrl 和 pic_id必选一个,两个参数都存在时,取picid参数的值为准
* @param lat 纬度,有效范围:-90.0到+90.0,+表示北纬,默认为0.0
* @param lon 经度,有效范围:-180.0到+180.0,+表示东经,默认为0.0
* @param listener 异步请求回调接口
*/
public void uploadUrlText(String status, String imageUrl, String pic_id, String lat, String lon,
RequestListener listener) {
WeiboParameters params = buildUpdateParams(status, lat, lon);
params.put("url", imageUrl);
params.put("pic_id", pic_id);
requestAsync(SERVER_URL_PRIX + "/upload_url_text.json", params, HTTPMETHOD_POST, listener);
}
/**
* 获取微博官方表情的详细信息。
*
* @param type 表情类别,表情类别,face:普通表情、ani:魔法表情、cartoon:动漫表情,默认为face。可为以下几种:
* <li> {@link #EMOTION_TYPE_FACE}
* <li> {@link #EMOTION_TYPE_ANI}
* <li> {@link #EMOTION_TYPE_CARTOON}
* @param language 语言类别,cnname:、twname:,默认为cnname。
* <li> {@link #LANGUAGE_CNNAME}
* <li> {@link #LANGUAGE_TWNAME}
* @param listener 异步请求回调接口
*/
public void emotions(String type, String language, RequestListener listener) {
WeiboParameters params = new WeiboParameters(mAppKey);
params.put("type", type);
params.put("language", language);
requestAsync(API_SERVER + "/emotions.json", params, HTTPMETHOD_GET, listener);
}
// 组装TimeLines的参数
private WeiboParameters buildTimeLineBase(long since_id, long max_id, int count, int page) {
WeiboParameters params = new WeiboParameters(mAppKey);
params.put("since_id", since_id);
params.put("max_id", max_id);
params.put("count", count);
params.put("page", page);
return params;
}
private WeiboParameters buildTimeLineWithApp(long since_id, long max_id, int count, int page, boolean base_app,
int featureType) {
WeiboParameters params = buildTimeLineBase(since_id, max_id, count, page);
params.put("feature", featureType);
params.put("base_app", base_app ? 1 : 0);
return params;
}
private WeiboParameters buildTimeLineWithAppTrim(long since_id, long max_id, int count, int page, boolean base_app,
boolean trim_user, int featureType) {
WeiboParameters params = buildTimeLineWithApp(since_id, max_id, count, page, base_app, featureType);
params.put("trim_user", trim_user ? 1 : 0);
return params;
}
private WeiboParameters buildHotParams(int count, boolean base_app) {
WeiboParameters params = new WeiboParameters(mAppKey);
params.put("count", count);
params.put("base_app", base_app ? 1 : 0);
return params;
}
// 组装微博请求参数
private WeiboParameters buildUpdateParams(String content, String lat, String lon) {
WeiboParameters params = new WeiboParameters(mAppKey);
params.put("status", content);
if (!TextUtils.isEmpty(lon)) {
params.put("long", lon);
}
if (!TextUtils.isEmpty(lat)) {
params.put("lat", lat);
}
return params;
}
}