1. 26 Jan, 2020 1 commit
    • credential: change git_cred to git_credential · 3f54ba8b
      We avoid abbreviations where possible; rename git_cred to
      git_credential.
      
      In addition, we have standardized on a trailing `_t` for enum types,
      instead of using "type" in the name.  So `git_credtype_t` has become
      `git_credential_t` and its members have become `GIT_CREDENTIAL` instead
      of `GIT_CREDTYPE`.
      
      Finally, the source and header files have been renamed to `credential`
      instead of `cred`.
      
      Keep previous name and values as deprecated, and include the new header
      files from the previous ones.
      Edward Thomson committed
  2. 24 Jan, 2020 6 commits
    • httpclient: support expect/continue · 7372573b
      Allow users to opt-in to expect/continue handling when sending a POST
      and we're authenticated with a "connection-based" authentication
      mechanism like NTLM or Negotiate.
      
      If the response is a 100, return to the caller (to allow them to post
      their body).  If the response is *not* a 100, buffer the response for
      the caller.
      
      HTTP expect/continue is generally safe, but some legacy servers
      have not implemented it correctly.  Require it to be opt-in.
      Edward Thomson committed
    • httpclient: support CONNECT proxies · 6c21c989
      Fully support HTTP proxies, in particular CONNECT proxies, that allow us
      to speak TLS through a proxy.
      Edward Thomson committed
    • httpclient: handle chunked responses · 6b208836
      Detect responses that are sent with Transfer-Encoding: chunked, and
      record that information so that we can consume the entire message body.
      Edward Thomson committed
    • httpclient: support authentication · 6a095679
      Store the last-seen credential challenges (eg, all the
      'WWW-Authenticate' headers in a response message).  Given some
      credentials, find the best (first) challenge whose mechanism supports
      these credentials.  (eg, 'Basic' supports username/password credentials,
      'Negotiate' supports default credentials).
      
      Set up an authentication context for this mechanism and these
      credentials.  Continue exchanging challenge/responses until we're
      authenticated.
      Edward Thomson committed
    • httpclient: introduce a simple http implementation · eacecebd
      Introduce a new http client implementation that can GET and POST to
      remote URLs.
      
      Consumers can use `git_http_client_init` to create a new client,
      `git_http_client_send_request` to send a request to the remote server
      and `git_http_client_read_response` to read the response.
      
      The http client implementation will perform the I/O with the remote
      server (http or https) but does not understand the git smart transfer
      protocol.  This allows us to split the concerns of the http subtransport
      from the actual http implementation.
      Edward Thomson committed