package net.dev123.mblog; import java.io.File; import java.util.List; import net.dev123.commons.Paging; import net.dev123.commons.PagingSupport; import net.dev123.commons.http.auth.Authorization; import net.dev123.commons.http.auth.BasicAuthorization; import net.dev123.commons.http.auth.OAuthAuthorization; import net.dev123.entity.Location; import net.dev123.exception.ExceptionCode; import net.dev123.exception.LibException; import net.dev123.mblog.api.AccountMethods; import net.dev123.mblog.api.BlockMethods; import net.dev123.mblog.api.CommentMethods; import net.dev123.mblog.api.CountMethods; import net.dev123.mblog.api.DirectMessageMethods; import net.dev123.mblog.api.FavoriteMethods; import net.dev123.mblog.api.FriendshipMethods; import net.dev123.mblog.api.GroupMembersMethods; import net.dev123.mblog.api.GroupMethods; import net.dev123.mblog.api.GroupSubscribersMethods; import net.dev123.mblog.api.LocationMethods; import net.dev123.mblog.api.SocialGraphMethods; import net.dev123.mblog.api.StatusMethods; import net.dev123.mblog.api.TimelineMethods; import net.dev123.mblog.api.TrendsMethods; import net.dev123.mblog.api.UserMethods; import net.dev123.mblog.conf.ApiConfiguration; import net.dev123.mblog.conf.ApiConfigurationFactory; import net.dev123.mblog.entity.Status; import net.dev123.mblog.entity.Trend; /** * MicroBlogBase * * @version * @author 马庆升 * @time 2010-8-1 上午10:49:29 */ public abstract class MicroBlog extends PagingSupport implements java.io.Serializable, TimelineMethods, StatusMethods, UserMethods, DirectMessageMethods, FriendshipMethods, SocialGraphMethods, AccountMethods, FavoriteMethods, CommentMethods, CountMethods, TrendsMethods, BlockMethods, GroupMethods, GroupMembersMethods, GroupSubscribersMethods, LocationMethods { private static final long serialVersionUID = -3812176145960812140L; protected final ApiConfiguration conf; protected Authorization auth; public MicroBlog(Authorization auth) { this.auth = auth; this.conf = ApiConfigurationFactory.getApiConfiguration(auth.getServiceProvider()); } public abstract String getScreenName() throws LibException; public abstract String getUserId() throws LibException; /** * tests if the instance is authenticated by Basic * * @return returns true if the instance is authenticated by Basic */ public final boolean isBasicAuthEnabled() { return auth instanceof BasicAuthorization; } /** * tests if the instance is authenticated by OAuth * * @return returns true if the instance is authenticated by OAuth */ public final boolean isOAuthEnabled() { return auth instanceof OAuthAuthorization; } @Override public boolean equals(Object o) { if (o == null) { return false; } if (this == o) { return true; } if (!(o instanceof MicroBlog)) return false; MicroBlog that = (MicroBlog) o; if (!auth.equals(that.auth)) return false; return true; } @Override public int hashCode() { return auth != null ? auth.hashCode() : 0; } @Override public String toString() { return "MicroBlog{" + "auth=" + auth + '}'; } public void setAuthorization(Authorization auth) { this.auth = auth; } public Authorization getAuthorization() { return auth; } /** * 判断文件合法性 * * @param image * 将被上传的图片文件 * @throws LibException * @author Weiping Ye * @version 创建时间: 2011-7-28 15:54:36 */ public void checkFileValidity(File image) throws LibException { if (image == null) { throw new LibException(ExceptionCode.PARAMETER_NULL); } if (!image.exists()) { throw new LibException(ExceptionCode.FILE_NOT_FOUND, image.getName() + " do't exist!"); } if (!image.isFile()) { throw new LibException(ExceptionCode.NOT_A_FILE, image.getName() + " is not a file!"); } } /** * 默认用新浪的接口。 */ @Override public Location getLocationByCoordinate(double latitude, double longitude) throws LibException { throw new LibException(ExceptionCode.UNSUPPORTED_API); } @Override public List<Trend> getUserTrends(String userId, Paging<Trend> paging) throws LibException { throw new LibException(ExceptionCode.UNSUPPORTED_API); } @Override public List<Status> getUserTrendsStatus(String trendName, Paging<Status> paging) throws LibException { throw new LibException(ExceptionCode.UNSUPPORTED_API); } }