diff options
author | Joey Hess <joey@kitenet.net> | 2013-02-27 00:07:28 -0400 |
---|---|---|
committer | Joey Hess <joey@kitenet.net> | 2013-02-27 00:07:28 -0400 |
commit | 4afbc2da12379501ca3c5b5369db8339e87de220 (patch) | |
tree | a4e5b78ae3e3a56da36c22e1ce6d98036ea6b315 /Remote | |
parent | 4be1620eac167323f6afc89d843097ab65b8c918 (diff) |
deal with http-conduit changing a data type
Pity that the library does not provide a function to extract the status
code from the StatusCodeException, so when they had to add a new field, it
breaks every single place that does it.
Diffstat (limited to 'Remote')
-rw-r--r-- | Remote/WebDAV.hs | 19 |
1 files changed, 17 insertions, 2 deletions
diff --git a/Remote/WebDAV.hs b/Remote/WebDAV.hs index fe45d7df0..5714cd075 100644 --- a/Remote/WebDAV.hs +++ b/Remote/WebDAV.hs @@ -5,7 +5,13 @@ - Licensed under the GNU GPL version 3 or higher. -} -{-# LANGUAGE ScopedTypeVariables #-} +{-# LANGUAGE ScopedTypeVariables, CPP #-} + +#if defined VERSION_http_conduit +#if ! MIN_VERSION_http_conduit(1,9,0) +#define WITH_OLD_HTTP_CONDUIT +#endif +#endif module Remote.WebDAV (remote, davCreds, setCredsEnv) where @@ -228,7 +234,11 @@ davUrlExists :: DavUrl -> DavUser -> DavPass -> IO (Either String Bool) davUrlExists url user pass = decode <$> catchHttp (getProps url user pass) where decode (Right _) = Right True +#ifdef WITH_OLD_HTTP_CONDUIT decode (Left (Left (StatusCodeException status _))) +#else + decode (Left (Left (StatusCodeException status _ _))) +#endif | statusCode status == statusCode notFound404 = Right False decode (Left e) = Left $ showEitherException e @@ -275,7 +285,12 @@ catchHttp a = (Right <$> a) `E.catches` type EitherException = Either HttpException E.IOException showEitherException :: EitherException -> String -showEitherException (Left (StatusCodeException status _)) = show $ statusMessage status +#ifdef WITH_OLD_HTTP_CONDUIT +showEitherException (Left (StatusCodeException status _)) = +#else +showEitherException (Left (StatusCodeException status _ _)) = +#endif + show $ statusMessage status showEitherException (Left httpexception) = show httpexception showEitherException (Right ioexception) = show ioexception |