packages feed

hs-twitterarchiver-0.1: Archiver/Utils.hs

module Archiver.Utils where

import Data.Maybe
import System.IO.Error

import Network.Browser
import Network.HTTP
import Network.URI

  
-- File related functions

readContentsArchiveFile f = do result <- try (readFile f)
                               case result of
                                 Right s -> do putStrLn "Reading archive file"
                                               return s

                                 _       -> do putStrLn "Could not read archive file"
                                               return ""

writeToFile filename tweetsString = do putStrLn "Writing to file"
                                       writeFile filename tweetsString

-- URL related functions

readContentsURLWithAuth url username password =   
  let nullHandler _ = return ()
  in do (_u, resp) <- browse $ do setOutHandler nullHandler
                                  checkAuth url username password
                                  (request $ getRequest url)
        case rspCode resp of
          (2,_,_) -> return (rspBody resp)
          _ -> fail ("Failed reading URL " ++ show url ++ " code: " ++ show (rspCode resp))

-- checks if password is provided and sets HTTP auth for request
checkAuth url username password 
   | password == Nothing = return ()
   | otherwise = do 
        ioAction $ putStrLn "Using HTTP Auth"
        addAuthority auth -- add auth to request
         where auth = AuthBasic {
                auUsername = username,
                auPassword = fromJust password,
                auRealm    = "",
                auSite      = fromJust $ parseAbsoluteURI url }