{-# LANGUAGE FlexibleContexts, OverloadedStrings #-} -- | Likes handling -- module Instagram.Likes ( getLikes ,getLikesMaxId ,like ,unlike )where import Instagram.Monad import Instagram.Types import Data.String import qualified Data.Text as T import qualified Network.HTTP.Types as HT -- | Get a list of users who have liked this media. getLikes :: (MonadBaseControl IO m, MonadResource m) => MediaID -> Maybe OAuthToken -> InstagramT m (Envelope [User]) getLikes mid token =getGetEnvelopeM ["/v1/media/",mid,"/likes"] token ([]::HT.Query) getLikesMaxId :: (MonadBaseControl IO m, MonadResource m) => MediaID -> Maybe UserID -> Maybe OAuthToken -> InstagramT m (Envelope [User]) getLikesMaxId mid Nothing token =getGetEnvelopeM ["/v1/media/",mid,"/likes"] token ([]::HT.Query) getLikesMaxId mid (Just maxUserId) token = let maxid = (T.unpack maxUserId) :: String in getGetEnvelopeM ["/v1/media/",mid,"/likes"] token ([("MAX_ID", Just $ fromString $ maxid)]::HT.Query) -- | Set a like on this media by the currently authenticated user. like :: (MonadBaseControl IO m, MonadResource m) => MediaID -> OAuthToken -> InstagramT m (Envelope NoResult) like mid token =getPostEnvelope ["/v1/media/",mid,"/likes"] token ([]::HT.Query) -- | Remove a like on this media by the currently authenticated user. unlike :: (MonadBaseControl IO m, MonadResource m) => MediaID -> OAuthToken -> InstagramT m (Envelope NoResult) unlike mid token =getDeleteEnvelope ["/v1/media/",mid,"/likes"] token ([]::HT.Query)