/*
* 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.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/8F3geol">评论接口</a>
*
* @author SINA
* @date 2014-03-03
*/
public class GroupAPI 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;
public GroupAPI(Context context, String appKey, Oauth2AccessToken accessToken) {
super(context, appKey, accessToken);
}
private static final String SERVER_URL_PRIX = API_SERVER + "/friendships/groups";
/**
* 获取当前登陆用户好友分组列表。
*
* @param listener 异步请求回调接口
*/
public void groups(RequestListener listener) {
WeiboParameters params = new WeiboParameters(mAppKey);
requestAsync(SERVER_URL_PRIX + ".json", params, HTTPMETHOD_GET, listener);
}
/**
* 获取当前登录用户某一好友分组的微博列表。
*
* @param list_id 需要查询的好友分组ID,建议使用返回值里的idstr,当查询的为私有分组时,则当前登录用户必须为其所有者
* @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:音乐
* {@link #FEATURE_ALL}
* {@link #FEATURE_ORIGINAL}
* {@link #FEATURE_PICTURE}
* {@link #FEATURE_VIDEO}
* {@link #FEATURE_MUSICE}
* @param listener 异步请求回调接口
*/
public void timeline(long list_id, long since_id, long max_id, int count, int page, boolean base_app,
int featureType, RequestListener listener) {
WeiboParameters params = new WeiboParameters(mAppKey);
params.put("list_id", list_id);
params.put("since_id", since_id);
params.put("max_id", max_id);
params.put("count", count);
params.put("page", page);
params.put("base_app", base_app ? 1 : 0);
params.put("feature", featureType);
requestAsync(SERVER_URL_PRIX + "/timeline.json", params, HTTPMETHOD_GET, listener);
}
// TODO 获取当前登陆用户某一好友分组的微博ID列表
public void timelineIds() {
}
/**
* 获取某一好友分组下的成员列表。
*
* @param list_id 获取某一好友分组下的成员列表
* @param count 单页返回的记录条数,默认为50,最大不超过200
* @param cursor 分页返回结果的游标,下一页用返回值里的next_cursor,上一页用previous_cursor,默认为0
* @param listener 异步请求回调接口
*/
public void members(long list_id, int count, int cursor, RequestListener listener) {
WeiboParameters params = new WeiboParameters(mAppKey);
params.put("list_id", list_id);
params.put("count", count);
params.put("cursor", cursor);
requestAsync(SERVER_URL_PRIX + "/members.json", params, HTTPMETHOD_GET, listener);
}
// TODO 获取某一好友分组下的成员列表的ID
public void membersIds() {
}
// TODO 批量取好友分组成员的分组说明
public void memberDescriptionPatch() {
}
/**
* 判断某个用户是否是当前登录用户指定好友分组内的成员。
*
* @param uid 需要判断的用户的UID
* @param list_id 指定的当前用户的好友分组ID,建议使用返回值里的idstr
* @param listener 异步请求回调接口
*/
public void isMember(long uid, long list_id, RequestListener listener) {
WeiboParameters params = buildeMembersParams(list_id, uid);
requestAsync(SERVER_URL_PRIX + "/is_member.json", params, HTTPMETHOD_GET, listener);
}
// TODO 批量获取某些用户在指定用户的好友分组中的收录信息
public void listed() {
};
/**
* 获取当前登陆用户某个分组的详细信息。
*
* @param list_id 需要查询的好友分组ID,建议使用返回值里的idstr
* @param listener 异步请求回调接口
*/
public void showGroup(long list_id, RequestListener listener) {
WeiboParameters params = new WeiboParameters(mAppKey);
params.put("list_id", list_id);
requestAsync(SERVER_URL_PRIX + "/show.json", params, HTTPMETHOD_GET, listener);
}
/**
* 批量获取好友分组的详细信息。
*
* @param list_ids 需要查询的好友分组ID,建议使用返回值里的idstr,多个之间用逗号分隔,每次不超过20个
* @param uids 参数list_ids所指的好友分组的所有者UID,多个之间用逗号分隔,每次不超过20个,需与list_ids一一对应
* @param listener 异步请求回调接口
*/
public void showGroupBatch(String list_ids, long uids, RequestListener listener) {
WeiboParameters params = buildeMembersParams(Long.valueOf(list_ids), uids);
requestAsync(SERVER_URL_PRIX + "/show_batch.json", params, HTTPMETHOD_GET, listener);
}
/**
* 创建好友分组。
*
* @param name 要创建的好友分组的名称,不超过10个汉字,20个半角字符
* @param description 要创建的好友分组的描述,不超过70个汉字,140个半角字符
* @param tags 要创建的好友分组的标签,多个之间用逗号分隔,最多不超过10个,每个不超过7个汉字,14个半角字符
* @param listener 异步请求回调接口
*/
public void create(String name, String description, String tags, RequestListener listener) {
WeiboParameters params = new WeiboParameters(mAppKey);
params.put("name", name);
if (TextUtils.isEmpty(description) == false) {
params.put("description", description);
}
if (TextUtils.isEmpty(tags) == false) {
params.put("tags", tags);
}
requestAsync(SERVER_URL_PRIX + "/create.json", params, HTTPMETHOD_POST, listener);
}
/**
* 更新好友分组。
*
* @param list_id 需要更新的好友分组ID,建议使用返回值里的idstr,只能更新当前登录用户自己创建的分组
* @param name 要创建的好友分组的名称,不超过10个汉字,20个半角字符
* @param description 要创建的好友分组的描述,不超过70个汉字,140个半角字符
* @param tags 要创建的好友分组的标签,多个之间用逗号分隔,最多不超过10个,每个不超过7个汉字,14个半角字符
* @param listener 异步请求回调接口
*/
public void update(long list_id, String name, String description, String tags, RequestListener listener) {
WeiboParameters params = new WeiboParameters(mAppKey);
params.put("list_id", list_id);
if (TextUtils.isEmpty(name) == false) {
params.put("name", name);
}
if (TextUtils.isEmpty(description) == false) {
params.put("description", description);
}
if (TextUtils.isEmpty(tags) == false) {
params.put("tags", tags);
}
requestAsync(SERVER_URL_PRIX + "/update.json", params, HTTPMETHOD_POST, listener);
}
/**
* 删除好友分组。
*
* @param list_id 要删除的好友分组ID,建议使用返回值里的idstr
* @param listener 异步请求回调接口
*/
public void deleteGroup(long list_id, RequestListener listener) {
WeiboParameters params = new WeiboParameters(mAppKey);
params.put("list_id", list_id);
requestAsync(SERVER_URL_PRIX + "/destroy.json", params, HTTPMETHOD_POST, listener);
}
/**
* 添加关注用户到好友分组。
*
* @param list_id 好友分组ID,建议使用返回值里的idstr
* @param uid 好友分组ID,建议使用返回值里的idstr
* @param listener 异步请求回调接口
*/
public void addMember(long list_id, long uid, RequestListener listener) {
WeiboParameters params = buildeMembersParams(list_id, uid);
requestAsync(SERVER_URL_PRIX + "/members/add.json", params, HTTPMETHOD_POST, listener);
}
/**
* 批量添加用户到好友分组。
*
* @param list_id 好友分组ID,建议使用返回值里的idstr
* @param uids 需要添加的用户的UID,多个之间用逗号分隔,最多不超过30个
* @param group_descriptions 添加成员的分组说明,每个说明最多8个汉字,16个半角字符,多个需先URLencode,然后再用半角逗号分隔,最多不超过30个,且需与uids参数一一对应
* @param listener 异步请求回调接口
*/
public void addMemberBatch(long list_id, String uids, String group_descriptions, RequestListener listener) {
WeiboParameters params = buildeMembersParams(list_id, Long.valueOf(uids));
params.put("group_descriptions", group_descriptions);
requestAsync(SERVER_URL_PRIX + "/members/add_batch.json", params, HTTPMETHOD_POST, listener);
}
/**
* 更新好友分组中成员的分组说明。
*
* @param list_id 好友分组ID,建议使用返回值里的idstr
* @param uid 需要更新分组成员说明的用户的UID
* @param group_description 需要更新的分组成员说明,每个说明最多8个汉字,16个半角字符,需要URLencode
* @param listener 异步请求回调接口
*/
public void updateMembers(long list_id, long uid, String group_description, RequestListener listener) {
WeiboParameters params = buildeMembersParams(list_id, uid);
if (TextUtils.isDigitsOnly(group_description) == false) {
params.put("group_description", group_description);
}
requestAsync(SERVER_URL_PRIX + "/members/update.json", params, HTTPMETHOD_POST, listener);
}
/**
* 删除好友分组内的关注用户。
*
* @param list_id 好友分组ID,建议使用返回值里的idstr
* @param uid 需要删除的用户的UID
* @param listener 异步请求回调接口
*/
public void deleteMembers(long list_id, long uid, RequestListener listener) {
WeiboParameters params = buildeMembersParams(list_id, uid);
requestAsync(SERVER_URL_PRIX + "/members/destroy.json", params, HTTPMETHOD_POST, listener);
}
/**
* 调整当前登录用户的好友分组顺序。
*
* @param list_ids 调整好顺序后的分组ID列表,以逗号分隔,例:57,38,表示57排第一、38排第二,以此类推
* @param count 好友分组数量,必须与用户所有的分组数一致、与分组ID的list_id个数一致
* @param listener 异步请求回调接口
*/
public void order(String list_ids, int count, RequestListener listener) {
WeiboParameters params = new WeiboParameters(mAppKey);
params.put("list_id", list_ids);
params.put("count", count);
requestAsync(SERVER_URL_PRIX + "/order.json", params, HTTPMETHOD_POST, listener);
}
private WeiboParameters buildeMembersParams(long list_id, long uid){
WeiboParameters params = new WeiboParameters(mAppKey);
params.put("list_id", list_id);
params.put("uid", uid);
return params;
}
}