module Network.TinyURL (tinyURL) where
import Network.HTTP
import Network.URI
tinyURL :: String -> IO String
tinyURL url = do
result <- simpleHTTP request `catch` (const . return $ Left undefined)
case result of
Left _ -> return url
Right response -> return $ rspBody response
where request = Request { rqURI = uri
, rqMethod = GET
, rqHeaders = []
, rqBody = "" }
uri = URI { uriScheme = "http:"
, uriAuthority = Just $ URIAuth { uriUserInfo = "", uriRegName = "tinyurl.com", uriPort = "" }
, uriPath = "/api-create.php"
, uriQuery = "?url=" ++ escapeURIString isUnreserved url
, uriFragment = "" }