hw-uri 0.1.1.8 → 0.1.1.9
raw patch · 4 files changed
+15/−11 lines, 4 filesdep +dlistPVP ok
version bump matches the API change (PVP)
Dependencies added: dlist
API changes (from Hackage documentation)
Files
- hw-uri.cabal +3/−1
- src/HaskellWorks/Data/Uri/IO/File.hs +6/−6
- src/HaskellWorks/Data/Uri/IO/Lazy.hs +4/−4
- src/HaskellWorks/Data/Uri/UriError.hs +2/−0
hw-uri.cabal view
@@ -1,7 +1,7 @@ cabal-version: 2.4 name: hw-uri-version: 0.1.1.8+version: 0.1.1.9 synopsis: Supports IO on URIs description: Supports IO on URIs. homepage: https://github.com/haskell-works/hw-uri@@ -28,6 +28,7 @@ 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 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 } common filepath { build-depends: filepath >= 1.3 && < 1.5 } common generic-lens { build-depends: generic-lens >= 1.1.0.0 && < 1.3 }@@ -58,6 +59,7 @@ , antiope-s3 , bytestring , directory+ , dlist , exceptions , filepath , generic-lens
src/HaskellWorks/Data/Uri/IO/File.hs view
@@ -41,16 +41,16 @@ let rs = if filePath /= "." then fmap (filePath </>) qs else qs return rs where go :: (MonadIO m, MonadUnliftIO m) => FilePath -> FilePath -> m [FilePath]- go filePath dir = do- ps <- listDirectory filePath- qs <- fmap concat $ IO.interleaveSequenceM $ fmap (recurse filePath) ps+ go fp dir = do+ ps <- listDirectory fp+ qs <- fmap concat $ IO.interleaveSequenceM $ fmap (recurse fp) ps return (fmap (dir </>) qs) recurse :: (MonadIO m, MonadUnliftIO m) => FilePath -> FilePath -> m [FilePath]- recurse filePath p = do- isDirectory <- liftIO $ IO.doesDirectoryExist (filePath </> p)+ recurse fp p = do+ isDirectory <- liftIO $ IO.doesDirectoryExist (fp </> p) if isDirectory- then case filePath </> p of+ then case fp </> p of subPath -> if "./" `L.isPrefixOf` subPath then go (drop 2 subPath) p else go subPath p
src/HaskellWorks/Data/Uri/IO/Lazy.hs view
@@ -35,9 +35,10 @@ import HaskellWorks.Data.Uri.UriError import qualified Antiope.S3 as AWS-import qualified Antiope.S3.Lazy as AWS+import qualified Antiope.S3.Lazy as AWSL import qualified Control.Concurrent as IO import qualified Data.ByteString.Lazy as LBS+import qualified Data.DList as DL import qualified Data.Text as T import qualified HaskellWorks.Data.Uri.IO.Console as CIO import qualified HaskellWorks.Data.Uri.IO.File as FIO@@ -73,7 +74,7 @@ _ -> throwM e getS3Uri :: (MonadResource m, MonadCatch m) => AWS.Env -> AWS.S3Uri -> m (Either UriError LBS.ByteString)-getS3Uri envAws (AWS.S3Uri b k) = handleAwsError $ runAws envAws $ AWS.unsafeDownload b k+getS3Uri envAws (AWS.S3Uri b k) = handleAwsError $ runAws envAws $ AWSL.unsafeDownload b k readResource :: (MonadResource m, MonadCatch m) => AWS.Env -> Location -> m (Either UriError LBS.ByteString) readResource envAws = \case@@ -237,7 +238,7 @@ listResourcePrefix :: (MonadUnliftIO m, MonadResource m) => AWS.Env -> Location -> ExceptT UriError m [Location] listResourcePrefix envAws location = case location of- S3 s3Uri -> fmap S3 <$> runAws envAws (AWS.lsPrefix (s3Uri ^. the @"bucket") (s3Uri ^. the @"objectKey" . the @1))+ S3 s3Uri -> fmap S3 . DL.toList <$> runAws envAws (AWSL.dlistS3Uris (AWSL.s3UriToListObjectsV2 s3Uri)) Local path -> fmap Local <$> lift (FIO.listFilesRecursiveWithPrefix path) HttpUri _ -> throwError "HTTP method not supported" @@ -248,4 +249,3 @@ when (result /= [s3Uri]) $ throwError $ DeleteFailed (tshow location) Local path -> liftIO $ IO.removeFile path HttpUri _ -> throwError "HTTP method not supported"-
src/HaskellWorks/Data/Uri/UriError.hs view
@@ -7,6 +7,7 @@ , uriErrorStatus ) where +import Data.Semigroup ((<>)) import Data.String import Data.Text (Text) import GHC.Generics@@ -37,6 +38,7 @@ displayUriError RetriesFailedUriError = "Multiple retries failed" displayUriError NotFound = "Not found" displayUriError (GenericUriError msg) = msg+displayUriError (DeleteFailed msg) = "Delete failed: " <> msg uriErrorStatus :: UriError -> Maybe Int uriErrorStatus (AwsUriError (HTTP.Status statusCode _)) = Just statusCode