/* * 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; import android.content.Context; import android.util.SparseArray; import com.sina.weibo.sdk.auth.Oauth2AccessToken; import com.sina.weibo.sdk.net.RequestListener; import com.sina.weibo.sdk.net.WeiboParameters; /** * 该类封装了用户接口。 * 详情请参考<a href="http://t.cn/8F1n1eF">用户接口</a> * * @author SINA * @since 2014-03-03 */ public class UsersAPI extends AbsOpenAPI { private static final int READ_USER = 0; private static final int READ_USER_BY_DOMAIN = 1; private static final int READ_USER_COUNT = 2; private static final String API_BASE_URL = API_SERVER + "/users"; private static final SparseArray<String> sAPIList = new SparseArray<String>(); static { sAPIList.put(READ_USER, API_BASE_URL + "/show.json"); sAPIList.put(READ_USER_BY_DOMAIN, API_BASE_URL + "/domain_show.json"); sAPIList.put(READ_USER_COUNT, API_BASE_URL + "/counts.json"); } public UsersAPI(Context context, String appKey, Oauth2AccessToken accessToken) { super(context, appKey, accessToken); } /** * 根据用户ID获取用户信息。 * * @param uid 需要查询的用户ID * @param listener 异步请求回调接口 */ public void show(long uid, RequestListener listener) { WeiboParameters params = new WeiboParameters(mAppKey); params.put("uid", uid); requestAsync(sAPIList.get(READ_USER), params, HTTPMETHOD_GET, listener); } /** * 根据用户昵称获取用户信息。 * * @param screen_name 需要查询的用户昵称 * @param listener 异步请求回调接口 */ public void show(String screen_name, RequestListener listener) { WeiboParameters params = new WeiboParameters(mAppKey); params.put("screen_name", screen_name); requestAsync(sAPIList.get(READ_USER), params, HTTPMETHOD_GET, listener); } /** * 通过个性化域名获取用户资料以及用户最新的一条微博。 * * @param domain 需要查询的个性化域名(请注意:是http://weibo.com/xxx后面的xxx部分) * @param listener 异步请求回调接口 */ public void domainShow(String domain, RequestListener listener) { WeiboParameters params = new WeiboParameters(mAppKey); params.put("domain", domain); requestAsync(sAPIList.get(READ_USER_BY_DOMAIN), params, HTTPMETHOD_GET, listener); } /** * 批量获取用户的粉丝数、关注数、微博数。 * * @param uids 需要获取数据的用户UID,多个之间用逗号分隔,最多不超过100个 * @param listener 异步请求回调接口 */ public void counts(long[] uids, RequestListener listener) { WeiboParameters params = buildCountsParams(uids); requestAsync(sAPIList.get(READ_USER_COUNT), params, HTTPMETHOD_GET, listener); } /** * ----------------------------------------------------------------------- * 请注意:以下方法匀均同步方法。如果开发者有自己的异步请求机制,请使用该函数。 * ----------------------------------------------------------------------- */ /** * @see #show(long, RequestListener) */ public String showSync(long uid) { WeiboParameters params = new WeiboParameters(mAppKey); params.put("uid", uid); return requestSync(sAPIList.get(READ_USER), params, HTTPMETHOD_GET); } /** * @see #show(String, RequestListener) */ public String showSync(String screen_name) { WeiboParameters params = new WeiboParameters(mAppKey); params.put("screen_name", screen_name); return requestSync(sAPIList.get(READ_USER), params, HTTPMETHOD_GET); } /** * @see #domainShow(String, RequestListener) */ public String domainShowSync(String domain) { WeiboParameters params = new WeiboParameters(mAppKey); params.put("domain", domain); return requestSync(sAPIList.get(READ_USER_BY_DOMAIN), params, HTTPMETHOD_GET); } /** * @see #counts(long[], RequestListener) */ public String countsSync(long[] uids) { WeiboParameters params = buildCountsParams(uids); return requestSync(sAPIList.get(READ_USER_COUNT), params, HTTPMETHOD_GET); } private WeiboParameters buildCountsParams(long[] uids) { WeiboParameters params = new WeiboParameters(mAppKey); StringBuilder strb = new StringBuilder(); for (long cid : uids) { strb.append(cid).append(","); } strb.deleteCharAt(strb.length() - 1); params.put("uids", strb.toString()); return params; } }