-- Hoogle documentation, generated by Haddock -- See Hoogle, http://www.haskell.org/hoogle/ -- | Bindings to Instagram's API. -- -- This package exports bindings to Instagram's APIs (see -- http://instagram.com/developer/). -- -- While we would like to have a complete binding to Instagram's API, -- this package is being developed on demand. If you need something that -- has not been implemented yet, please send a pull request or file an -- issue on GitHub (https://github.com/loyful/ig/issues). -- -- A sample Yesod application demonstrating the API can be found at -- https://github.com/loyful/ig-testapp. @package ig @version 0.1 -- | the public API for Instagram access module Instagram -- | the instagram monad transformer this encapsulates the data necessary -- to pass the app credentials, etc data InstagramT m a -- | Run a computation in the InstagramT monad transformer with your -- credentials. runInstagramT :: Credentials -> Manager -> InstagramT m a -> m a -- | Run a ResourceT inside a InstagramT. runResourceInIs :: (MonadResource m, MonadBaseControl IO m) => InstagramT (ResourceT m) a -> InstagramT m a -- | an exception that a call to instagram may throw data IGException -- | the URI to redirect the user after she accepts/refuses to authorize -- the app type RedirectUri = Text -- | get the authorize url to redirect your user to getUserAccessTokenURL1 :: Monad m => RedirectUri -> [Scope] -> InstagramT m Text -- | second step of authorization: get the access token once the user has -- been redirected with a code getUserAccessTokenURL2 :: (MonadBaseControl IO m, MonadResource m) => RedirectUri -> Text -> InstagramT m OAuthToken -- | the app credentials data Credentials Credentials :: Text -> Text -> Credentials -- | client id cClientID :: Credentials -> Text -- | client secret cClientSecret :: Credentials -> Text -- | the oauth token returned after authentication data OAuthToken OAuthToken :: AccessToken -> User -> OAuthToken -- | the access token oaAccessToken :: OAuthToken -> AccessToken -- | the user structure returned oaUser :: OAuthToken -> User -- | the access token is simply a Text newtype AccessToken AccessToken :: Text -> AccessToken -- | the User partial profile returned by the authentication data User User :: UserID -> Text -> Text -> Maybe Text -> Maybe Text -> User uID :: User -> UserID uUsername :: User -> Text uFullName :: User -> Text uProfilePicture :: User -> Maybe Text uWebsite :: User -> Maybe Text -- | the scopes of the authentication data Scope Basic :: Scope Comments :: Scope Relationships :: Scope Likes :: Scope -- | envelope for Instagram OK response data Envelope d Envelope :: IGError -> d -> Maybe Pagination -> Envelope d -- | this should only say 200, no error, but put here for completeness eMeta :: Envelope d -> IGError -- | data, garanteed to be present (otherwise we get an ErrEnvelope) eData :: Envelope d -> d ePagination :: Envelope d -> Maybe Pagination -- | pagination info for responses that can return a lot of data data Pagination Pagination :: Maybe Text -> Maybe Text -> Maybe Text -> Maybe Text -> Maybe Text -> Pagination pNextUrl :: Pagination -> Maybe Text pNextMaxID :: Pagination -> Maybe Text pNextMinID :: Pagination -> Maybe Text pNextMaxTagID :: Pagination -> Maybe Text pMinTagID :: Pagination -> Maybe Text -- | instagram media object data Media Media :: MediaID -> Maybe Comment -> Text -> User -> POSIXTime -> Images -> Text -> [UserPosition] -> Maybe Text -> [Text] -> Maybe Location -> Collection Comment -> Collection User -> Bool -> Maybe Object -> Media mID :: Media -> MediaID mCaption :: Media -> Maybe Comment mLink :: Media -> Text mUser :: Media -> User mCreated :: Media -> POSIXTime mImages :: Media -> Images mType :: Media -> Text mUsersInPhoto :: Media -> [UserPosition] mFilter :: Media -> Maybe Text mTags :: Media -> [Text] mLocation :: Media -> Maybe Location mComments :: Media -> Collection Comment mLikes :: Media -> Collection User mUserHasLiked :: Media -> Bool -- | seems to be open format -- https:groups.google.comforum?fromgroups#!topicinstagram-api-developersKvGH1cnjljQ mAttribution :: Media -> Maybe Object -- | position in picture data Position Position :: Double -> Double -> Position pX :: Position -> Double pY :: Position -> Double -- | position of a user data UserPosition UserPosition :: Position -> User -> UserPosition upPosition :: UserPosition -> Position upUser :: UserPosition -> User -- | geographical location info data Location Location :: Maybe LocationID -> Maybe Double -> Maybe Double -> Maybe Text -> Maybe Text -> Location lID :: Location -> Maybe LocationID lLatitude :: Location -> Maybe Double lLongitude :: Location -> Maybe Double lStreetAddress :: Location -> Maybe Text lName :: Location -> Maybe Text -- | data for a single image data ImageData ImageData :: Text -> Integer -> Integer -> ImageData idURL :: ImageData -> Text idWidth :: ImageData -> Integer idHeight :: ImageData -> Integer -- | different images for the same media data Images Images :: ImageData -> ImageData -> ImageData -> Images iLowRes :: Images -> ImageData iThumbnail :: Images -> ImageData iStandardRes :: Images -> ImageData -- | Commenton on a medium data Comment Comment :: CommentID -> POSIXTime -> Text -> User -> Comment cID :: Comment -> CommentID cCreated :: Comment -> POSIXTime cText :: Comment -> Text cFrom :: Comment -> User -- | a collection of items (count + data) data can only be a subset data Collection a Collection :: Integer -> [a] -> Collection a cCount :: Collection a -> Integer cData :: Collection a -> [a] -- | Instagram returns data:null for nothing, but Aeson considers that () -- maps to an empty array... so we model the fact that we expect null via -- NoResult data NoResult -- | User ID type UserID = Text -- | Get basic information about a user. getUser :: (MonadBaseControl IO m, MonadResource m) => UserID -> Maybe OAuthToken -> InstagramT m (Envelope (Maybe User)) -- | Parameters for call to self feed data SelfFeedParams SelfFeedParams :: Maybe Integer -> Maybe Text -> Maybe Text -> SelfFeedParams sfpCount :: SelfFeedParams -> Maybe Integer sfpMaxID :: SelfFeedParams -> Maybe Text sfpMinId :: SelfFeedParams -> Maybe Text -- | See the authenticated user's feed. getSelfFeed :: (MonadBaseControl IO m, MonadResource m) => OAuthToken -> SelfFeedParams -> InstagramT m (Envelope [Media]) -- | Parameters for call to recent media data RecentParams RecentParams :: Maybe Integer -> Maybe POSIXTime -> Maybe POSIXTime -> Maybe Text -> Maybe Text -> RecentParams rpCount :: RecentParams -> Maybe Integer rpMaxTimestamp :: RecentParams -> Maybe POSIXTime rpMinTimestamp :: RecentParams -> Maybe POSIXTime rpMaxID :: RecentParams -> Maybe Text rpMinId :: RecentParams -> Maybe Text -- | Get the most recent media published by a user. getRecent :: (MonadBaseControl IO m, MonadResource m) => UserID -> OAuthToken -> RecentParams -> InstagramT m (Envelope [Media]) -- | parameters for self liked call data SelfLikedParams SelfLikedParams :: Maybe Integer -> Maybe Text -> SelfLikedParams slpCount :: SelfLikedParams -> Maybe Integer slpMaxLikeID :: SelfLikedParams -> Maybe Text -- | See the authenticated user's list of media they've liked. getSelfLiked :: (MonadBaseControl IO m, MonadResource m) => OAuthToken -> SelfLikedParams -> InstagramT m (Envelope [Media]) -- | parameters for self liked call data UserSearchParams UserSearchParams :: Text -> Maybe Integer -> UserSearchParams uspQuery :: UserSearchParams -> Text uspCount :: UserSearchParams -> Maybe Integer -- | Search for a user by name. searchUsers :: (MonadBaseControl IO m, MonadResource m) => Maybe OAuthToken -> UserSearchParams -> InstagramT m (Envelope [User]) -- | notification aspect data Aspect -- | the media Aspect, the only one supported for now media :: Aspect -- | the URL to receive notifications to type CallbackUrl = Text -- | a subscription to a real time notification data Subscription Subscription :: Text -> Text -> Text -> Maybe Text -> Aspect -> CallbackUrl -> Maybe Double -> Maybe Double -> Maybe Integer -> Subscription sID :: Subscription -> Text sType :: Subscription -> Text sObject :: Subscription -> Text sObjectID :: Subscription -> Maybe Text sAspect :: Subscription -> Aspect sCallbackUrl :: Subscription -> CallbackUrl sLatitude :: Subscription -> Maybe Double sLongitude :: Subscription -> Maybe Double sRadius :: Subscription -> Maybe Integer -- | create a subscription createSubscription :: (MonadBaseControl IO m, MonadResource m) => SubscriptionParams -> InstagramT m (Envelope Subscription) -- | list all subscriptions for the application listSubscriptions :: (MonadBaseControl IO m, MonadResource m) => InstagramT m (Envelope [Subscription]) -- | delete subscriptions based on criteria deleteSubscriptions :: (MonadBaseControl IO m, MonadResource m) => DeletionParams -> InstagramT m (Envelope Value) -- | details of subscription request data SubscriptionRequest -- | when a user uploads a picture UserRequest :: SubscriptionRequest -- | when a picture is tagged with the given tag TagRequest :: Text -> SubscriptionRequest trTag :: SubscriptionRequest -> Text -- | when a picture is tagged with a specific location LocationRequest :: Text -> SubscriptionRequest lrID :: SubscriptionRequest -> Text -- | when a picture is tagged with a location inside the given region GeographyRequest :: Double -> Double -> Integer -> SubscriptionRequest grLatitude :: SubscriptionRequest -> Double grLongitude :: SubscriptionRequest -> Double grRadius :: SubscriptionRequest -> Integer -- | parameters for the subscription creation data SubscriptionParams SubscriptionParams :: SubscriptionRequest -> CallbackUrl -> Aspect -> Maybe Text -> SubscriptionParams -- | the actual subscription request spRequest :: SubscriptionParams -> SubscriptionRequest -- | the url Instagram will post notifications to spCallback :: SubscriptionParams -> CallbackUrl -- | the subscription aspect spAspect :: SubscriptionParams -> Aspect -- | the verification token spVerifyToken :: SubscriptionParams -> Maybe Text -- | deletion parameters data DeletionParams -- | delete all subscriptions DeleteAll :: DeletionParams -- | delete one subscription, given its ID DeleteOne :: Text -> DeletionParams doID :: DeletionParams -> Text -- | delete all user subscriptions DeleteUsers :: DeletionParams -- | delete all tag subscriptions DeleteTags :: DeletionParams -- | delete all location subscriptions DeleteLocations :: DeletionParams -- | delete all geography subscriptions DeleteGeographies :: DeletionParams -- | an update from a subscription data Update Update :: Integer -> Text -> Text -> Aspect -> POSIXTime -> Update uSubscriptionID :: Update -> Integer uObject :: Update -> Text uObjectID :: Update -> Text uChangedAspect :: Update -> Aspect uTime :: Update -> POSIXTime -- | verify the signature with the content, using the secret as the key verifySignature :: Monad m => ByteString -> ByteString -> InstagramT m Bool -- | a Tag data Tag Tag :: TagName -> Integer -> Tag tName :: Tag -> TagName tMediaCount :: Tag -> Integer -- | Tag Name type TagName = Text -- | Get information about a tag object. getTag :: (MonadBaseControl IO m, MonadResource m) => TagName -> Maybe OAuthToken -> InstagramT m (Envelope (Maybe Tag)) -- | parameters for recent tag pagination data RecentTagParams RecentTagParams :: Maybe Text -> Maybe Text -> RecentTagParams rtpMaxID :: RecentTagParams -> Maybe Text rtpMinID :: RecentTagParams -> Maybe Text -- | Get a list of recently tagged media. getRecentTagged :: (MonadBaseControl IO m, MonadResource m) => TagName -> Maybe OAuthToken -> RecentTagParams -> InstagramT m (Envelope [Media]) -- | Search for tags by name. searchTags :: (MonadBaseControl IO m, MonadResource m) => TagName -> Maybe OAuthToken -> InstagramT m (Envelope [Tag]) -- | outgoing relationship status data OutgoingStatus Follows :: OutgoingStatus Requested :: OutgoingStatus OutNone :: OutgoingStatus -- | incoming relationship status data IncomingStatus FollowedBy :: IncomingStatus RequestedBy :: IncomingStatus BlockedByYou :: IncomingStatus InNone :: IncomingStatus -- | a relationship between two users data Relationship Relationship :: OutgoingStatus -> IncomingStatus -> Bool -> Relationship rOutgoing :: Relationship -> OutgoingStatus rIncoming :: Relationship -> IncomingStatus -- | not present in doc rTargetUserPrivate :: Relationship -> Bool -- | Get the list of users this user follows. getFollows :: (MonadBaseControl IO m, MonadResource m) => UserID -> Maybe OAuthToken -> InstagramT m (Envelope [User]) -- | Get the list of users this user is followed by. getFollowedBy :: (MonadBaseControl IO m, MonadResource m) => UserID -> Maybe OAuthToken -> InstagramT m (Envelope [User]) -- | List the users who have requested this user's permission to follow. getRequestedBy :: (MonadBaseControl IO m, MonadResource m) => OAuthToken -> InstagramT m (Envelope [User]) -- | Get information about a relationship to another user. getRelationship :: (MonadBaseControl IO m, MonadResource m) => UserID -> OAuthToken -> InstagramT m (Envelope Relationship) -- | Modify the relationship between the current user and the target user. setRelationShip :: (MonadBaseControl IO m, MonadResource m) => UserID -> OAuthToken -> RelationShipAction -> InstagramT m (Envelope Relationship) -- | relationship action data RelationShipAction Follow :: RelationShipAction Unfollow :: RelationShipAction Block :: RelationShipAction Unblock :: RelationShipAction Approve :: RelationShipAction Deny :: RelationShipAction -- | Media ID type MediaID = Text -- | Get information about a media object. getMedia :: (MonadBaseControl IO m, MonadResource m) => MediaID -> Maybe OAuthToken -> InstagramT m (Envelope (Maybe Media)) -- | Get a list of what media is most popular at the moment. getPopularMedia :: (MonadBaseControl IO m, MonadResource m) => Maybe OAuthToken -> InstagramT m (Envelope [Media]) -- | Parameters for call to media search data MediaSearchParams MediaSearchParams :: Maybe Double -> Maybe Double -> Maybe Integer -> Maybe POSIXTime -> Maybe POSIXTime -> MediaSearchParams mspLatitude :: MediaSearchParams -> Maybe Double mspLongitude :: MediaSearchParams -> Maybe Double mspDistance :: MediaSearchParams -> Maybe Integer mspMaxTimestamp :: MediaSearchParams -> Maybe POSIXTime mspMinTimestamp :: MediaSearchParams -> Maybe POSIXTime -- | Search for media in a given area. searchMedia :: (MonadBaseControl IO m, MonadResource m) => Maybe OAuthToken -> MediaSearchParams -> InstagramT m (Envelope [Media]) -- | comment id type CommentID = Text -- | Get a full list of comments on a media. getComments :: (MonadBaseControl IO m, MonadResource m) => MediaID -> Maybe OAuthToken -> InstagramT m (Envelope [Comment]) -- | Create a comment on a media. postComment :: (MonadBaseControl IO m, MonadResource m) => MediaID -> OAuthToken -> Text -> InstagramT m (Envelope NoResult) -- | Remove a comment either on the authenticated user's media or authored -- by the authenticated user. deleteComment :: (MonadBaseControl IO m, MonadResource m) => MediaID -> CommentID -> OAuthToken -> InstagramT m (Envelope NoResult) -- | Get a list of users who have liked this media. getLikes :: (MonadBaseControl IO m, MonadResource m) => MediaID -> Maybe OAuthToken -> InstagramT m (Envelope [User]) -- | Set a like on this media by the currently authenticated user. like :: (MonadBaseControl IO m, MonadResource m) => MediaID -> OAuthToken -> InstagramT m (Envelope NoResult) -- | Remove a like on this media by the currently authenticated user. unlike :: (MonadBaseControl IO m, MonadResource m) => MediaID -> OAuthToken -> InstagramT m (Envelope NoResult) -- | location ID type LocationID = Text -- | Get information about a location. getLocation :: (MonadBaseControl IO m, MonadResource m) => LocationID -> Maybe OAuthToken -> InstagramT m (Envelope (Maybe Location)) -- | Parameters for call to recent media in location search data LocationMediaParams LocationMediaParams :: Maybe POSIXTime -> Maybe POSIXTime -> Maybe Text -> Maybe Text -> LocationMediaParams lmspMaxTimestamp :: LocationMediaParams -> Maybe POSIXTime lmspMinTimestamp :: LocationMediaParams -> Maybe POSIXTime lmspMaxID :: LocationMediaParams -> Maybe Text lmspMinId :: LocationMediaParams -> Maybe Text -- | Get a list of recent media objects from a given location. getLocationRecentMedia :: (MonadBaseControl IO m, MonadResource m) => LocationID -> Maybe OAuthToken -> LocationMediaParams -> InstagramT m (Envelope [Media]) -- | Parameters for call to media search data LocationSearchParams LocationSearchParams :: Maybe Double -> Maybe Double -> Maybe Integer -> Maybe Text -> Maybe Text -> LocationSearchParams lspLatitude :: LocationSearchParams -> Maybe Double lspLongitude :: LocationSearchParams -> Maybe Double lspDistance :: LocationSearchParams -> Maybe Integer lspFoursquareIDv2 :: LocationSearchParams -> Maybe Text lspFoursquareID :: LocationSearchParams -> Maybe Text -- | Search for a location by geographic coordinate. searchLocations :: (MonadBaseControl IO m, MonadResource m) => Maybe OAuthToken -> LocationSearchParams -> InstagramT m (Envelope [Location]) -- | geography ID type GeographyID = Text -- | Parameters for call to recent media in geography search data GeographyMediaParams GeographyMediaParams :: Maybe Integer -> Maybe Text -> GeographyMediaParams gmpCount :: GeographyMediaParams -> Maybe Integer gmpMinId :: GeographyMediaParams -> Maybe Text -- | Get very recent media from a geography subscription that you created getGeographyRecentMedia :: (MonadBaseControl IO m, MonadResource m) => GeographyID -> GeographyMediaParams -> InstagramT m (Envelope [Media])