X-Git-Url: http://gitweb.michael.orlitzky.com/?p=dead%2Fhalcyon.git;a=blobdiff_plain;f=src%2FTwitter%2FHttp.hs;h=21e47ba1b6352f71b5f5d439f6cf94e848c78c19;hp=14d156395426eed5bf40af35942ec220aa646762;hb=518f0ba7d66d93fdda2a5dd7b8ea90b59d874b27;hpb=eed0d7b0f8ef28864c00925beef5c8853bcd44cc diff --git a/src/Twitter/Http.hs b/src/Twitter/Http.hs index 14d1563..21e47ba 100644 --- a/src/Twitter/Http.hs +++ b/src/Twitter/Http.hs @@ -1,29 +1,28 @@ module Twitter.Http ( get_user_new_statuses, get_user_timeline, - http_get - ) + http_get ) where -import qualified Data.ByteString.Lazy as B -import qualified Data.ByteString.Char8 as BC +import qualified Data.ByteString.Lazy as B ( ByteString ) +import qualified Data.ByteString.Char8 as BC ( pack ) import Network.HTTP.Client ( httpLbs, newManager, parseUrl, - responseBody) -import Network.HTTP.Client.TLS ( - tlsManagerSettings) + responseBody ) +import Network.HTTP.Client.TLS ( tlsManagerSettings ) import Web.Authenticate.OAuth ( OAuth(..), Credential, newCredential, newOAuth, - signOAuth) + signOAuth ) -import Configuration (Cfg(..)) +import Configuration ( Cfg(..) ) --- |The API URL of username's timeline. + +-- | The API URL of username's timeline. -- -- See, -- @@ -43,7 +42,13 @@ user_timeline_url username = -- | Given username's last status id, constructs the API URL for -- username's new statuses. Essentially, 'user_timeline_url' with a --- "since_id" parameter tacked on. +-- \"since_id\" parameter tacked on. +-- +-- Examples: +-- +-- >>> user_new_statuses_url "someuser" 8675309 +-- "https://api.twitter.com/1.1/statuses/user_timeline.json?screen_name=someuser&include_rts=true&count=10&since_id=8675309" +-- user_new_statuses_url :: String -> Integer -> String user_new_statuses_url username last_status_id = url ++ "&since_id=" ++ since_id @@ -53,6 +58,7 @@ user_new_statuses_url username last_status_id = -- | Return's username's timeline. +-- get_user_timeline :: Cfg -> String -> IO B.ByteString get_user_timeline cfg username = do let uri = user_timeline_url username @@ -60,14 +66,17 @@ get_user_timeline cfg username = do -- | Returns the JSON representing all of username's statuses that are --- newer than last_status_id. +-- newer than @last_status_id@. +-- get_user_new_statuses :: Cfg -> String -> Integer -> IO B.ByteString get_user_new_statuses cfg username last_status_id = do let uri = user_new_statuses_url username last_status_id http_get cfg uri --- | Retrieve a URL, or crash. +-- | Retrieve a URL, or crash. The request is signed using all of the +-- OAuth junk contained in the configuration. +-- http_get :: Cfg -> String -> IO B.ByteString http_get cfg url = do manager <- newManager tlsManagerSettings @@ -85,8 +94,7 @@ http_get cfg url = do oauth :: OAuth oauth = newOAuth { oauthConsumerKey = consumer_key', - oauthConsumerSecret = consumer_secret' - } + oauthConsumerSecret = consumer_secret' } credential :: Credential credential = newCredential access_token' access_secret'