twitter-conduit-0.2.1: Twitter API package with conduit interface and Streaming API support.

Safe HaskellNone
LanguageHaskell98

Web.Twitter.Conduit.Api

Contents

Synopsis

Search

searchTweets Source #

Arguments

:: Text

search string

-> APIRequest SearchTweets (SearchResult [Status]) 

Returns search query.

You can perform a search query using call:

res <- call (searchTweets "search text")
print $ res ^. searchResultStatuses
>>> searchTweets "search text"
APIRequestGet "https://api.twitter.com/1.1/search/tweets.json" [("q","search text")]
>>> searchTweets "search text" & lang ?~ "ja" & count ?~ 100
APIRequestGet "https://api.twitter.com/1.1/search/tweets.json" [("count","100"),("lang","ja"),("q","search text")]

search Source #

Arguments

:: Text

search string

-> APIRequest SearchTweets (SearchResult [Status]) 

Alias of searchTweets, for backward compatibility

Direct Messages

directMessages :: APIRequest DirectMessages [DirectMessage] Source #

Returns query data which asks recent direct messages sent to the authenticating user.

You can perform a query using call:

res <- call twInfo mgr $ directMessages & count ?~ 100
>>> directMessages
APIRequestGet "https://api.twitter.com/1.1/direct_messages.json" []
>>> directMessages & count ?~ 100
APIRequestGet "https://api.twitter.com/1.1/direct_messages.json" [("count","100")]

directMessagesSent :: APIRequest DirectMessagesSent [DirectMessage] Source #

Returns query data which asks recent direct messages sent by the authenticating user.

You can perform a query using call:

res <- call twInfo mgr $ directMessagesSent & count ?~ 100
>>> directMessagesSent
APIRequestGet "https://api.twitter.com/1.1/direct_messages/sent.json" []
>>> directMessagesSent & count ?~ 100
APIRequestGet "https://api.twitter.com/1.1/direct_messages/sent.json" [("count","100")]

directMessagesShow :: StatusId -> APIRequest DirectMessagesShow DirectMessage Source #

Returns query data which asks a single direct message, specified by an id parameter.

You can perform a query using call:

res <- call twInfo mgr $ directMessagesShow 1234567890
>>> directMessagesShow 1234567890
APIRequestGet "https://api.twitter.com/1.1/direct_messages/show.json" [("id","1234567890")]

directMessagesDestroy :: StatusId -> APIRequest DirectMessagesDestroy DirectMessage Source #

Returns post data which destroys the direct message specified in the required ID parameter.

You can perform a query using call:

res <- call twInfo mgr $ directMessagesDestroy 1234567890
>>> directMessagesDestroy 1234567890
APIRequestPost "https://api.twitter.com/1.1/direct_messages/destroy.json" [("id","1234567890")]

directMessagesNew :: UserParam -> Text -> APIRequest DirectMessagesNew DirectMessage Source #

Returns post data which sends a new direct message to the specified user from the authenticating user.

You can perform a post using call:

res <- call twInfo mgr $ directMessagesNew (ScreenNameParam "thimura") "Hello DM"
>>> directMessagesNew (ScreenNameParam "thimura") "Hello DM"
APIRequestPost "https://api.twitter.com/1.1/direct_messages/new.json" [("text","Hello DM"),("screen_name","thimura")]
>>> directMessagesNew (UserIdParam 69179963) "Hello thimura! by UserId"
APIRequestPost "https://api.twitter.com/1.1/direct_messages/new.json" [("text","Hello thimura! by UserId"),("user_id","69179963")]

Friends & Followers

friendshipsNoRetweetsIds :: APIRequest FriendshipsNoRetweetsIds [UserId] Source #

Returns a collection of user_ids that the currently authenticated user does not want to receive retweets from.

You can perform a request using call:

res <- call twInfo mgr $ friendshipsNoRetweetsIds
>>> friendshipsNoRetweetsIds
APIRequestGet "https://api.twitter.com/1.1/friendships/no_retweets/ids.json" []

friendsIds :: UserParam -> APIRequest FriendsIds (WithCursor IdsCursorKey UserId) Source #

Returns query data which asks a collection of user IDs for every user the specified user is following.

You can perform a query using call:

res <- call twInfo mgr $ friendsIds (ScreenNameParam "thimura")

Or, you can iterate with sourceWithCursor:

sourceWithCursor (friendsIds (ScreenNameParam "thimura")) $$ CL.consume
>>> friendsIds (ScreenNameParam "thimura")
APIRequestGet "https://api.twitter.com/1.1/friends/ids.json" [("screen_name","thimura")]
>>> friendsIds (ScreenNameParam "thimura") & count ?~ 5000
APIRequestGet "https://api.twitter.com/1.1/friends/ids.json" [("count","5000"),("screen_name","thimura")]

followersIds :: UserParam -> APIRequest FollowersIds (WithCursor IdsCursorKey UserId) Source #

Returns query data which asks a collection of user IDs for every user following the specified user.

You can perform a query using call:

res <- call twInfo mgr $ followersIds (ScreenNameParam "thimura")

Or, you can iterate with sourceWithCursor:

sourceWithCursor (followersIds (ScreenNameParam "thimura")) $$ CL.consume
>>> followersIds (ScreenNameParam "thimura")
APIRequestGet "https://api.twitter.com/1.1/followers/ids.json" [("screen_name","thimura")]
>>> followersIds (ScreenNameParam "thimura") & count ?~ 5000
APIRequestGet "https://api.twitter.com/1.1/followers/ids.json" [("count","5000"),("screen_name","thimura")]

friendshipsIncoming :: APIRequest FriendshipsIncoming (WithCursor IdsCursorKey UserId) Source #

Returns a collection of numeric IDs for every user who has a pending request to follow the authenticating user.

You can perform a request by using call:

res <- call twInfo mgr $ friendshipsIncoming

Or, you can iterate with sourceWithCursor:

sourceWithCursor friendshipsIncoming $$ CL.consume
>>> friendshipsIncoming
APIRequestGet "https://api.twitter.com/1.1/friendships/incoming.json" []

friendshipsOutgoing :: APIRequest FriendshipsOutgoing (WithCursor IdsCursorKey UserId) Source #

Returns a collection of numeric IDs for every protected user for whom the authenticating user has a pending follow request.

You can perform a request by using call:

res <- call twInfo mgr $ friendshipsOutgoing

Or, you can iterate with sourceWithCursor:

sourceWithCursor friendshipsOutgoing $$ CL.consume
>>> friendshipsOutgoing
APIRequestGet "https://api.twitter.com/1.1/friendships/outgoing.json" []

friendshipsCreate :: UserParam -> APIRequest FriendshipsCreate User Source #

Returns post data which follows the user specified in the ID parameter.

You can perform request by using call:

res <- call twInfo mgr $ friendshipsCreate (ScreenNameParam "thimura")
>>> friendshipsCreate (ScreenNameParam "thimura")
APIRequestPost "https://api.twitter.com/1.1/friendships/create.json" [("screen_name","thimura")]
>>> friendshipsCreate (UserIdParam 69179963)
APIRequestPost "https://api.twitter.com/1.1/friendships/create.json" [("user_id","69179963")]

friendshipsDestroy :: UserParam -> APIRequest FriendshipsDestroy User Source #

Returns post data which unfollows the user specified in the ID parameter.

You can perform request by using call:

res <- call twInfo mgr $ friendshipsDestroy (ScreenNameParam "thimura")
>>> friendshipsDestroy (ScreenNameParam "thimura")
APIRequestPost "https://api.twitter.com/1.1/friendships/destroy.json" [("screen_name","thimura")]
>>> friendshipsDestroy (UserIdParam 69179963)
APIRequestPost "https://api.twitter.com/1.1/friendships/destroy.json" [("user_id","69179963")]

friendsList :: UserParam -> APIRequest FriendsList (WithCursor UsersCursorKey User) Source #

Returns query data which asks a cursored collection of user objects for every user the specified users is following.

You can perform request by using call:

res <- call twInfo mgr $ friendsList (ScreenNameParam "thimura")

Or, you can iterate with sourceWithCursor:

sourceWithCursor (friendsList (ScreenNameParam "thimura")) $$ CL.consume
>>> friendsList (ScreenNameParam "thimura")
APIRequestGet "https://api.twitter.com/1.1/friends/list.json" [("screen_name","thimura")]
>>> friendsList (UserIdParam 69179963)
APIRequestGet "https://api.twitter.com/1.1/friends/list.json" [("user_id","69179963")]

followersList :: UserParam -> APIRequest FollowersList (WithCursor UsersCursorKey User) Source #

Returns query data which asks a cursored collection of user objects for users following the specified user.

You can perform request by using call:

res <- call twInfo mgr $ followersList (ScreenNameParam "thimura")

Or, you can iterate with sourceWithCursor:

sourceWithCursor (followersList (ScreenNameParam "thimura")) $$ CL.consume
>>> followersList (ScreenNameParam "thimura")
APIRequestGet "https://api.twitter.com/1.1/followers/list.json" [("screen_name","thimura")]
>>> followersList (UserIdParam 69179963)
APIRequestGet "https://api.twitter.com/1.1/followers/list.json" [("user_id","69179963")]

Users

accountVerifyCredentials :: APIRequest AccountVerifyCredentials User Source #

Returns query data asks that the credential is valid.

You can perform request by using call:

res <- call twInfo mgr $ accountVerifyCredentials
>>> accountVerifyCredentials
APIRequestGet "https://api.twitter.com/1.1/account/verify_credentials.json" []

accountUpdateProfile :: APIRequest AccountUpdateProfile User Source #

Returns user object with updated fields. Note that while no specific parameter is required, you need to provide at least one parameter before executing the query.

You can perform request by using call:

res <- call twInfo mgr $ accountUpdateProfile & url ?~ "http://www.example.com"
>>> accountUpdateProfile & url ?~ "http://www.example.com"
APIRequestPost "https://api.twitter.com/1.1/account/update_profile.json" [("url","http://www.example.com")]

usersLookup :: UserListParam -> APIRequest UsersLookup [User] Source #

Returns query data asks user objects.

You can perform request by using call:

res <- call twInfo mgr $ usersLookup (ScreenNameListParam ["thimura", "twitterapi"])
>>> usersLookup (ScreenNameListParam ["thimura", "twitterapi"])
APIRequestGet "https://api.twitter.com/1.1/users/lookup.json" [("screen_name","thimura,twitterapi")]

usersShow :: UserParam -> APIRequest UsersShow User Source #

Returns query data asks the user specified by user id or screen name parameter.

You can perform request by using call:

res <- call twInfo mgr $ usersShow (ScreenNameParam "thimura")
>>> usersShow (ScreenNameParam "thimura")
APIRequestGet "https://api.twitter.com/1.1/users/show.json" [("screen_name","thimura")]

Suggested Users

Favorites

favoritesList :: Maybe UserParam -> APIRequest FavoritesList [Status] Source #

Returns the 20 most recent Tweets favorited by the specified user.

You can perform request by using call:

res <- call twInfo mgr $ favoritesList (ScreenNameParam "thimura")
>>> favoritesList Nothing
APIRequestGet "https://api.twitter.com/1.1/favorites/list.json" []
>>> favoritesList (Just (ScreenNameParam "thimura"))
APIRequestGet "https://api.twitter.com/1.1/favorites/list.json" [("screen_name","thimura")]
>>> favoritesList (Just (UserIdParam 69179963))
APIRequestGet "https://api.twitter.com/1.1/favorites/list.json" [("user_id","69179963")]

favoritesDestroy :: StatusId -> APIRequest FavoritesDestroy Status Source #

Returns post data unfavorites the status specified in the ID paramter as the authenticating user.

You can perform request by using call:

res <- call twInfo mgr $ favoritesDestroy 1234567890
>>> favoritesDestroy 1234567890
APIRequestPost "https://api.twitter.com/1.1/favorites/destroy.json" [("id","1234567890")]

favoritesCreate :: StatusId -> APIRequest FavoritesCreate Status Source #

Returns post data which favorites the status specified in the ID parameter as the authenticating user.

You can perform request by using call:

res <- call twInfo mgr $ favoritesCreate 1234567890
>>> favoritesCreate 1234567890
APIRequestPost "https://api.twitter.com/1.1/favorites/create.json" [("id","1234567890")]

Lists

listsStatuses :: ListParam -> APIRequest ListsStatuses [Status] Source #

Returns the query parameter which fetches a timeline of tweets authored by members of the specified list.

You can perform request by using call:

res <- call twInfo mgr $ listsStatuses (ListNameParam "thimura/haskell")

If you need more statuses, you can obtain those by using sourceWithMaxId: res <- sourceWithMaxId (listsStatuses (ListNameParam "thimura/haskell") & count ?~ 200) $$ CL.take 1000

>>> listsStatuses (ListNameParam "thimura/haskell")
APIRequestGet "https://api.twitter.com/1.1/lists/statuses.json" [("slug","haskell"),("owner_screen_name","thimura")]
>>> listsStatuses (ListIdParam 20849097)
APIRequestGet "https://api.twitter.com/1.1/lists/statuses.json" [("list_id","20849097")]

listsMembersDestroy :: ListParam -> UserParam -> APIRequest ListsMembersDestroy List Source #

Returns the post parameter which removes the specified member from the list.

You can perform request by using call:

res <- call twInfo mgr $ listsMembersDestroy (ListNameParam "thimura/haskell") (ScreenNameParam "thimura")
>>> listsMembersDestroy (ListNameParam "thimura/haskell") (ScreenNameParam "thimura")
APIRequestPost "https://api.twitter.com/1.1/lists/members/destroy.json" [("slug","haskell"),("owner_screen_name","thimura"),("screen_name","thimura")]
>>> listsMembersDestroy (ListIdParam 20849097) (UserIdParam 69179963)
APIRequestPost "https://api.twitter.com/1.1/lists/members/destroy.json" [("list_id","20849097"),("user_id","69179963")]

listsMemberships :: Maybe UserParam -> APIRequest ListsMemberships (WithCursor ListsCursorKey List) Source #

Returns the request parameters which asks the lists the specified user has been added to. If UserParam are not provided, the memberships for the authenticating user are returned.

You can perform request by using call:

res <- call twInfo mgr $ listsMemberships (ListNameParam "thimura/haskell")
>>> listsMemberships Nothing
APIRequestGet "https://api.twitter.com/1.1/lists/memberships.json" []
>>> listsMemberships (Just (ScreenNameParam "thimura"))
APIRequestGet "https://api.twitter.com/1.1/lists/memberships.json" [("screen_name","thimura")]
>>> listsMemberships (Just (UserIdParam 69179963))
APIRequestGet "https://api.twitter.com/1.1/lists/memberships.json" [("user_id","69179963")]

listsSubscribers :: ListParam -> APIRequest ListsSubscribers (WithCursor UsersCursorKey User) Source #

Returns the request parameter which asks the subscribers of the specified list.

You can perform request by using call:

res <- call twInfo mgr $ listsSubscribers (ListNameParam "thimura/haskell")
>>> listsSubscribers (ListNameParam "thimura/haskell")
APIRequestGet "https://api.twitter.com/1.1/lists/subscribers.json" [("slug","haskell"),("owner_screen_name","thimura")]
>>> listsSubscribers (ListIdParam 20849097)
APIRequestGet "https://api.twitter.com/1.1/lists/subscribers.json" [("list_id","20849097")]

listsMembersCreateAll :: ListParam -> UserListParam -> APIRequest ListsMembersCreateAll List Source #

Adds multiple members to a list.

You can perform request by using call:

res <- call twInfo mgr $ listsMembersCreateAll (ListNameParam "thimura/haskell") (ScreenNameListParam ["thimura", "twitterapi"])
>>> listsMembersCreateAll (ListNameParam "thimura/haskell") (ScreenNameListParam ["thimura", "twitterapi"])
APIRequestPost "https://api.twitter.com/1.1/lists/members/create_all.json" [("slug","haskell"),("owner_screen_name","thimura"),("screen_name","thimura,twitterapi")]
>>> listsMembersCreateAll (ListIdParam 20849097) (UserIdListParam [69179963, 6253282])
APIRequestPost "https://api.twitter.com/1.1/lists/members/create_all.json" [("list_id","20849097"),("user_id","69179963,6253282")]

listsMembers :: ListParam -> APIRequest ListsMembers (WithCursor UsersCursorKey User) Source #

Returns query data asks the members of the specified list.

You can perform request by using call:

res <- call twInfo mgr $ listsMembers (ListNameParam "thimura/haskell")
>>> listsMembers (ListNameParam "thimura/haskell")
APIRequestGet "https://api.twitter.com/1.1/lists/members.json" [("slug","haskell"),("owner_screen_name","thimura")]
>>> listsMembers (ListIdParam 20849097)
APIRequestGet "https://api.twitter.com/1.1/lists/members.json" [("list_id","20849097")]

listsMembersCreate :: ListParam -> UserParam -> APIRequest ListsMembersCreate List Source #

Returns the post parameter which adds a member to a list.

You can perform request by using call:

res <- call twInfo mgr $ listsMembersCreate (ListNameParam "thimura/haskell") (ScreenNameParam "thimura")
>>> listsMembersCreate (ListNameParam "thimura/haskell") (ScreenNameParam "thimura")
APIRequestPost "https://api.twitter.com/1.1/lists/members/create.json" [("slug","haskell"),("owner_screen_name","thimura"),("screen_name","thimura")]
>>> listsMembersCreate (ListIdParam 20849097) (UserIdParam 69179963)
APIRequestPost "https://api.twitter.com/1.1/lists/members/create.json" [("list_id","20849097"),("user_id","69179963")]

listsDestroy :: ListParam -> APIRequest ListsDestroy List Source #

Returns the post parameter which deletes the specified list.

You can perform request by using call:

res <- call twInfo mgr $ listsDestroy (ListNameParam "thimura/haskell")
>>> listsDestroy (ListNameParam "thimura/haskell")
APIRequestPost "https://api.twitter.com/1.1/lists/destroy.json" [("slug","haskell"),("owner_screen_name","thimura")]
>>> listsDestroy (ListIdParam 20849097)
APIRequestPost "https://api.twitter.com/1.1/lists/destroy.json" [("list_id","20849097")]

listsUpdate Source #

Arguments

:: ListParam 
-> Bool

is public

-> Maybe Text

description

-> APIRequest ListsUpdate List 

Returns the post parameter which updates the specified list.

You can perform request by using call:

res <- call twInfo mgr $ listsUpdate (ListNameParam "thimura/haskell") True (Just Haskellers)
>>> listsUpdate (ListNameParam "thimura/haskell") True (Just "Haskellers")
APIRequestPost "https://api.twitter.com/1.1/lists/update.json" [("slug","haskell"),("owner_screen_name","thimura"),("description","Haskellers"),("mode","public")]

listsCreate Source #

Arguments

:: Text

list name

-> Bool

whether public(True) or private(False)

-> Maybe Text

the description to give the list

-> APIRequest ListsCreate List 

Returns the post parameter which creates a new list for the authenticated user.

You can perform request by using call:

res <- call twInfo mgr $ listsCreate (ListNameParam "thimura/haskell")
>>> listsCreate "haskell" True Nothing
APIRequestPost "https://api.twitter.com/1.1/lists/create.json" [("name","haskell"),("mode","public")]
>>> listsCreate "haskell" False Nothing
APIRequestPost "https://api.twitter.com/1.1/lists/create.json" [("name","haskell"),("mode","private")]
>>> listsCreate "haskell" True (Just "Haskellers")
APIRequestPost "https://api.twitter.com/1.1/lists/create.json" [("description","Haskellers"),("name","haskell"),("mode","public")]

listsShow :: ListParam -> APIRequest ListsShow List Source #

Returns the request parameter which asks the specified list.

You can perform request by using call:

res <- call twInfo mgr $ listsShow (ListNameParam "thimura/haskell")
>>> listsShow (ListNameParam "thimura/haskell")
APIRequestGet "https://api.twitter.com/1.1/lists/show.json" [("slug","haskell"),("owner_screen_name","thimura")]
>>> listsShow (ListIdParam 20849097)
APIRequestGet "https://api.twitter.com/1.1/lists/show.json" [("list_id","20849097")]

listsSubscriptions :: Maybe UserParam -> APIRequest ListsSubscriptions (WithCursor ListsCursorKey List) Source #

Returns the request parameter which obtains a collection of the lists the specified user is subscribed to.

You can perform request by using call:

res <- call twInfo mgr $ listsSubscriptions (ListNameParam "thimura/haskell")
>>> listsSubscriptions Nothing
APIRequestGet "https://api.twitter.com/1.1/lists/subscriptions.json" []
>>> listsSubscriptions (Just (ScreenNameParam "thimura"))
APIRequestGet "https://api.twitter.com/1.1/lists/subscriptions.json" [("screen_name","thimura")]
>>> listsSubscriptions (Just (UserIdParam 69179963))
APIRequestGet "https://api.twitter.com/1.1/lists/subscriptions.json" [("user_id","69179963")]

listsMembersDestroyAll :: ListParam -> UserListParam -> APIRequest ListsMembersDestroyAll List Source #

Adds multiple members to a list.

You can perform request by using call:

res <- call twInfo mgr $ listsMembersDestroyAll (ListNameParam "thimura/haskell") (ScreenNameListParam ["thimura", "twitterapi"])
>>> listsMembersDestroyAll (ListNameParam "thimura/haskell") (ScreenNameListParam ["thimura", "twitterapi"])
APIRequestPost "https://api.twitter.com/1.1/lists/members/destroy_all.json" [("slug","haskell"),("owner_screen_name","thimura"),("screen_name","thimura,twitterapi")]
>>> listsMembersDestroyAll (ListIdParam 20849097) (UserIdListParam [69179963, 6253282])
APIRequestPost "https://api.twitter.com/1.1/lists/members/destroy_all.json" [("list_id","20849097"),("user_id","69179963,6253282")]

listsOwnerships :: Maybe UserParam -> APIRequest ListsOwnerships (WithCursor ListsCursorKey List) Source #

Returns the request parameter which asks the lists owned by the specified Twitter user.

You can perform request by using call:

res <- call twInfo mgr $ listsOwnerships (ListNameParam "thimura/haskell")
>>> listsOwnerships Nothing
APIRequestGet "https://api.twitter.com/1.1/lists/ownerships.json" []
>>> listsOwnerships (Just (ScreenNameParam "thimura"))
APIRequestGet "https://api.twitter.com/1.1/lists/ownerships.json" [("screen_name","thimura")]
>>> listsOwnerships (Just (UserIdParam 69179963))
APIRequestGet "https://api.twitter.com/1.1/lists/ownerships.json" [("user_id","69179963")]

Saved Searches

Places & Geo

media

mediaUpload :: MediaData -> APIRequest MediaUpload UploadedMedia Source #

Upload media and returns the media data.

You can update your status with multiple media by calling mediaUpload and update successively.

First, you should upload media with mediaUpload:

res1 <- call twInfo mgr $ mediaUpload (MediaFromFile "/path/to/upload/file1.png")
res2 <- call twInfo mgr $ mediaUpload (MediaRequestBody "file2.png" "[.. file body ..]")

and then collect the resulting media IDs and update your status by calling update:

call twInfo mgr $ update "Hello World" & mediaIds ?~ [mediaId res1, mediaId res2]

See: https://dev.twitter.com/docs/api/multiple-media-extended-entities

>>> mediaUpload (MediaFromFile "/home/test/test.png")
APIRequestPostMultipart "https://upload.twitter.com/1.1/media/upload.json" []