Merge pull request #119 from haskell-servant/existential-error

servant-client: Hide HttpException by wrapping it in SomeException
This commit is contained in:
Christian Marie 2015-06-24 12:02:54 +10:00
commit 472249e92c
2 changed files with 3 additions and 8 deletions

View file

@ -53,7 +53,7 @@ data ServantError
, responseBody :: ByteString
}
| ConnectionError
{ connectionError :: String
{ connectionError :: SomeException
}
deriving (Show, Typeable)
@ -156,7 +156,7 @@ performRequest reqMethod req isWantedStatus reqHost = do
Client.httpLbs request manager
case eResponse of
Left err ->
left $ ConnectionError (show err)
left . ConnectionError $ SomeException err
Right response -> do
let status = Client.responseStatus response
@ -192,4 +192,4 @@ performRequestNoBody reqMethod req wantedStatus reqHost = do
catchConnectionError :: IO a -> IO (Either ServantError a)
catchConnectionError action =
catch (Right <$> action) $ \e ->
pure . Left . ConnectionError . show $ (e :: HttpException)
pure . Left . ConnectionError $ SomeException (e :: HttpException)

View file

@ -68,11 +68,6 @@ instance FromFormUrlEncoded Person where
a <- lookupEither "age" xs
return $ Person (T.unpack n) (read $ T.unpack a)
deriving instance Eq ServantError
instance Eq C.HttpException where
a == b = show a == show b
alice :: Person
alice = Person "Alice" 42