packages feed

hw-uri 0.1.1.11 → 0.2.0.0

raw patch · 6 files changed

+58/−17 lines, 6 filesdep +deepseqdep ~antiope-coredep ~antiope-s3PVP ok

version bump matches the API change (PVP)

Dependencies added: deepseq

Dependency ranges changed: antiope-core, antiope-s3

API changes (from Hackage documentation)

+ HaskellWorks.Data.Uri.Location: instance Control.DeepSeq.NFData HaskellWorks.Data.Uri.Location.Location
+ HaskellWorks.Data.Uri.Status: Status :: Int -> ByteString -> Status
+ HaskellWorks.Data.Uri.Status: [statusCode] :: Status -> Int
+ HaskellWorks.Data.Uri.Status: [statusMessage] :: Status -> ByteString
+ HaskellWorks.Data.Uri.Status: data Status
+ HaskellWorks.Data.Uri.Status: fromHttpStatus :: Status -> Status
+ HaskellWorks.Data.Uri.Status: instance Control.DeepSeq.NFData HaskellWorks.Data.Uri.Status.Status
+ HaskellWorks.Data.Uri.Status: instance GHC.Classes.Eq HaskellWorks.Data.Uri.Status.Status
+ HaskellWorks.Data.Uri.Status: instance GHC.Classes.Ord HaskellWorks.Data.Uri.Status.Status
+ HaskellWorks.Data.Uri.Status: instance GHC.Generics.Generic HaskellWorks.Data.Uri.Status.Status
+ HaskellWorks.Data.Uri.Status: instance GHC.Show.Show HaskellWorks.Data.Uri.Status.Status
+ HaskellWorks.Data.Uri.UriError: instance Control.DeepSeq.NFData HaskellWorks.Data.Uri.UriError.UriError

Files

hw-uri.cabal view
@@ -1,7 +1,7 @@ cabal-version:          2.4  name:                   hw-uri-version:                0.1.1.11+version:                0.2.0.0 synopsis:               Supports IO on URIs description:            Supports IO on URIs. homepage:               https://github.com/haskell-works/hw-uri@@ -24,10 +24,11 @@ common amazonka                       { build-depends: amazonka                       >= 1.6.1      && < 1.7    } common amazonka-core                  { build-depends: amazonka-core                  >= 1.6.1      && < 1.7    } common amazonka-s3                    { build-depends: amazonka-s3                    >= 1.6.1      && < 1.7    }-common antiope-core                   { build-depends: antiope-core                   >= 7.4.4      && < 8      }-common antiope-s3                     { build-depends: antiope-s3                     >= 7.4.4      && < 8      }+common antiope-core                   { build-depends: antiope-core                   >= 7.4.5      && < 8      }+common antiope-s3                     { build-depends: antiope-s3                     >= 7.4.5      && < 8      } common antiope-optparse-applicative   { build-depends: antiope-optparse-applicative   >= 7.0.1      && < 8      } common bytestring                     { build-depends: bytestring                     >= 0.10.8.2   && < 0.11   }+common deepseq                        { build-depends: deepseq                        >= 1.4        && < 1.5    } common directory                      { build-depends: directory                      >= 1.3.3.0    && < 1.4    } common dlist                          { build-depends: dlist                          >= 0.8.0.7    && < 0.9    } common exceptions                     { build-depends: exceptions                     >= 0.10.1     && < 0.11   }@@ -59,6 +60,7 @@                       , antiope-core                       , antiope-s3                       , bytestring+                      , deepseq                       , directory                       , dlist                       , exceptions@@ -85,6 +87,7 @@                         HaskellWorks.Data.Uri.IO.Static                         HaskellWorks.Data.Uri.Location                         HaskellWorks.Data.Uri.Show+                        HaskellWorks.Data.Uri.Status                         HaskellWorks.Data.Uri.Text                         HaskellWorks.Data.Uri.UriError 
src/HaskellWorks/Data/Uri/IO/Lazy.hs view
@@ -32,6 +32,7 @@ import Data.Text                      (Text) import HaskellWorks.Data.Uri.Location (Location (..)) import HaskellWorks.Data.Uri.Show+import HaskellWorks.Data.Uri.Status import HaskellWorks.Data.Uri.UriError  import qualified Antiope.S3                       as AWS@@ -60,14 +61,14 @@ handleAwsError :: MonadCatch m => m a -> m (Either UriError a) handleAwsError f = catch (Right <$> f) $ \(e :: AWS.Error) ->   case e of-    (AWS.ServiceError (AWS.ServiceError' _ s _ _ _ _)) -> return (Left (AwsUriError s))+    (AWS.ServiceError (AWS.ServiceError' _ s _ _ _ _)) -> return (Left (AwsUriError (fromHttpStatus s)))     _                                                  -> throwM e  handleHttpError :: MonadCatch m => m a -> m (Either UriError a) handleHttpError f = catch (Right <$> f) $ \(e :: HTTP.HttpException) ->   case e of     (HTTP.HttpExceptionRequest _ e') -> case e' of-      HTTP.StatusCodeException resp _ -> return (Left (HttpUriError (resp & HTTP.responseStatus)))+      HTTP.StatusCodeException resp _ -> return (Left (HttpUriError (fromHttpStatus (resp & HTTP.responseStatus))))       _                               -> return (Left (GenericUriError (tshow e')))     _                                 -> throwM e 
src/HaskellWorks/Data/Uri/Location.hs view
@@ -1,4 +1,5 @@ {-# LANGUAGE DataKinds              #-}+{-# LANGUAGE DeriveAnyClass         #-} {-# LANGUAGE DeriveGeneric          #-} {-# LANGUAGE FunctionalDependencies #-} {-# LANGUAGE MultiParamTypeClasses  #-}@@ -25,6 +26,7 @@ import Antiope.Core              (ToText (..), fromText) import Antiope.S3                (ObjectKey (..), S3Uri (..)) import Control.Applicative+import Control.DeepSeq import Control.Lens              ((%~), (&), (^.)) import Data.Aeson import Data.Generics.Product.Any@@ -53,7 +55,7 @@   = S3 S3Uri   | Local FilePath   | HttpUri Text-  deriving (Show, Eq, Generic)+  deriving (Show, Eq, Generic, NFData)  instance ToJSON Location where   toJSON v = case v of
+ src/HaskellWorks/Data/Uri/Status.hs view
@@ -0,0 +1,33 @@+{-# LANGUAGE DataKinds        #-}+{-# LANGUAGE DeriveAnyClass   #-}+{-# LANGUAGE DeriveGeneric    #-}+{-# LANGUAGE TypeApplications #-}++module HaskellWorks.Data.Uri.Status+  ( Status(..)+  , fromHttpStatus+  )  where++import Control.DeepSeq+import Data.ByteString (ByteString)+import Data.Typeable+import GHC.Generics++import qualified Network.HTTP.Types.Status as HTTP++data Status = Status+  { statusCode    :: Int+  , statusMessage :: ByteString+  } deriving (Show, Typeable, Generic, NFData)++instance Eq Status where+  Status { statusCode = a } == Status { statusCode = b } = a == b++instance Ord Status where+    compare Status { statusCode = a } Status { statusCode = b } = a `compare` b++fromHttpStatus :: HTTP.Status -> Status+fromHttpStatus s = Status+  { statusCode    = HTTP.statusCode s+  , statusMessage = HTTP.statusMessage s+  }
src/HaskellWorks/Data/Uri/UriError.hs view
@@ -1,3 +1,4 @@+{-# LANGUAGE DeriveAnyClass    #-} {-# LANGUAGE DeriveGeneric     #-} {-# LANGUAGE OverloadedStrings #-} @@ -7,27 +8,28 @@   , uriErrorStatus   ) where -import Data.Semigroup             ((<>))+import Control.DeepSeq+import Data.Semigroup               ((<>)) import Data.String-import Data.Text                  (Text)+import Data.Text                    (Text) import GHC.Generics import HaskellWorks.Data.Uri.Show+import HaskellWorks.Data.Uri.Status -import qualified Data.Text          as T-import qualified Network.HTTP.Types as HTTP+import qualified Data.Text as T  data UriError   = AwsUriError-    { status :: HTTP.Status+    { status :: Status     }   | HttpUriError-    { status :: HTTP.Status+    { status :: Status     }   | RetriesFailedUriError   | NotFound   | DeleteFailed Text   | GenericUriError Text-  deriving (Eq, Show, Generic)+  deriving (Eq, Show, Generic, NFData)  instance IsString UriError where   fromString = GenericUriError . T.pack@@ -41,5 +43,5 @@ displayUriError (DeleteFailed msg)    = "Delete failed: " <> msg  uriErrorStatus :: UriError -> Maybe Int-uriErrorStatus (AwsUriError (HTTP.Status statusCode _)) = Just statusCode-uriErrorStatus _                                        = Nothing+uriErrorStatus (AwsUriError (Status statusCode _)) = Just statusCode+uriErrorStatus _                                   = Nothing
test/HaskellWorks/Data/Uri/AwsSpec.hs view
@@ -12,6 +12,7 @@ import Control.Monad.IO.Class import Data.Maybe                     (isJust) import HaskellWorks.Data.Uri.IO.Lazy+import HaskellWorks.Data.Uri.Status import HaskellWorks.Data.Uri.UriError import HaskellWorks.Hspec.Hedgehog import Hedgehog@@ -19,7 +20,6 @@  import qualified Antiope.S3.Types           as AWS import qualified Data.ByteString.Lazy.Char8 as LBSC-import qualified Network.HTTP.Types         as HTTP import qualified System.Environment         as IO  {-# ANN module ("HLint: ignore Redundant do"        :: String) #-}@@ -34,5 +34,5 @@       envAws <- liftIO $ mkEnv Oregon (const LBSC.putStrLn)       result <- liftIO $ runResourceT $ headS3Uri envAws $ AWS.S3Uri "jky-mayhem" "hjddhd"       result === Left AwsUriError-        { status = HTTP.Status { HTTP.statusCode = 404 , HTTP.statusMessage = "Not Found" }+        { status = Status { statusCode = 404 , statusMessage = "Not Found" }         }