stack-2.15.7: The Haskell Tool Stack
Safe HaskellSafe-Inferred
LanguageGHC2021

Network.HTTP.StackClient

Description

Wrapper functions of Simple and Client to add the 'User-Agent' HTTP request header to each request.

Synopsis

Documentation

httpJSON :: (MonadIO m, FromJSON a) => Request -> m (Response a) Source #

withResponse :: (MonadUnliftIO m, MonadIO n) => Request -> (Response (ConduitM i ByteString n ()) -> m a) -> m a Source #

setRequestHeader :: HeaderName -> [ByteString] -> Request -> Request #

setRequestHeaders :: RequestHeaders -> Request -> Request #

getResponseHeaders :: Response a -> [(HeaderName, ByteString)] #

getUri :: Request -> URI #

checkResponse :: Request -> Request -> Response BodyReader -> IO () #

requestHeaders :: Request -> RequestHeaders #

getGlobalManager :: IO Manager #

applyDigestAuth :: (MonadIO m, MonadThrow n) => ByteString -> ByteString -> Request -> Manager -> m (n Request) #

displayDigestAuthException :: DigestAuthException -> String #

data Request #

Instances

Instances details
Show Request 
Instance details

Defined in Network.HTTP.Client.Types

Methods

showsPrec :: Int -> Request -> ShowS

show :: Request -> String #

showList :: [Request] -> ShowS

data Response body #

Instances

Instances details
Foldable Response 
Instance details

Defined in Network.HTTP.Client.Types

Methods

fold :: Monoid m => Response m -> m #

foldMap :: Monoid m => (a -> m) -> Response a -> m #

foldMap' :: Monoid m => (a -> m) -> Response a -> m

foldr :: (a -> b -> b) -> b -> Response a -> b #

foldr' :: (a -> b -> b) -> b -> Response a -> b #

foldl :: (b -> a -> b) -> b -> Response a -> b

foldl' :: (b -> a -> b) -> b -> Response a -> b #

foldr1 :: (a -> a -> a) -> Response a -> a

foldl1 :: (a -> a -> a) -> Response a -> a

toList :: Response a -> [a] #

null :: Response a -> Bool #

length :: Response a -> Int #

elem :: Eq a => a -> Response a -> Bool #

maximum :: Ord a => Response a -> a

minimum :: Ord a => Response a -> a

sum :: Num a => Response a -> a #

product :: Num a => Response a -> a #

Traversable Response 
Instance details

Defined in Network.HTTP.Client.Types

Methods

traverse :: Applicative f => (a -> f b) -> Response a -> f (Response b) #

sequenceA :: Applicative f => Response (f a) -> f (Response a) #

mapM :: Monad m => (a -> m b) -> Response a -> m (Response b) #

sequence :: Monad m => Response (m a) -> m (Response a) #

Functor Response 
Instance details

Defined in Network.HTTP.Client.Types

Methods

fmap :: (a -> b) -> Response a -> Response b #

(<$) :: a -> Response b -> Response a #

Show body => Show (Response body) 
Instance details

Defined in Network.HTTP.Client.Types

Methods

showsPrec :: Int -> Response body -> ShowS

show :: Response body -> String #

showList :: [Response body] -> ShowS

hAccept :: HeaderName #

hContentLength :: HeaderName #

hContentMD5 :: HeaderName #

method :: Request -> Method #

methodPost :: Method #

methodPut :: Method #

formDataBody :: MonadIO m => [Part] -> Request -> m Request #

partFileRequestBody :: forall (m :: Type -> Type). Applicative m => Text -> FilePath -> RequestBody -> PartM m #

partBS :: forall (m :: Type -> Type). Applicative m => Text -> ByteString -> PartM m #

partLBS :: forall (m :: Type -> Type). Applicative m => Text -> ByteString -> PartM m #

setGitHubHeaders :: Request -> Request Source #

Set the user-agent request header

download Source #

Arguments

:: HasTerm env 
=> Request 
-> Path Abs File

destination

-> RIO env Bool

Was a downloaded performed (True) or did the file already exist (False)?

Download the given URL to the given location. If the file already exists, no download is performed. Otherwise, creates the parent directory, downloads to a temporary file, and on file download completion moves to the appropriate destination.

Throws an exception if things go wrong

redownload Source #

Arguments

:: HasTerm env 
=> Request 
-> Path Abs File

destination

-> RIO env Bool 

Same as download, but will download a file a second time if it is already present.

Returns True if the file was downloaded, False otherwise

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.

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: http-download-0.2.0.0

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

(Show a, HashAlgorithm a) => HashCheck 

Instances

Instances details
Show HashCheck 
Instance details

Defined in Network.HTTP.Download.Verified

Methods

showsPrec :: Int -> HashCheck -> ShowS

show :: HashCheck -> String #

showList :: [HashCheck] -> ShowS

mkDownloadRequest :: Request -> DownloadRequest Source #

Construct a new DownloadRequest from the given Request. Use associated setters to modify the value further.

Since: http-download-0.2.0.0

setHashChecks :: [HashCheck] -> DownloadRequest -> DownloadRequest Source #

Set the hash checks to be run when verifying.

Since: http-download-0.2.0.0

setLengthCheck :: Maybe LengthCheck -> DownloadRequest -> DownloadRequest Source #

Set the length check to be run when verifying.

Since: http-download-0.2.0.0

setRetryPolicy :: RetryPolicy -> DownloadRequest -> DownloadRequest Source #

Set the retry policy to be used when downloading.

Since: http-download-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.