packages feed

hw-polysemy-0.1.0.0: src/HaskellWorks/Polysemy/ByteString/Lazy.hs

module HaskellWorks.Polysemy.ByteString.Lazy
  ( readFile
  ) where

import qualified Control.Exception             as CE
import qualified Data.ByteString.Lazy          as LBS
import qualified Data.Text                     as T
import           HaskellWorks.Polysemy.Prelude

import           Polysemy
import           Polysemy.Error
import           Polysemy.Log

-- | Read the contents of the 'filePath' file.
readFile :: ()
  => HasCallStack
  => Member (Error IOException) r
  => Member (Embed IO) r
  => Member Log r
  => FilePath
  -> Sem r LBS.ByteString
readFile filePath = withFrozenCallStack $ do
  info $ "Reading lazy bytestring file: " <> T.pack filePath
  r <- embed $ CE.try @IOException $ LBS.readFile filePath
  fromEither r