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,
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