Safe Haskell | None |
---|---|
Language | Haskell2010 |
Network.HTTP.Download.Verified
Synopsis
- verifiedDownload :: HasTerm env => DownloadRequest -> Path Abs File -> (Maybe Integer -> ConduitM ByteString Void (RIO env) ()) -> RIO env Bool
- recoveringHttp :: forall env a. HasTerm env => RetryPolicy -> RIO env a -> RIO env a
- data DownloadRequest = DownloadRequest {
- drRequest :: Request
- drHashChecks :: [HashCheck]
- drLengthCheck :: Maybe LengthCheck
- drRetryPolicy :: RetryPolicy
- drRetryPolicyDefault :: RetryPolicy
- data HashCheck = (Show a, HashAlgorithm a) => HashCheck {}
- data CheckHexDigest
- = CheckHexDigestString String
- | CheckHexDigestByteString ByteString
- | CheckHexDigestHeader ByteString
- type LengthCheck = Int
- data VerifiedDownloadException
- = WrongContentLength Request Int ByteString
- | WrongStreamLength Request Int Int
- | WrongDigest Request String CheckHexDigest String
Documentation
Arguments
:: HasTerm env | |
=> DownloadRequest | |
-> Path Abs File | destination |
-> (Maybe Integer -> ConduitM ByteString Void (RIO env) ()) | custom hook to observe progress |
-> RIO env Bool | Whether a download was performed |
Copied and extended version of Network.HTTP.Download.download.
Has the following additional features: * Verifies that response content-length header (if present) matches expected length * Limits the download to (close to) the expected # of bytes * Verifies that the expected # bytes were downloaded (not too few) * Verifies md5 if response includes content-md5 header * Verifies the expected hashes
Throws VerifiedDownloadException. Throws IOExceptions related to file system operations. Throws HttpException.
recoveringHttp :: forall env a. HasTerm env => RetryPolicy -> RIO env a -> RIO env a Source #
data DownloadRequest Source #
A request together with some checks to perform.
Constructors
DownloadRequest | |
Fields
|
drRetryPolicyDefault :: RetryPolicy Source #
Default to retrying seven times with exponential backoff starting from one hundred milliseconds.
This means the tries will occur after these delays if necessary:
- 0.1s
- 0.2s
- 0.4s
- 0.8s
- 1.6s
- 3.2s
- 6.4s
Constructors
(Show a, HashAlgorithm a) => HashCheck | |
Fields |
data CheckHexDigest Source #
Constructors
CheckHexDigestString String | |
CheckHexDigestByteString ByteString | |
CheckHexDigestHeader ByteString |
Instances
Show CheckHexDigest Source # | |
Defined in Network.HTTP.Download.Verified Methods showsPrec :: Int -> CheckHexDigest -> ShowS show :: CheckHexDigest -> String showList :: [CheckHexDigest] -> ShowS | |
IsString CheckHexDigest Source # | |
Defined in Network.HTTP.Download.Verified Methods fromString :: String -> CheckHexDigest |
type LengthCheck = Int Source #
data VerifiedDownloadException Source #
An exception regarding verification of a download.
Constructors
WrongContentLength Request Int ByteString | |
WrongStreamLength Request Int Int | |
WrongDigest Request String CheckHexDigest String |
Instances
Show VerifiedDownloadException Source # | |
Defined in Network.HTTP.Download.Verified Methods showsPrec :: Int -> VerifiedDownloadException -> ShowS show :: VerifiedDownloadException -> String showList :: [VerifiedDownloadException] -> ShowS | |
Exception VerifiedDownloadException Source # | |
Defined in Network.HTTP.Download.Verified Methods toException :: VerifiedDownloadException -> SomeException fromException :: SomeException -> Maybe VerifiedDownloadException displayException :: VerifiedDownloadException -> String |