/*
* 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 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/8F1nOVu">推荐接口</a>
*
* @author SINA
* @date 2014-03-03
*/
public class SuggestionsAPI extends AbsOpenAPI {
/** 推荐分类 */
public enum USER_CATEGORY {
DEFAULT, ent, hk_famous, model, cooking, sports, finance, tech, singer, writer, moderator, medium, stockplayer
}
/** 微博精选分类 */
public enum STATUSES_TYPE {
ENTERTAINMENT, FUNNY, BEAUTY, VIDEO, CONSTELLATION, LOVELY, FASHION, CARS, CATE, MUSIC
}
public SuggestionsAPI(Context context, String appKey, Oauth2AccessToken accessToken) {
super(context, appKey, accessToken);
}
private static final String SERVER_URL_PRIX = API_SERVER + "/suggestions";
/**
* 返回系统推荐的热门用户列表。
*
* @param category 推荐分类,返回某一类别的推荐用户,默认为default,如果不在以下分类中,返回空列表。
* default:人气关注 ent:影视名星 hk_famous:港台名人 model:模特
* cooking:美食&健康 sports:体育名人 finance:商界名人 tech:IT互联网
* singer:歌手 writer:作家 moderator:主持人 medium:媒体总编
* stockplayer:炒股高手
* @param listener 异步请求回调接口
*/
public void usersHot(USER_CATEGORY category, RequestListener listener) {
WeiboParameters params = new WeiboParameters(mAppKey);
params.put("category", category.name());
requestAsync(SERVER_URL_PRIX + "/users/hot.json", params, HTTPMETHOD_GET, listener);
}
/**
* 获取用户可能感兴趣的人。
*
* @param count 单页返回的记录条数,默认为10
* @param page 返回结果的页码,默认为1
* @param listener 异步请求回调接口
*/
public void mayInterested(int count, int page, RequestListener listener) {
WeiboParameters params = builderCountPage(count, page);
requestAsync(SERVER_URL_PRIX + "/users/may_interested.json", params, HTTPMETHOD_GET, listener);
}
/**
* 根据一段微博正文推荐相关微博用户。
*
* @param content 微博正文内容
* @param num 返回结果数目,默认为10
* @param listener 异步请求回调接口
*/
public void byStatus(String content, int num, RequestListener listener) {
WeiboParameters params = new WeiboParameters(mAppKey);
params.put("content", content);
params.put("num", num);
requestAsync(SERVER_URL_PRIX + "/users/may_interested.json", params, HTTPMETHOD_GET, listener);
}
/**
* 获取微博精选推荐。
*
* @param type 微博精选分类,1:娱乐、2:搞笑、3:美女、4:视频、5:星座、6:各种萌、7:时尚、8:名车、9:美食、10:音乐
* @param is_pic 是否返回图片精选微博,false:全部、true:图片微博
* @param count 单页返回的记录条数,默认为20
* @param page 返回结果的页码,默认为1
* @param listener 异步请求回调接口
*/
public void statusesHot(STATUSES_TYPE type, boolean is_pic, int count, int page, RequestListener listener) {
WeiboParameters params = builderCountPage(count, page);
params.put("type", type.ordinal() + 1);
params.put("is_pic", is_pic ? 1 : 0);
requestAsync(SERVER_URL_PRIX + "/statuses/hot.json", params, HTTPMETHOD_GET, listener);
}
/**
* 返回系统推荐的热门收藏。
*
* @param count 每页返回结果数,默认20
* @param page 返回页码,默认1
* @param listener 异步请求回调接口
*/
public void favoritesHot(int count, int page, RequestListener listener) {
WeiboParameters params = builderCountPage(count, page);
requestAsync(SERVER_URL_PRIX + "/favorites/hot.json", params, HTTPMETHOD_GET, listener);
}
/**
* 把某人标识为不感兴趣的人。
*
* @param uid 不感兴趣的用户的UID
* @param listener 异步请求回调接口
*/
public void notInterested(long uid, RequestListener listener) {
WeiboParameters params = new WeiboParameters(mAppKey);
params.put("uid", uid);
requestAsync(SERVER_URL_PRIX + "/users/not_interested.json", params, HTTPMETHOD_POST, listener);
}
private WeiboParameters builderCountPage(int count, int page) {
WeiboParameters params = new WeiboParameters(mAppKey);
params.put("count", count);
params.put("page", page);
return params;
}
}