]> gitweb.michael.orlitzky.com - dead/halcyon.git/blobdiff - src/Twitter/Http.hs
Add the ability to twat a single status (as a debugging tool).
[dead/halcyon.git] / src / Twitter / Http.hs
index ddd68284ae91d22f94b7e5beb90a433630a51804..bff4288776ad59a80e5aa822253f4b510bac1984 100644 (file)
@@ -4,8 +4,11 @@ where
 import Network.Curl
 import System.IO (hPutStrLn, stderr)
 
---    
--- http://dev.twitter.com/doc/get/statuses/user_timeline
+-- |The API URL of username's timeline.
+--
+-- See,
+--
+--   <http://dev.twitter.com/doc/get/statuses/user_timeline>
 --
 user_timeline_url :: String -> String
 user_timeline_url username =
@@ -14,12 +17,29 @@ user_timeline_url username =
              "&include_rts=true",
              "&count=10" ]
 
+status_url :: Integer -> String
+status_url status_id =
+    concat [ "http://api.twitter.com/1/statuses/show/",
+             (show status_id),
+             ".xml" ]
+
+-- |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.
 user_new_statuses_url :: String -> Integer -> String
 user_new_statuses_url username last_status_id =
     concat [ user_timeline_url username,
              "&since_id=" ++ (show last_status_id) ]
 
-                               
+
+get_status :: Integer -> IO (Maybe String)
+get_status status_id = do
+    let uri = (status_url status_id)
+    status <- (http_get uri)
+    return status
+
+
+-- |Return's username's timeline, or 'Nothing' if there was an error.
 get_user_timeline :: String -> IO (Maybe String)
 get_user_timeline username = do
   let uri = (user_timeline_url username)
@@ -27,13 +47,17 @@ get_user_timeline username = do
   return timeline
 
 
+-- Returns the XML representing all of username's statuses that are
+-- newer than last_status_id.
 get_user_new_statuses :: String -> Integer -> IO (Maybe String)
 get_user_new_statuses username last_status_id = do
   let uri = (user_new_statuses_url username last_status_id)
   new_statuses <- (http_get uri)
   return new_statuses
 
-         
+
+-- |Uses the CURL API to retrieve uri. Returns 'Nothing' if there was
+-- an error.
 http_get :: String -> IO (Maybe String)
 http_get uri = withCurlDo $ do
   resp <- curlGetString uri [CurlTimeout 45]