cabal-install-3.10.2.1: The command-line interface for Cabal and Hackage.

Safe Haskell | None
Language | Haskell2010

Distribution.Client.HttpUtils

Description

Separate module for HTTP actions, using a proxy server if one exists.

Synopsis

- data DownloadResult
  - = FileAlreadyInCache
  - | FileDownloaded FilePath
- configureTransport :: Verbosity -> [FilePath] -> Maybe String -> IO HttpTransport
- data HttpTransport = HttpTransport {
  - getHttp :: Verbosity -> URI -> Maybe ETag -> FilePath -> [Header] -> IO (HttpCode, Maybe ETag)
  - postHttp :: Verbosity -> URI -> String -> Maybe Auth -> IO (HttpCode, String)
  - postHttpFile :: Verbosity -> URI -> FilePath -> Maybe Auth -> IO (HttpCode, String)
  - putHttpFile :: Verbosity -> URI -> FilePath -> Maybe Auth -> [Header] -> IO (HttpCode, String)
  - transportSupportsHttps :: Bool
  - transportManuallySelected :: Bool
  }
- type HttpCode = Int
- downloadURI :: HttpTransport -> Verbosity -> URI -> FilePath -> IO DownloadResult
- transportCheckHttps :: Verbosity -> HttpTransport -> URI -> IO ()
- remoteRepoCheckHttps :: Verbosity -> HttpTransport -> RemoteRepo -> IO ()
- remoteRepoTryUpgradeToHttps :: Verbosity -> HttpTransport -> RemoteRepo -> IO RemoteRepo
- isOldHackageURI :: URI -> Bool

# Documentation

data DownloadResult #

Constructors

FileAlreadyInCache |
FileDownloaded FilePath |

#### Instances

Instances details

Eq DownloadResult # |
Instance details Defined in Distribution.Client.HttpUtils Methods (==) :: DownloadResult -> DownloadResult -> Bool # (/=) :: DownloadResult -> DownloadResult -> Bool #

configureTransport :: Verbosity -> [FilePath] -> Maybe String -> IO HttpTransport #

data HttpTransport #

Constructors

HttpTransport |
Fields getHttp :: Verbosity -> URI -> Maybe ETag -> FilePath -> [Header] -> IO (HttpCode, Maybe ETag) GET a URI, with an optional ETag (to do a conditional fetch), write the resource to the given file and return the HTTP status code, and optional ETag. postHttp :: Verbosity -> URI -> String -> Maybe Auth -> IO (HttpCode, String) POST a resource to a URI, with optional auth (username, password) and return the HTTP status code and any redirect URL. postHttpFile :: Verbosity -> URI -> FilePath -> Maybe Auth -> IO (HttpCode, String) POST a file resource to a URI using multipart/form-data encoding, with optional auth (username, password) and return the HTTP status code and any error string. putHttpFile :: Verbosity -> URI -> FilePath -> Maybe Auth -> [Header] -> IO (HttpCode, String) PUT a file resource to a URI, with optional auth (username, password), extra headers and return the HTTP status code and any error string. transportSupportsHttps :: Bool Whether this transport supports https or just http. transportManuallySelected :: Bool Whether this transport implementation was specifically chosen by the user via configuration, or whether it was automatically selected. Strictly speaking this is not a property of the transport itself but about how it was chosen. Nevertheless it's convenient to keep here.

type HttpCode = Int #

downloadURI #

Arguments

:: HttpTransport |
-> Verbosity |
-> URI | What to download
-> FilePath | Where to put it
-> IO DownloadResult |

transportCheckHttps :: Verbosity -> HttpTransport -> URI -> IO () #

remoteRepoCheckHttps :: Verbosity -> HttpTransport -> RemoteRepo -> IO () #

remoteRepoTryUpgradeToHttps :: Verbosity -> HttpTransport -> RemoteRepo -> IO RemoteRepo #

isOldHackageURI :: URI -> Bool #

Utility function for legacy support.