package org.springframework.social.instagram.api;
import java.util.List;
/**
* Interface defining the operations for retrieving information about Instagram users and
* managing relationships amongst the authenticated user.
*/
public interface UserOperations {
/**
* Get basic information about the authenticated user
* @return Instagram profile
*/
InstagramProfile getUser();
/**
* Get basic information about a specific user
* @param userId
* @return Instagram profile
*/
InstagramProfile getUser(long userId);
/**
* Get the first page of the authenticated user's feed
* @return List of media
*/
PagedMediaList getFeed();
/**
* Get a range of media from the authenticated user's feed
* @param maxId Get media before this ID
* @param minId Get media after this ID
* @return List of media
*/
PagedMediaList getFeed(long maxId, long minId);
/**
* Get recent media of a specific user
* @param userId
* @return List of media
*/
PagedMediaList getRecentMedia(long userId);
/**
* Get a range of recent media of a specific user
* @param userId
* @param maxId Get media before this ID
* @param minId Get media after this ID
* @param minTimestamp Get media after this Unix timestamp
* @param manTimestamp Get media before this Unix timestamp
* @return List of media
*/
PagedMediaList getRecentMedia(long userId, long maxId, long minId, long minTimestamp, long maxTimestamp);
/**
* Search for users
* @param query
* @return List of profiles
*/
List<InstagramProfile> search(String query);
/**
* Get the list of users the specified user follows
* @param userId
* @return List of profiles
*/
List<InstagramProfile> getFollows(long userId);
/**
* Get the list of users the specified user is followed by
* @param userId
* @return List of profiles
*/
List<InstagramProfile> getFollowedBy(long userId);
/**
* List the users who have requested the authenticated user's permission to follow
* @return List of profiles
*/
List<InstagramProfile> getRequestedBy();
/**
* Get information about the authenticated user's relationship (follow/following/etc) to another user
* @param userId
* @return User relationship
*/
Relationship getRelationship(long userId);
/**
* Send a request to follow the specified user
* @param userId
*/
void followUser(long userId);
/**
* Stop following the specified user
* @param userId
*/
void unfollowUser(long userId);
/**
* Block the specified user
* @param userId
*/
void blockUser(long userId);
/**
* Unblock the specified user
* @param userId
*/
void unblockUser(long userId);
/**
* Approve a user's request to follow the authenticated user
* @param userId
*/
void approveUser(long userId);
/**
* Deny a user's request to follow the authenticated user
* @param user
*/
void denyUser(long user);
public static final String USERS_ENDPOINT = "users/";
}