openid 0.1.1.0 → 0.1.2.0
raw patch · 6 files changed
+30/−22 lines, 6 filesdep ~HTTPdep ~HsOpenSSLdep ~basePVP: major bump suggested
API removals or changes: PVP suggests a major version bump
Dependency ranges changed: HTTP, HsOpenSSL, base, containers, network
API changes (from Hackage documentation)
- Network.OpenID.Association: AssocEnv :: m UTCTime -> SessionType -> m (Maybe DHParams) -> AssocEnv m
+ Network.OpenID.Association: AssocEnv :: m UTCTime -> (SessionType -> m (Maybe DHParams)) -> AssocEnv m
- Network.OpenID.HTTP: getRequest :: URI -> Request
+ Network.OpenID.HTTP: getRequest :: URI -> Request String
- Network.OpenID.HTTP: postRequest :: URI -> String -> Request
+ Network.OpenID.HTTP: postRequest :: URI -> String -> Request String
- Network.OpenID.Types: type Resolver m = Request -> m (Either ConnError Response)
+ Network.OpenID.Types: type Resolver m = Request String -> m (Either ConnError (Response String))
- Network.OpenID.Utils: withResponse :: (ExceptionM m Error) => Either ConnError Response -> (Response -> m a) -> m a
+ Network.OpenID.Utils: withResponse :: (ExceptionM m Error) => Either ConnError (Response String) -> (Response String -> m a) -> m a
Files
- openid.cabal +6/−6
- src/Network/OpenID/Association.hs +2/−2
- src/Network/OpenID/Discovery.hs +3/−3
- src/Network/OpenID/HTTP.hs +15/−9
- src/Network/OpenID/Types.hs +2/−1
- src/Network/OpenID/Utils.hs +2/−1
openid.cabal view
@@ -1,5 +1,5 @@ name: openid-version: 0.1.1.0+version: 0.1.2.0 cabal-version: >= 1.6 synopsis: An implementation of the OpenID-2.0 spec. description: An implementation of the OpenID-2.0 spec.@@ -21,18 +21,18 @@ library if flag(split-base)- build-depends: base >= 3,+ build-depends: base >= 3 && < 10, bytestring == 0.9.1.*,- containers == 0.1.0.*+ containers == 0.2.* else build-depends: base < 3- build-depends: HTTP == 3001.1.*,+ build-depends: HTTP >= 4000.0.5 && < 4000.1, monadLib == 3.4.5.*, nano-hmac == 0.2.0.*,- network == 2.2.0.*,+ network == 2.2.*, time == 1.1.2.*, xml == 1.3.1.*,- HsOpenSSL == 0.5.*+ HsOpenSSL == 0.6.* hs-source-dirs: src exposed-modules: Codec.Binary.Base64, Codec.Encryption.DH,
src/Network/OpenID/Association.hs view
@@ -42,7 +42,7 @@ import Data.Time import Data.Word import MonadLib-import Network.HTTP hiding (Result)+import Network.HTTP -- Utilities ------------------------------------------------------------------- @@ -171,7 +171,7 @@ : ("openid.assoc_type", show at) : ("openid.session_type", show st) : maybe [] dhPairs mb_dh- ersp <- lift $ resolve $ postRequest (providerURI prov) body+ ersp <- lift $ resolve $ Network.OpenID.HTTP.postRequest (providerURI prov) body withResponse ersp $ \rsp -> do let ps = parseDirectResponse (rspBody rsp) case rspCode rsp of
src/Network/OpenID/Discovery.hs view
@@ -25,7 +25,7 @@ import Data.List import Data.Maybe import MonadLib-import Network.HTTP hiding (Result)+import Network.HTTP import Network.URI @@ -70,7 +70,7 @@ let e = err "Unable to parse YADIS document" doc <- maybe e return $ parseXRDS $ rspBody rsp parseYADIS ident doc- _ -> err "HTTP request error: unexpected response code"+ _ -> err $ "HTTP request error: unexpected response code "++show (rspCode rsp) -- | Parse out an OpenID endpoint, and actual identifier from a YADIS xml@@ -119,7 +119,7 @@ Right rsp -> case rspCode rsp of (2,0,0) -> maybe (err "Unable to find identifier in HTML") return $ parseHTML ident $ rspBody rsp- _ -> err "HTTP request error: unexpected response code"+ _ -> err $ "HTTP request error: unexpected response code "++show (rspCode rsp) -- | Parse out an OpenID endpoint and an actual identifier from an HTML
src/Network/OpenID/HTTP.hs view
@@ -15,8 +15,8 @@ makeRequest -- * HTTP Utilities- , getRequest- , postRequest+ , Network.OpenID.HTTP.getRequest+ , Network.OpenID.HTTP.postRequest -- * Request/Response Parsing and Formatting , parseDirectResponse@@ -36,8 +36,12 @@ import Data.List import MonadLib import Network.BSD-import Network.HTTP hiding (host,port)+import Network.HTTP (Request(..), Response(..), findHeader, RequestMethod(..),+ Header(..), HeaderName(..), normalizeRequest, NormalizeRequestOptions(..),+ defaultNormalizeRequestOptions) import Network.Socket+import Network.HTTP.Stream (ConnError(..), simpleHTTP_)+import Network.StreamSocket () -- Stream instance for Socket in HTTP package import Network.URI hiding (query) @@ -56,15 +60,17 @@ mb_sh <- inBase (sslConnect sock) case mb_sh of Nothing -> return $ Left $ ErrorMisc "sslConnect failed"- Just sh -> simpleHTTP_ sh req- else simpleHTTP_ sock req+ Just sh -> simpleHTTP_ sh normReq+ else simpleHTTP_ sock normReq case ersp of Left err -> return (Left err)- Right rsp -> handleRedirect followRedirect req rsp+ Right rsp -> handleRedirect followRedirect normReq rsp+ where+ normReq = normalizeRequest defaultNormalizeRequestOptions{normDoClose=True} req -- | Follow a redirect-handleRedirect :: Bool -> Request -> Response -> IO (Either ConnError Response)+handleRedirect :: Bool -> Request String -> Response String -> IO (Either ConnError (Response String)) handleRedirect False _ rsp = return (Right rsp) handleRedirect _ req rsp = case rspCode rsp of (3,0,_) -> case parseURI =<< findHeader HdrLocation rsp of@@ -92,7 +98,7 @@ -- Utilities ------------------------------------------------------------------- -getRequest :: URI -> Request+getRequest :: URI -> Request String getRequest uri = Request { rqURI = uri , rqMethod = GET@@ -101,7 +107,7 @@ } -postRequest :: URI -> String -> Request+postRequest :: URI -> String -> Request String postRequest uri body = Request { rqURI = uri , rqMethod = POST
src/Network/OpenID/Types.hs view
@@ -34,6 +34,7 @@ import Network.URI import Network.HTTP+import Network.Stream -------------------------------------------------------------------------------- -- Types@@ -86,7 +87,7 @@ type Realm = String -- | A way to resolve an HTTP request-type Resolver m = Request -> m (Either ConnError Response)+type Resolver m = Request String -> m (Either ConnError (Response String)) -- | An OpenID provider. newtype Provider = Provider { providerURI :: URI } deriving (Eq,Show)
src/Network/OpenID/Utils.hs view
@@ -42,6 +42,7 @@ import Data.Word import MonadLib import Network.HTTP+import Network.Stream -- General Helpers -------------------------------------------------------------@@ -124,6 +125,6 @@ -- | Make an HTTP request, and run a function with a successful response withResponse :: ExceptionM m Error- => Either ConnError Response -> (Response -> m a) -> m a+ => Either ConnError (Response String) -> (Response String -> m a) -> m a withResponse (Left err) _ = raise $ Error $ show err withResponse (Right rsp) f = f rsp