import qualified Data.ByteString.Lazy as B ( ByteString )
import qualified Data.ByteString.Char8 as BC ( pack )
+import Network.Connection ( TLSSettings(..) )
import Network.HTTP.Client (
+ ManagerSettings,
httpLbs,
newManager,
parseUrl,
responseBody )
-import Network.HTTP.Client.TLS ( tlsManagerSettings )
+import Network.HTTP.Client.TLS ( mkManagerSettings )
import Web.Authenticate.OAuth (
OAuth(..),
Credential,
-- username's new statuses. Essentially, 'user_timeline_url' with a
-- \"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
http_get cfg uri
+-- | The default 'tlsManagerSettings' attempts to verify the
+-- certificate that we get from the server, but it's quite pointless
+-- for our purposes.
+--
+-- The default 'tlsManagerSettings' is constructed is like,
+--
+-- tlsManagerSettings = mkManagerSettings def Nothing
+--
+-- and the 'def' passes in a 'TLSSettings' from
+-- \"Network.Connection\". By constructing our own 'TLSSettings', we
+-- can disable the certificate validation.
+--
+novalidate_tls_manager_settings :: ManagerSettings
+novalidate_tls_manager_settings =
+ mkManagerSettings mytls Nothing
+ where
+ -- The first field is "disable validation"
+ mytls = TLSSettingsSimple True False False
+
+
-- | 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
+ manager <- newManager novalidate_tls_manager_settings
request <- parseUrl url
signed_request <- signOAuth oauth credential request
response <- httpLbs signed_request manager