package weiboclient4j; import org.scribe.model.OAuthRequest; import weiboclient4j.model.CreatePoiResponse; import weiboclient4j.model.Poi; import weiboclient4j.model.PoiCategory; import weiboclient4j.model.PoiList; import weiboclient4j.model.Status; import weiboclient4j.model.StatusList; import weiboclient4j.model.Timeline; import weiboclient4j.model.UserLBS; import weiboclient4j.model.UserList; import weiboclient4j.params.BaseApp; import weiboclient4j.params.Category; import weiboclient4j.params.City; import weiboclient4j.params.Id; import weiboclient4j.params.IsPublic; import weiboclient4j.params.Keyword; import weiboclient4j.params.Latitude; import weiboclient4j.params.Longitude; import weiboclient4j.params.Paging; import weiboclient4j.params.ParameterAction; import weiboclient4j.params.Parameters; import weiboclient4j.params.PoiId; import weiboclient4j.params.StatusParam; import weiboclient4j.params.Title; import weiboclient4j.params.Uid; import java.io.File; import java.io.IOException; import java.util.List; /** * @author Hover Ruan */ @SuppressWarnings("unchecked") public class PlaceService extends AbstractService { private static final String PIC_PARAM_NAME = "pic"; public PlaceService(WeiboClient client) { super(client); } public static interface GetPublishTimelineParam extends ParameterAction { } public Timeline getPublishTimeline() throws WeiboClientException { return getPublishTimeline(Paging.EMPTY); } public <T extends GetPublishTimelineParam> Timeline getPublishTimeline(T... optionalParams) throws WeiboClientException { return doGet("place/public_timeline", Paging.EMPTY, buildParams(optionalParams), Timeline.class); } public <T extends GetPublishTimelineParam> Timeline getPublishTimeline( Paging paging, T... optionalParams) throws WeiboClientException { return doGet("place/public_timeline", paging, buildParams(optionalParams), Timeline.class); } public static interface GetFriendsTimelineParam extends ParameterAction { } public Timeline getFriendsTimeline() throws WeiboClientException { return getFriendsTimeline(Paging.EMPTY); } public <T extends GetFriendsTimelineParam> Timeline getFriendsTimeline(T... optionalParams) throws WeiboClientException { return doGet("place/friends_timeline", Paging.EMPTY, buildParams(optionalParams), Timeline.class); } public <T extends GetFriendsTimelineParam> Timeline getFriendsTimeline( Paging paging, T... optionalParams) throws WeiboClientException { return doGet("place/friends_timeline", paging, buildParams(optionalParams), Timeline.class); } public static interface GetUserTimelineParam extends ParameterAction { } public Timeline getUserTimeline(Uid uid) throws WeiboClientException { return getUserTimeline(uid, Paging.EMPTY); } public <T extends GetUserTimelineParam> Timeline getUserTimeline(Uid uid, T... optionalParams) throws WeiboClientException { return doGet("place/user_timeline", Paging.EMPTY, buildParams(optionalParams, uid), Timeline.class); } public <T extends GetUserTimelineParam> Timeline getUserTimeline( Uid uid, Paging paging, T... optionalParams) throws WeiboClientException { return doGet("place/user_timeline", paging, buildParams(optionalParams, uid), Timeline.class); } public static interface GetPoiTimelineParam extends ParameterAction { } public Timeline getPoiTimeline(PoiId poiId) throws WeiboClientException { return getPoiTimeline(poiId, Paging.EMPTY); } public <T extends GetPoiTimelineParam> Timeline getPoiTimeline(PoiId poiId, T... optionalParams) throws WeiboClientException { return doGet("place/poi_timeline", Paging.EMPTY, buildParams(optionalParams, poiId), Timeline.class); } public <T extends GetPoiTimelineParam> Timeline getPoiTimeline( PoiId poiId, Paging paging, T... optionalParams) throws WeiboClientException { return doGet("place/poi_timeline", paging, buildParams(optionalParams, poiId), Timeline.class); } public static interface GetNearbyTimelineParam extends ParameterAction { } public Timeline getNearbyTimeline(Latitude latitude, Longitude longitude) throws WeiboClientException { return getNearbyTimeline(latitude, longitude, Paging.EMPTY); } public <T extends GetNearbyTimelineParam> Timeline getNearbyTimeline( Latitude latitude, Longitude longitude, T... optionalParams) throws WeiboClientException { return doGet("place/nearby_timeline", Paging.EMPTY, buildParams(optionalParams, latitude, longitude), Timeline.class); } public <T extends GetNearbyTimelineParam> Timeline getNearbyTimeline( Latitude latitude, Longitude longitude, Paging paging, T... optionalParams) throws WeiboClientException { return doGet("place/nearby_timeline", paging, buildParams(optionalParams, latitude, longitude), Timeline.class); } public Status showStatus(Id id) throws WeiboClientException { return doGet("place/statuses/show", withParams(id), Status.class); } public UserLBS showUser(Uid uid) throws WeiboClientException { return showUser(uid, BaseApp.No); } public UserLBS showUser(Uid uid, BaseApp baseApp) throws WeiboClientException { return doGet("place/users/show", withParams(uid, baseApp), UserLBS.class); } public static interface GetUserCheckinsParam extends ParameterAction { } public PoiList getUserCheckins(Uid uid) throws WeiboClientException { return getUserCheckins(uid, Paging.EMPTY); } public <T extends GetUserCheckinsParam> PoiList getUserCheckins( Uid uid, T... optionalParams) throws WeiboClientException { return doGet("place/users/checkins", Paging.EMPTY, buildParams(optionalParams, uid), PoiList.class); } public <T extends GetUserCheckinsParam> PoiList getUserCheckins( Uid uid, Paging paging, T... optionalParams) throws WeiboClientException { return doGet("place/users/checkins", paging, buildParams(optionalParams, uid), PoiList.class); } public static interface GetUserPhotosParam extends ParameterAction { } public StatusList getUserPhotos(Uid uid) throws WeiboClientException { return getUserPhotos(uid, Paging.EMPTY); } public <T extends GetUserPhotosParam> StatusList getUserPhotos( Uid uid, T... optionalParams) throws WeiboClientException { return doGet("place/users/photos", Paging.EMPTY, buildParams(optionalParams, uid), StatusList.class); } public <T extends GetUserPhotosParam> StatusList getUserPhotos( Uid uid, Paging paging, T... optionalParams) throws WeiboClientException { return doGet("place/users/photos", paging, buildParams(optionalParams, uid), StatusList.class); } public static interface GetUserTipsParam extends ParameterAction { } public StatusList getUserTips(Uid uid) throws WeiboClientException { return getUserTips(uid, Paging.EMPTY); } public <T extends GetUserTipsParam> StatusList getUserTips( Uid uid, T... optionalParams) throws WeiboClientException { return doGet("place/users/tips", Paging.EMPTY, buildParams(optionalParams, uid), StatusList.class); } public <T extends GetUserTipsParam> StatusList getUserTips( Uid uid, Paging paging, T... optionalParams) throws WeiboClientException { return doGet("place/users/tips", paging, buildParams(optionalParams, uid), StatusList.class); } public static interface GetUserTodosParam extends ParameterAction { } public StatusList getUserTodos(Uid uid) throws WeiboClientException { return getUserTodos(uid, Paging.EMPTY); } public <T extends GetUserTodosParam> StatusList getUserTodos( Uid uid, T... optionalParams) throws WeiboClientException { return doGet("place/users/todos", Paging.EMPTY, buildParams(optionalParams, uid), StatusList.class); } public <T extends GetUserTodosParam> StatusList getUserTodos( Uid uid, Paging paging, T... optionalParams) throws WeiboClientException { return doGet("place/users/todos", paging, buildParams(optionalParams, uid), StatusList.class); } public Poi showPoi(PoiId poiId) throws WeiboClientException { return showPoi(poiId, BaseApp.No); } public Poi showPoi(PoiId poiId, BaseApp baseApp) throws WeiboClientException { return doGet("place/pois/show", withParams(poiId, baseApp), Poi.class); } public static interface GetPoiUsersParam extends ParameterAction { } public UserList getPoiUsers(PoiId poiId) throws WeiboClientException { return getPoiUsers(poiId, Paging.EMPTY); } public <T extends GetPoiUsersParam> UserList getPoiUsers(PoiId poiId, T... optionalParams) throws WeiboClientException { return doGet("place/pois/users", Paging.EMPTY, buildParams(optionalParams, poiId), UserList.class); } public <T extends GetPoiUsersParam> UserList getPoiUsers(PoiId poiId, Paging paging, T... optionalParams) throws WeiboClientException { return doGet("place/pois/users", paging, buildParams(optionalParams, poiId), UserList.class); } public static interface GetPoiTipsParam extends ParameterAction { } public StatusList getPoiTips(PoiId poiId) throws WeiboClientException { return getPoiTips(poiId, Paging.EMPTY); } public <T extends GetPoiTipsParam> StatusList getPoiTips(PoiId poiId, T... optionalParams) throws WeiboClientException { return doGet("place/pois/tips", Paging.EMPTY, buildParams(optionalParams, poiId), StatusList.class); } public <T extends GetPoiTipsParam> StatusList getPoiTips(PoiId poiId, Paging paging, T... optionalParams) throws WeiboClientException { return doGet("place/pois/tips", paging, buildParams(optionalParams, poiId), StatusList.class); } public static interface GetPoiPhotosParam extends ParameterAction { } public StatusList getPoiPhotos(PoiId poiId) throws WeiboClientException { return getPoiPhotos(poiId, Paging.EMPTY); } public <T extends GetPoiPhotosParam> StatusList getPoiPhotos(PoiId poiId, T... optionalParams) throws WeiboClientException { return doGet("place/pois/photos", Paging.EMPTY, buildParams(optionalParams, poiId), StatusList.class); } public <T extends GetPoiPhotosParam> StatusList getPoiPhotos(PoiId poiId, Paging paging, T... optionalParams) throws WeiboClientException { return doGet("place/pois/photos", paging, buildParams(optionalParams, poiId), StatusList.class); } public static interface SearchPoisParam extends ParameterAction { } public PoiList searchPois(Keyword keyword) throws WeiboClientException { return searchPois(keyword, Paging.EMPTY); } public <T extends SearchPoisParam> PoiList searchPois(Keyword keyword, T... optionalParams) throws WeiboClientException { return doGet("place/pois/search", Paging.EMPTY, buildParams(optionalParams, keyword), PoiList.class); } public <T extends SearchPoisParam> PoiList searchPois(Keyword keyword, Paging paging, T... optionalParams) throws WeiboClientException { return doGet("place/pois/search", paging, buildParams(optionalParams, keyword), PoiList.class); } public static interface GetPoiCategoriesParam extends ParameterAction { } public <T extends GetPoiCategoriesParam> List<PoiCategory> getPoiCategories(T... optionalParams) throws WeiboClientException { return doGet("place/pois/category", buildParams(optionalParams), PoiCategory.POI_CATEGORY_LIST); } public static interface GetNearbyPoisParam extends ParameterAction { } public PoiList getNearbyPois(Latitude latitude, Longitude longitude) throws WeiboClientException { return getNearbyPois(latitude, longitude, Paging.EMPTY); } public <T extends GetNearbyPoisParam> PoiList getNearbyPois( Latitude latitude, Longitude longitude, T... optionalParams) throws WeiboClientException { return doGet("place/nearby/pois", Paging.EMPTY, buildParams(optionalParams, latitude, longitude), PoiList.class); } public <T extends GetNearbyPoisParam> PoiList getNearbyPois( Latitude latitude, Longitude longitude, Paging paging, T... optionalParams) throws WeiboClientException { return doGet("place/nearby/pois", paging, buildParams(optionalParams, latitude, longitude), PoiList.class); } public static interface GetNearbyUsersParam extends ParameterAction { } public UserList getNearbyUsers(Latitude latitude, Longitude longitude) throws WeiboClientException { return getNearbyUsers(latitude, longitude, Paging.EMPTY); } public <T extends GetNearbyUsersParam> UserList getNearbyUsers( Latitude latitude, Longitude longitude, T... optionalParams) throws WeiboClientException { return doGet("place/nearby/users", Paging.EMPTY, buildParams(optionalParams, latitude, longitude), UserList.class); } public <T extends GetNearbyUsersParam> UserList getNearbyUsers( Latitude latitude, Longitude longitude, Paging paging, T... optionalParams) throws WeiboClientException { return doGet("place/nearby/users", paging, buildParams(optionalParams, latitude, longitude), UserList.class); } public static interface GetNearbyPhotosParam extends ParameterAction { } public StatusList getNearbyPhotos(Latitude latitude, Longitude longitude) throws WeiboClientException { return getNearbyPhotos(latitude, longitude, Paging.EMPTY); } public <T extends GetNearbyPhotosParam> StatusList getNearbyPhotos( Latitude latitude, Longitude longitude, T... optionalParams) throws WeiboClientException { return doGet("place/nearby/photos", Paging.EMPTY, buildParams(optionalParams, latitude, longitude), StatusList.class); } public <T extends GetNearbyPhotosParam> StatusList getNearbyPhotos( Latitude latitude, Longitude longitude, Paging paging, T... optionalParams) throws WeiboClientException { return doGet("place/nearby/photos", paging, buildParams(optionalParams, latitude, longitude), StatusList.class); } public static interface GetNearbyUsersListParam extends ParameterAction { } public UserList getNearbyUsersList(Latitude latitude, Longitude longitude) throws WeiboClientException { return getNearbyUsersList(latitude, longitude, Paging.EMPTY); } public <T extends GetNearbyUsersListParam> UserList getNearbyUsersList( Latitude latitude, Longitude longitude, T... optionalParams) throws WeiboClientException { return doGet("place/nearby_users/list", Paging.EMPTY, buildParams(optionalParams, latitude, longitude), UserList.class); } public <T extends GetNearbyUsersListParam> UserList getNearbyUsersList( Latitude latitude, Longitude longitude, Paging paging, T... optionalParams) throws WeiboClientException { return doGet("place/nearby_users/list", paging, buildParams(optionalParams, latitude, longitude), UserList.class); } public static interface CreatePoiParam extends ParameterAction { } public <T extends CreatePoiParam> CreatePoiResponse createPoi( Title title, Category category, Latitude latitude, Longitude longitude, City city, T... optionalParams) throws WeiboClientException { return doPost("place/pois/create", buildParams(optionalParams, title, category, latitude, longitude, city), CreatePoiResponse.class); } public Status addCheckin(PoiId poiId, StatusParam status) throws WeiboClientException { return addCheckin(poiId, status, null, null); } public Status addCheckin(PoiId poiId, StatusParam status, IsPublic isPublic) throws WeiboClientException { return addCheckin(poiId, status, null, isPublic); } public Status addCheckin(PoiId poiId, StatusParam status, File image) throws WeiboClientException { return addCheckin(poiId, status, image, null); } public Status addCheckin(PoiId poiId, StatusParam status, File image, IsPublic isPublic) throws WeiboClientException { OAuthRequest request = createPostRequest("place/pois/add_checkin"); Parameters params = withParams(poiId, status, isPublic); if (image != null) { try { buildUploadRequest(request, PIC_PARAM_NAME, image, params); } catch (IOException e) { throw new WeiboClientException(e); } } return sendRequestAndGetResponseObject(request, Status.class); } public Status addPhoto(PoiId poiId, StatusParam status, File image) throws WeiboClientException { return addPhoto(poiId, status, image, null); } public Status addPhoto(PoiId poiId, StatusParam status, File image, IsPublic isPublic) throws WeiboClientException { OAuthRequest request = createPostRequest("place/pois/add_photo"); Parameters params = withParams(poiId, status, isPublic); if (image != null) { try { buildUploadRequest(request, PIC_PARAM_NAME, image, params); } catch (IOException e) { throw new WeiboClientException(e); } } return sendRequestAndGetResponseObject(request, Status.class); } public Status addTip(PoiId poiId, StatusParam status) throws WeiboClientException { return addTip(poiId, status, null); } public Status addTip(PoiId poiId, StatusParam status, IsPublic isPublic) throws WeiboClientException { return doPost("place/pois/add_tip", withParams(poiId, status, isPublic), Status.class); } public Status addTodo(PoiId poiId, StatusParam status) throws WeiboClientException { return addTodo(poiId, status, null); } public Status addTodo(PoiId poiId, StatusParam status, IsPublic isPublic) throws WeiboClientException { return doPost("place/pois/add_todo", withParams(poiId, status, isPublic), Status.class); } public int createNearbyUser(Latitude latitude, Longitude longitude) throws WeiboClientException { StatusResponse response = doPost("place/nearby_users/create", withParams(latitude, longitude), StatusResponse.class); return response.getStatus(); } public int destroyNearbyUser() throws WeiboClientException { StatusResponse response = doPost("place/nearby_users/destroy", StatusResponse.class); return response.getStatus(); } }