package net.dev123.mblog.fanfou;
import java.io.File;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import net.dev123.commons.Paging;
import net.dev123.commons.http.HttpMethod;
import net.dev123.commons.http.HttpRequestHelper;
import net.dev123.commons.http.HttpRequestMessage;
import net.dev123.commons.http.auth.Authorization;
import net.dev123.commons.util.ListUtil;
import net.dev123.commons.util.StringUtil;
import net.dev123.entity.StatusUpdate;
import net.dev123.exception.ExceptionCode;
import net.dev123.exception.LibException;
import net.dev123.mblog.MicroBlog;
import net.dev123.mblog.entity.Comment;
import net.dev123.mblog.entity.DirectMessage;
import net.dev123.mblog.entity.Group;
import net.dev123.mblog.entity.RateLimitStatus;
import net.dev123.mblog.entity.Relationship;
import net.dev123.mblog.entity.ResponseCount;
import net.dev123.mblog.entity.Status;
import net.dev123.mblog.entity.Trends;
import net.dev123.mblog.entity.UnreadCount;
import net.dev123.mblog.entity.UnreadType;
import net.dev123.mblog.entity.User;
import org.apache.http.client.ResponseHandler;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
* 饭否微博API实现。
* @author Weiping Ye
* @version Jul 19, 2011 9:56:11 PM
* identifyName = userId;
* displayName = userId;
*/
public class Fanfou extends MicroBlog {
private static final long serialVersionUID = -5340460378724312533L;
private static final Logger logger = LoggerFactory.getLogger(Fanfou.class.getSimpleName());
private transient String screenName = null;
private transient String userId = null;
private transient ResponseHandler<String> responseHandler;
public Fanfou(Authorization auth) {
super(auth);
responseHandler = new FanfouResponseHandler();
}
@Override
public String getScreenName() throws LibException {
if (null == screenName) {
verifyCredentials();
}
return screenName;
}
@Override
public String getUserId() throws LibException {
if (null == userId) {
verifyCredentials();
}
return userId;
}
@Override
public List<Status> getFriendsTimeline(Paging<Status> paging) throws LibException {
return getTimeline(null, paging, conf.getFriendTimelineURL());
}
@Override
public List<Status> getUserTimeline(String identityName, Paging<Status> paging)
throws LibException {
return getTimeline(identityName, paging, conf.getUserTimelineURL());
}
private List<Status> getTimeline(String identityName, Paging<Status> paging, String url)
throws LibException {
if (paging == null) {
throw new LibException(ExceptionCode.PARAMETER_NULL);
}
HttpRequestMessage httpRequestMessage =
new HttpRequestMessage(HttpMethod.GET, url, auth);
if (StringUtil.isNotEmpty(identityName)) {
httpRequestMessage.addParameter("id", identityName);
}
httpRequestMessage.addParameter("page", paging.getPageIndex());
httpRequestMessage.addParameter("count", paging.getPageSize());
if (paging.getMax() != null) {
httpRequestMessage.addParameter("max_id", paging.getMax().getId());
}
if (paging.getSince() != null) {
httpRequestMessage.addParameter("since_id", paging.getSince().getId());
}
if (paging.getAttribute("format") != null) {
httpRequestMessage.addParameter("format", paging.getAttribute("format"));
}
if (paging.getAttribute("callback") != null) {
httpRequestMessage.addParameter("callback", paging.getAttribute("callback"));
}
String response = HttpRequestHelper.execute(httpRequestMessage, responseHandler);
ArrayList<Status> statusList = FanfouStatusAdaptor.createStatusList(response);
ListUtil.truncateFromHead(statusList, paging.getMax());
updatePaging(statusList, paging);
return statusList;
}
@Override
public List<Status> getHomeTimeline(Paging<Status> paging) throws LibException {
// 饭否没有homeTimeline接口。这里调用friendsTimeline接口(获得的数据是一样的)
return getFriendsTimeline(paging);
}
@Override
public List<Status> getPublicTimeline() throws LibException {
HttpRequestMessage httpRequestMessage =
new HttpRequestMessage(HttpMethod.GET, conf.getPublicTimelineURL(), auth);
String response = HttpRequestHelper.execute(httpRequestMessage, responseHandler);
ArrayList<Status> statusList = FanfouStatusAdaptor.createStatusList(response);
return statusList;
}
@Override
public List<Status> getMentions(Paging<Status> paging) throws LibException {
if (paging == null) {
throw new LibException(ExceptionCode.PARAMETER_NULL);
}
HttpRequestMessage httpRequestMessage =
new HttpRequestMessage(HttpMethod.GET, conf.getMetionsTimelineURL(), auth);
httpRequestMessage.addParameter("page", paging.getPageIndex());
httpRequestMessage.addParameter("count", paging.getPageSize());
if (paging.getMax() != null) {
httpRequestMessage.addParameter("max_id", paging.getMax().getId());
}
if (paging.getSince() != null) {
httpRequestMessage.addParameter("since_id", paging.getSince().getId());
}
if (paging.getAttribute("format") != null) {
httpRequestMessage.addParameter("format", paging.getAttribute("format"));
}
String response = HttpRequestHelper.execute(httpRequestMessage, responseHandler);
ArrayList<Status> statusList = FanfouStatusAdaptor.createStatusList(response);
ListUtil.truncateFromHead(statusList, paging.getMax());
updatePaging(statusList, paging);
return statusList;
}
@Override
public List<Status> getRetweetedByMe(Paging<Status> paging) throws LibException {
throw new LibException(ExceptionCode.UNSUPPORTED_API);
}
@Override
public Status destroyStatus(String statusId) throws LibException {
if (StringUtil.isEmpty(statusId)) {
throw new LibException(ExceptionCode.PARAMETER_NULL);
}
HttpRequestMessage httpRequestMessage =
new HttpRequestMessage(HttpMethod.POST, conf.getDestroyStatusURL(), auth);
httpRequestMessage.addParameter("id", statusId);
String response = HttpRequestHelper.execute(httpRequestMessage, responseHandler);
return FanfouStatusAdaptor.createStatus(response);
}
@Override
public List<Status> getRetweetsOfStatus(String statusId, Paging<Status> paging)
throws LibException {
throw new LibException(ExceptionCode.UNSUPPORTED_API);
}
/**
* 转发微博,支持添加转发附注,以及同时发布为评论
*
* @param statusId
* 转发的微博消息的ID,不能为空
* @param status
* 转发附注,可以为空
* @param isComment
* 饭否没有评论功能,改值无意义
* @return 转发后的微博消息对象
* @throws LibException
*/
@Override
public Status retweetStatus(String statusId, String status, boolean isComment)
throws LibException {
if (StringUtil.isEmpty(statusId) || StringUtil.isEmpty(status)) {
throw new LibException(ExceptionCode.PARAMETER_NULL);
}
HttpRequestMessage httpRequestMessage =
new HttpRequestMessage(HttpMethod.POST, conf.getRetweetStatusURL(), auth);
httpRequestMessage.addParameter("repost_status_id", statusId);
httpRequestMessage.addParameter("status", status);
String response = HttpRequestHelper.execute(httpRequestMessage, responseHandler);
return FanfouStatusAdaptor.createStatus(response);
}
@Override
public List<Status> searchStatuses(String keyword, Paging<Status> paging)
throws LibException {
if (paging == null || StringUtil.isEmpty(keyword)) {
throw new LibException(ExceptionCode.PARAMETER_NULL);
}
HttpRequestMessage httpRequestMessage =
new HttpRequestMessage(HttpMethod.GET, conf.getSearchStatusURL(), auth);
httpRequestMessage.addParameter("q", keyword);
if (paging.getMax() != null && paging.getMax().getId() != null) {
httpRequestMessage.addParameter("max_id", paging.getMax().getId());
}
String response = HttpRequestHelper.execute(httpRequestMessage, responseHandler);
List<Status> statusesList = FanfouStatusAdaptor.createStatusList(response);
setNextPageMax(paging, statusesList.get(statusesList.size()-1));
updatePaging(statusesList, paging);
return statusesList;
}
@Override
public Status showStatus(String statusId) throws LibException {
if (StringUtil.isEmpty(statusId)) {
throw new LibException(ExceptionCode.PARAMETER_NULL);
}
HttpRequestMessage httpRequestMessage = new HttpRequestMessage(
HttpMethod.GET, String.format(conf.getShowOfStatusURL(), statusId), auth);
String response = HttpRequestHelper.execute(httpRequestMessage, responseHandler);
return FanfouStatusAdaptor.createStatus(response);
}
@Override
public Status updateStatus(StatusUpdate latestStatus) throws LibException {
if (latestStatus == null || StringUtil.isEmpty(latestStatus.getStatus())) {
throw new LibException(ExceptionCode.PARAMETER_NULL);
}
boolean isRetweet = false;
Map<String, Object> parameters = new HashMap<String, Object>();
parameters.put("status", latestStatus.getStatus());
if (latestStatus.getInReplyToStatusId()!= null) {
parameters.put("in_reply_to_status_id", latestStatus.getInReplyToStatusId());
isRetweet = true;
}
if (latestStatus.getLocation() != null) {
parameters.put("location", latestStatus.getLocation().getLatitude() + ","
+ latestStatus.getLocation().getLongitude());
}
boolean isUpload = false;
if (latestStatus.getImage() != null) {
if (!isRetweet) {
//图片上传只有在发原创微博的时候可用,转发时不允许上传图片
checkFileValidity(latestStatus.getImage());
parameters.put("photo", latestStatus.getImage());
isUpload = true;
} else {
logger.debug("Image file {} is ignored in retweet", latestStatus.getImage().getName());
}
}
String requestUrl = conf.getUpdateStatusURL();
if (isUpload) {
requestUrl = conf.getUploadStatusURL();
}
HttpRequestMessage httpRequestMessage =
new HttpRequestMessage(HttpMethod.POST, requestUrl, auth);
httpRequestMessage.addParameters(parameters);
String response = HttpRequestHelper.execute(httpRequestMessage, responseHandler);
return FanfouStatusAdaptor.createStatus(response);
}
@Override
public List<User> getFollowers(Paging<User> paging) throws LibException {
return getUserFollowers(null, paging);
}
@Override
public List<User> getFriends(Paging<User> paging) throws LibException {
return getUserFriends(null, paging);
}
@Override
public List<User> getUserFollowers(String id, Paging<User> paging) throws LibException {
if (paging == null) {
throw new LibException(ExceptionCode.PARAMETER_NULL);
}
HttpRequestMessage httpRequestMessage =
new HttpRequestMessage(HttpMethod.GET, conf.getFollowsURL(), auth);
if(StringUtil.isNotEmpty(id)){
httpRequestMessage.addParameter("id", id);
}
httpRequestMessage.addParameter("page", paging.getPageIndex());
String response = HttpRequestHelper.execute(httpRequestMessage, responseHandler);
List<User> userList = FanfouUserAdaptor.createUserList(response);
updatePaging(userList, paging);
return userList;
}
@Override
public List<User> getUserFriends(String id, Paging<User> paging) throws LibException {
if (paging == null) {
throw new LibException(ExceptionCode.PARAMETER_NULL);
}
HttpRequestMessage httpRequestMessage =
new HttpRequestMessage(HttpMethod.GET, conf.getFriendsURL(), auth);
if (StringUtil.isNotEmpty(id)) {
httpRequestMessage.addParameter("id", id);
}
httpRequestMessage.addParameter("page", paging.getPageIndex());
String response = HttpRequestHelper.execute(httpRequestMessage, responseHandler);
List<User> userList = FanfouUserAdaptor.createUserList(response);
updatePaging(userList, paging);
return userList;
}
@Override
public List<User> searchUsers(String keyword, Paging<User> paging) throws LibException {
throw new LibException(ExceptionCode.UNSUPPORTED_API);
}
@Override
public User showUser(String identifyName) throws LibException {
if (StringUtil.isEmpty(identifyName)) {
throw new LibException(ExceptionCode.PARAMETER_NULL);
}
HttpRequestMessage httpRequestMessage =
new HttpRequestMessage(HttpMethod.GET, conf.getShowOfUserURL(), auth);
httpRequestMessage.addParameter("id", identifyName);
String response = HttpRequestHelper.execute(httpRequestMessage, responseHandler);
User user = FanfouUserAdaptor.createUser(response);
if (user.getStatus() != null && user.getStatus().getUser() == null) {
user.getStatus().setUser(user);
}
return user;
}
@Override
public User showUserByDisplayName(String displayName) throws LibException {
// throw new LibException(ExceptionCode.UNSUPPORTED_API);
return showUser(displayName);
}
@Override
public DirectMessage destroyInboxDirectMessage(String messageId) throws LibException {
return destroyDirectMessage(messageId);
}
@Override
public DirectMessage destroyOutboxDirectMessage(String messageId) throws LibException {
return destroyDirectMessage(messageId);
}
private DirectMessage destroyDirectMessage(String directMessageId) throws LibException {
if (StringUtil.isEmpty(directMessageId)) {
throw new LibException(ExceptionCode.PARAMETER_NULL);
}
HttpRequestMessage httpRequestMessage = new HttpRequestMessage(
HttpMethod.POST, conf.getDestroyDirectMessageURL(), auth);
httpRequestMessage.addParameter("id", directMessageId);
String response = HttpRequestHelper.execute(httpRequestMessage, responseHandler);
return FanfouDirectMessageAdaptor.createDirectMessage(response);
}
@Override
public List<DirectMessage> getInboxDirectMessages(Paging<DirectMessage> paging)
throws LibException {
if (paging == null) {
throw new LibException(ExceptionCode.PARAMETER_NULL);
}
HttpRequestMessage httpRequestMessage =
new HttpRequestMessage(HttpMethod.GET, conf.getInboxTimelineURL(), auth);
httpRequestMessage.addParameter("page", paging.getPageIndex());
httpRequestMessage.addParameter("count", paging.getPageSize());
if (paging.getMax() != null) {
httpRequestMessage.addParameter("max_id", paging.getMax().getId());
}
if (paging.getSince() != null) {
httpRequestMessage.addParameter("since_id", paging.getSince().getId());
}
String response = HttpRequestHelper.execute(httpRequestMessage, responseHandler);
List<DirectMessage> messagesList = FanfouDirectMessageAdaptor
.createDirectMessageList(response);
updatePaging(messagesList, paging);
return messagesList;
}
@Override
public List<DirectMessage> getOutboxDirectMessages(Paging<DirectMessage> paging)
throws LibException {
if (paging == null) {
throw new LibException(ExceptionCode.PARAMETER_NULL);
}
HttpRequestMessage httpRequestMessage = new HttpRequestMessage(
HttpMethod.GET, conf.getOutboxTimelineURL(), auth);
httpRequestMessage.addParameter("page", paging.getPageIndex());
httpRequestMessage.addParameter("count", paging.getPageSize());
if (paging.getMax() != null) {
httpRequestMessage.addParameter("max_id", paging.getMax().getId());
}
if (paging.getSince() != null) {
httpRequestMessage.addParameter("since_id", paging.getSince().getId());
}
String response = HttpRequestHelper.execute(httpRequestMessage, responseHandler);
List<DirectMessage> messagesList = FanfouDirectMessageAdaptor
.createDirectMessageList(response);
updatePaging(messagesList, paging);
return messagesList;
}
@Override
public DirectMessage sendDirectMessage(String displayName, String message)
throws LibException {
if (StringUtil.isEmpty(displayName) || StringUtil.isEmpty(message)) {
throw new LibException(ExceptionCode.PARAMETER_NULL);
}
HttpRequestMessage httpRequestMessage = new HttpRequestMessage(
HttpMethod.POST, conf.getSendDirectMessageURL(), auth);
httpRequestMessage.addParameter("user", displayName);
httpRequestMessage.addParameter("text", message);
String response = HttpRequestHelper.execute(httpRequestMessage, responseHandler);
return FanfouDirectMessageAdaptor.createDirectMessage(response);
}
@Override
public User createFriendship(String identityName) throws LibException {
return managerFriendship(identityName, conf.getCreateFriendshipURL());
}
@Override
public User destroyFriendship(String identityName) throws LibException {
return managerFriendship(identityName, conf.getDestroyFriendshipURL());
}
private User managerFriendship(String identityName, String url) throws LibException {
if (StringUtil.isEmpty(identityName)) {
throw new LibException(ExceptionCode.PARAMETER_NULL);
}
HttpRequestMessage httpRequestMessage = new HttpRequestMessage(
HttpMethod.POST, url, auth);
httpRequestMessage.addParameter("id", identityName);
String response = HttpRequestHelper.execute(httpRequestMessage, responseHandler);
return FanfouUserAdaptor.createUser(response);
}
@Override
public Relationship showRelationship(String sourceIdentifyName, String targetIdentifyName)
throws LibException {
boolean isFollowing = isFollowing(sourceIdentifyName, targetIdentifyName);
boolean isFollowed = isFollowing(targetIdentifyName, sourceIdentifyName);
User sourceUser = showUser(sourceIdentifyName);
User targetUser = showUser(targetIdentifyName);
Relationship relationship = new Relationship();
relationship.setFollowed(isFollowed);
relationship.setFollowing(isFollowing);
relationship.setSourceNotificationsEnabled(false);//没有这个信息
relationship.setSourceScreenName(sourceUser.getScreenName());
relationship.setSourceUserId(sourceUser.getId());
relationship.setTargetScreenName(targetUser.getScreenName());
relationship.setTargetUserId(targetUser.getId());
relationship.setBlocking(false);//没有这个信息
return relationship;
}
/**
* sourceIdentifyName用户是否follow了targetIdentifyName用户。
* @param sourceIdentifyName
* @param targetIdentifyName
* @return true or false
* @throws LibException
*/
private boolean isFollowing(String sourceIdentifyName, String targetIdentifyName)
throws LibException {
if (StringUtil.isEmpty(sourceIdentifyName) || StringUtil.isEmpty(targetIdentifyName)) {
throw new LibException(ExceptionCode.PARAMETER_NULL);
}
HttpRequestMessage httpRequestMessage = new HttpRequestMessage(
HttpMethod.GET, conf.getExistFriendshipURL(), auth);
httpRequestMessage.addParameter("user_a", sourceIdentifyName);
httpRequestMessage.addParameter("user_b", targetIdentifyName);
String response = HttpRequestHelper.execute(httpRequestMessage, responseHandler);
return Boolean.valueOf(response).booleanValue();
}
@Override
public List<String> getFollowersIDs(Paging<String> paging) throws LibException {
return getFollowersIDs(getUserId(), paging);
}
@Override
public List<String> getFollowersIDs(String id, Paging<String> paging) throws LibException {
return getIDs(id, paging, conf.getFollowersIDsURL());
}
@Override
public List<String> getFriendsIDs(Paging<String> paging) throws LibException {
return getFriendsIDs(getUserId(), paging);
}
@Override
public List<String> getFriendsIDs(String id, Paging<String> paging) throws LibException {
return getIDs(id, paging, conf.getFriendsIDsURL());
}
private List<String> getIDs(String id, Paging<String> paging, String url)
throws LibException {
if (paging == null) {
throw new LibException(ExceptionCode.PARAMETER_NULL);
}
if (paging.isPagePaging()) {
initCursorPaging(paging);
}
HttpRequestMessage httpRequestMessage =
new HttpRequestMessage(HttpMethod.GET, url, auth);
if (StringUtil.isNotEmpty(id)) {
httpRequestMessage.addParameter("id", id);
}
httpRequestMessage.addParameter("page", paging.getPageIndex());
httpRequestMessage.addParameter("count", paging.getPageSize());
String response = HttpRequestHelper.execute(httpRequestMessage, responseHandler);
List<String> idsList = FanfouIDsAdaptor.createIdsList(response);
updatePaging(idsList, paging);
return idsList;
}
@Override
public RateLimitStatus getRateLimitStatus() throws LibException {
throw new LibException(ExceptionCode.UNSUPPORTED_API);
}
@Override
public User updateProfile(String screenName, String email, String url, String location,
String description) throws LibException {
throw new LibException(ExceptionCode.UNSUPPORTED_API);
}
@Override
public User updateProfileImage(File image) throws LibException {
throw new LibException(ExceptionCode.UNSUPPORTED_API);
}
@Override
public User verifyCredentials() throws LibException {
HttpRequestMessage httpRequestMessage = new HttpRequestMessage(
HttpMethod.GET, conf.getVerifyCredentialsURL(), auth);
String response = HttpRequestHelper.execute(httpRequestMessage, responseHandler);
User user = FanfouUserAdaptor.createUser(response);
if (null != user) {
this.screenName = user.getScreenName();
this.userId = user.getId();
}
return user;
}
@Override
public Status createFavorite(String statusId) throws LibException {
String url = String.format(conf.getCreateFavoriteURL(), statusId);
return manageFavorite(statusId, url);
}
@Override
public Status destroyFavorite(String statusId) throws LibException {
String url = String.format(conf.getDestroyFavoriteURL(), statusId);
return manageFavorite(statusId, url);
}
private Status manageFavorite(String statusId, String url) throws LibException {
HttpRequestMessage httpRequestMessage =
new HttpRequestMessage(HttpMethod.POST, url, auth);
String response = HttpRequestHelper.execute(httpRequestMessage, responseHandler);
return FanfouStatusAdaptor.createStatus(response);
}
@Override
public List<Status> getFavorites(Paging<Status> paging) throws LibException {
return getFavorites(null, paging);
}
@Override
public List<Status> getFavorites(String identifyName, Paging<Status> paging) throws LibException {
if (paging == null) {
throw new LibException(ExceptionCode.PARAMETER_NULL);
}
HttpRequestMessage httpRequestMessage = new HttpRequestMessage(
HttpMethod.GET, conf.getFavoritesTimelineURL(), auth);
if (!StringUtil.isEmpty(identifyName)) {
httpRequestMessage.addParameter("id", identifyName);
}
httpRequestMessage.addParameter("page", paging.getPageIndex());
httpRequestMessage.addParameter("count", paging.getPageSize());
String response = HttpRequestHelper.execute(httpRequestMessage, responseHandler);
List<Status> statusList = FanfouStatusAdaptor.createStatusList(response);
updatePaging(statusList, paging);
return statusList;
}
@Override
public Comment createComment(String comment, String statusId) throws LibException {;
if (StringUtil.isEmpty(statusId) || StringUtil.isEmpty(comment)) {
throw new LibException(ExceptionCode.PARAMETER_NULL);
}
StatusUpdate update = new StatusUpdate(comment);
update.setInReplyToStatusId(statusId);
Status status = updateStatus(update);
return FanfouCommentAdaptor.createCommentFromStatus(status);
}
@Override
public Comment createComment(String comment, String statusId, String commentId) throws LibException {
throw new LibException(ExceptionCode.UNSUPPORTED_API);
}
@Override
public Comment destroyComment(String commentId) throws LibException {
throw new LibException(ExceptionCode.UNSUPPORTED_API);
}
@Override
public List<Comment> getCommentsByMe(Paging<Comment> paging) throws LibException {
throw new LibException(ExceptionCode.UNSUPPORTED_API);
}
@Override
public List<Comment> getCommentsOfStatus(String statusId, Paging<Comment> paging) throws LibException {
throw new LibException(ExceptionCode.UNSUPPORTED_API);
}
@Override
public List<Comment> getCommentsTimeline(Paging<Comment> paging) throws LibException {
throw new LibException(ExceptionCode.UNSUPPORTED_API);
}
@Override
public List<Comment> getCommentsToMe(Paging<Comment> paging) throws LibException {
throw new LibException(ExceptionCode.UNSUPPORTED_API);
}
@Override
public ResponseCount getResponseCount(Status status) throws LibException {
throw new LibException(ExceptionCode.UNSUPPORTED_API);
}
@Override
public List<ResponseCount> getResponseCountList(List<Status> statusList) throws LibException {
throw new LibException(ExceptionCode.UNSUPPORTED_API);
}
@Override
public UnreadCount getUnreadCount() throws LibException {
throw new LibException(ExceptionCode.UNSUPPORTED_API);
}
@Override
public boolean resetUnreadCount(UnreadType unreadType) throws LibException {
throw new LibException(ExceptionCode.UNSUPPORTED_API);
}
@Override
public Trends getCurrentTrends() throws LibException {
Trends trends = null;
List<Trends> trendsList = getDailyTrends();
if (trendsList != null && trendsList.size() > 0) {
trends = trendsList.get(0);
}
return trends;
}
@Override
public List<Trends> getDailyTrends() throws LibException {
HttpRequestMessage httpRequestMessage =
new HttpRequestMessage(HttpMethod.GET, conf.getCurrentTrendsURL(), auth);
String response = HttpRequestHelper.execute(httpRequestMessage, responseHandler);
List<Trends> trendsList = FanfouTrendsAdapter.createTrends(response);
return trendsList;
}
@Override
public List<Trends> getWeeklyTrends() throws LibException {
return getDailyTrends();
}
@Override
public User createBlock(String identifyName) throws LibException {
if (StringUtil.isEmpty(identifyName)) {
throw new LibException(ExceptionCode.PARAMETER_NULL);
}
HttpRequestMessage httpRequestMessage = new HttpRequestMessage(
HttpMethod.POST, conf.getCreateBlockURL(), auth);
httpRequestMessage.addParameter("id", identifyName);
String response = HttpRequestHelper.execute(httpRequestMessage, responseHandler);
User user = FanfouUserAdaptor.createUser(response);
user.setBlocking(true);
return user;
}
@Override
public User destroyBlock(String identifyName) throws LibException {
if (StringUtil.isEmpty(identifyName)) {
throw new LibException(ExceptionCode.PARAMETER_NULL);
}
HttpRequestMessage httpRequestMessage = new HttpRequestMessage(
HttpMethod.POST, conf.getDestroyBlockURL(), auth);
httpRequestMessage.addParameter("id", identifyName);
String response = HttpRequestHelper.execute(httpRequestMessage, responseHandler);
User user = FanfouUserAdaptor.createUser(response);
user.setBlocking(false);
return user;
}
@Override
public boolean existsBlock(String identifyName) throws LibException {
throw new LibException(ExceptionCode.UNSUPPORTED_API);
}
@Override
public List<User> getBlockingUsers(Paging<User> paging) throws LibException {
throw new LibException(ExceptionCode.UNSUPPORTED_API);
}
@Override
public List<String> getBlockingUsersIDs(Paging<String> paging) throws LibException {
throw new LibException(ExceptionCode.UNSUPPORTED_API);
}
@Override
public List<Status> getDailyHotRetweets(Paging<Status> paging)
throws LibException {
throw new LibException(ExceptionCode.UNSUPPORTED_API);
}
@Override
public List<Status> getWeeklyHotRetweets(Paging<Status> paging)
throws LibException {
throw new LibException(ExceptionCode.UNSUPPORTED_API);
}
@Override
public List<Status> getDailyHotComments(Paging<Status> paging)
throws LibException {
throw new LibException(ExceptionCode.UNSUPPORTED_API);
}
@Override
public List<Status> getWeeklyHotComments(Paging<Status> paging)
throws LibException {
throw new LibException(ExceptionCode.UNSUPPORTED_API);
}
@Override
public Group createGroup(String listName, boolean isPublicList,
String description) throws LibException {
throw new LibException(ExceptionCode.UNSUPPORTED_API);
}
@Override
public Group updateGroup(String listId, String newListName,
boolean isPublicList, String newDescription) throws LibException {
throw new LibException(ExceptionCode.UNSUPPORTED_API);
}
@Override
public List<Group> getGroups(String listOwnerIdentifyName,
Paging<Group> paging) throws LibException {
throw new LibException(ExceptionCode.UNSUPPORTED_API);
}
@Override
public Group showGroup(String listId) throws LibException {
throw new LibException(ExceptionCode.UNSUPPORTED_API);
}
@Override
public Group destroyGroup(String listId) throws LibException {
throw new LibException(ExceptionCode.UNSUPPORTED_API);
}
@Override
public List<Status> getGroupStatuses(String listId, Paging<Status> paging)
throws LibException {
throw new LibException(ExceptionCode.UNSUPPORTED_API);
}
@Override
public List<Group> getGroupMemberships(String listMemberIdentifyName,
Paging<Group> paging) throws LibException {
throw new LibException(ExceptionCode.UNSUPPORTED_API);
}
@Override
public List<Group> getGroupSubscriptions(
String listOwnerIdentifyName, Paging<Group> paging)
throws LibException {
throw new LibException(ExceptionCode.UNSUPPORTED_API);
}
@Override
public List<Group> getAllGroups(String identifyName)
throws LibException {
throw new LibException(ExceptionCode.UNSUPPORTED_API);
}
@Override
public List<User> getGroupMembers(String listId, Paging<User> paging)
throws LibException {
throw new LibException(ExceptionCode.UNSUPPORTED_API);
}
@Override
public Group createGroupMember(String listId, String identifyName)
throws LibException {
throw new LibException(ExceptionCode.UNSUPPORTED_API);
}
@Override
public Group createGroupMembers(String listId, String[] identifyNames)
throws LibException {
throw new LibException(ExceptionCode.UNSUPPORTED_API);
}
@Override
public Group destroyGroupMember(String listId, String identifyName)
throws LibException {
throw new LibException(ExceptionCode.UNSUPPORTED_API);
}
@Override
public User showGroupMember(String listId, String identifyName)
throws LibException {
throw new LibException(ExceptionCode.UNSUPPORTED_API);
}
@Override
public List<User> getGroupSubscribers(String listId, Paging<User> paging)
throws LibException {
throw new LibException(ExceptionCode.UNSUPPORTED_API);
}
@Override
public Group createGroupSubscriber(String listId)
throws LibException {
throw new LibException(ExceptionCode.UNSUPPORTED_API);
}
@Override
public Group destroyGroupSubscriber(String listId)
throws LibException {
throw new LibException(ExceptionCode.UNSUPPORTED_API);
}
@Override
public User showGroupSubscriber(String listId, String identifyName)
throws LibException {
throw new LibException(ExceptionCode.UNSUPPORTED_API);
}
}