http-download-0.2.1.0: Verified downloads with retries
Safe HaskellSafe-Inferred
LanguageHaskell2010

Network.HTTP.Download.Verified

Synopsis

Documentation

verifiedDownload Source #

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

data HashCheck Source #

Constructors

forall a.(Show a, HashAlgorithm a) => HashCheck 

Instances

Instances details
Show HashCheck Source # 
Instance details

Defined in Network.HTTP.Download.Verified

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.