| Safe Haskell | Safe-Inferred |
|---|---|
| Language | Haskell2010 |
Network.HTTP.Download.Verified
Contents
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
- drRetryPolicyDefault :: RetryPolicy
- data HashCheck = forall a.(Show a, HashAlgorithm a) => HashCheck {}
- data CheckHexDigest
- type LengthCheck = Int
- data VerifiedDownloadException
- data DownloadRequest
- mkDownloadRequest :: Request -> DownloadRequest
- modifyRequest :: (Request -> Request) -> DownloadRequest -> DownloadRequest
- setHashChecks :: [HashCheck] -> DownloadRequest -> DownloadRequest
- setLengthCheck :: Maybe LengthCheck -> DownloadRequest -> DownloadRequest
- setRetryPolicy :: RetryPolicy -> DownloadRequest -> DownloadRequest
- setForceDownload :: Bool -> DownloadRequest -> DownloadRequest
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 #
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
| forall a.(Show a, HashAlgorithm a) => HashCheck | |
Fields | |
data CheckHexDigest Source #
Constructors
| CheckHexDigestString String | |
| CheckHexDigestByteString ByteString | |
| CheckHexDigestHeader ByteString |
Instances
| IsString CheckHexDigest Source # | |
Defined in Network.HTTP.Download.Verified Methods fromString :: String -> CheckHexDigest # | |
| Show CheckHexDigest Source # | |
Defined in Network.HTTP.Download.Verified Methods showsPrec :: Int -> CheckHexDigest -> ShowS # show :: CheckHexDigest -> String # showList :: [CheckHexDigest] -> ShowS # | |
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 | |
| DownloadHttpError HttpException |
Instances
| Exception VerifiedDownloadException Source # | |
Defined in Network.HTTP.Download.Verified | |
| Show VerifiedDownloadException Source # | |
Defined in Network.HTTP.Download.Verified Methods showsPrec :: Int -> VerifiedDownloadException -> ShowS # show :: VerifiedDownloadException -> String # showList :: [VerifiedDownloadException] -> ShowS # | |
DownloadRequest construction
data DownloadRequest Source #
A request together with some checks to perform.
Construct using the downloadRequest smart constructor and associated
setters. The constructor itself is not exposed to avoid breaking changes
with additional fields.
Since: 0.2.0.0
mkDownloadRequest :: Request -> DownloadRequest Source #
Construct a new DownloadRequest from the given Request. Use associated
setters to modify the value further.
Since: 0.2.0.0
modifyRequest :: (Request -> Request) -> DownloadRequest -> DownloadRequest Source #
Modify the Request inside a DownloadRequest. Especially intended for modifying the User-Agent request header.
Since: 0.2.0.0
setHashChecks :: [HashCheck] -> DownloadRequest -> DownloadRequest Source #
Set the hash checks to be run when verifying.
Since: 0.2.0.0
setLengthCheck :: Maybe LengthCheck -> DownloadRequest -> DownloadRequest Source #
Set the length check to be run when verifying.
Since: 0.2.0.0
setRetryPolicy :: RetryPolicy -> DownloadRequest -> DownloadRequest Source #
Set the retry policy to be used when downloading.
Since: 0.2.0.0
setForceDownload :: Bool -> DownloadRequest -> DownloadRequest Source #
If True, force download even if the file already exists. Useful for
download a resource which may change over time.