--- | Options that will be passed to every curl request.
-curl_options :: [CurlOption]
-curl_options =
- [ CurlTimeout 45,
- -- The Global cache is not thread-friendly.
- CurlDNSUseGlobalCache False,
- -- And we don't want to use a DNS cache anyway.
- CurlDNSCacheTimeout 0 ]
-
-
--- | 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
- -- Create a Curl instance.
- curl <- initialize
-
- -- Perform the request, and get back a CurlResponse object.
- -- The cast is needed to specify how we would like our headers
- -- and body returned (Strings).
- resp <- do_curl_ curl uri curl_options :: IO CurlResponse
-
- -- Pull out the response code as a CurlCode.
- let code = respCurlCode resp
-
- case code of
- CurlOK -> return $ Just (respBody resp)
- error_code -> do
- hPutStrLn stderr ("HTTP Error: " ++ (show error_code))
- -- If an error occurred, we want to dump as much information as
- -- possible. If this becomes a problem, we can use respGetInfo to
- -- query the response object for more information
- return Nothing
+-- | Retrieve a URL, or crash.
+http_get :: String -> IO B.ByteString
+http_get url = do
+ manager <- newManager def
+ request <- parseUrl url
+
+ C.runResourceT $ do
+ signed_request <- signOAuth oauth credential request
+ response <- http signed_request manager
+ responseBody response C.$$+- sinkLbs
+
+ where
+ consumer_key = BC.pack ""
+ consumer_secret = BC.pack ""
+ access_token = BC.pack ""
+ access_secret = BC.pack ""
+
+ oauth :: OAuth
+ oauth = newOAuth {
+ oauthConsumerKey = consumer_key,
+ oauthConsumerSecret = consumer_secret
+ }
+
+ credential :: Credential
+ credential = newCredential access_token access_secret