Http package:cabal-install

Implementation of HttpLib using cabal-install's own HttpTransport
Separate module for HTTP actions, using a proxy server if one exists.
Abstraction over HTTP clients This avoids insisting on a particular implementation (such as the HTTP package) and allows for other implementations (such as a conduit based one). NOTE: Library-specific exceptions MUST be wrapped in SomeRemoteError.
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.
POST a resource to a URI, with optional Auth and return the HTTP status code and any redirect URL.
POST a file resource to a URI using multipart/form-data encoding, with optional Auth and return the HTTP status code and any error string.
PUT a file resource to a URI, with optional Auth, extra headers and return the HTTP status code and any error string.
If the remote repo is accessed over HTTPS, ensure that the transport supports HTTPS.
If the URI scheme is HTTPS, ensure the transport supports HTTPS.
Whether this transport supports https or just http.
Normally a repo just specifies an HTTP or HTTPS URI, but as a special case we may know a repo supports both and want to try HTTPS if we can, but still allow falling back to HTTP. This field is not currently stored in the config file, but is filled in automagically for known repos.