MCPcopy
hub / github.com/encode/httpx / auth_flow

Method auth_flow

httpx/_auth.py:193–222  ·  httpx/_auth.py::DigestAuth.auth_flow
(self, request: Request)

Source from the content-addressed store, hash-verified

191 self._nonce_count = 1
192
193 def auth_flow(self, request: Request) -> typing.Generator[Request, Response, None]:
194 if self._last_challenge:
195 request.headers[class="st">"Authorization"] = self._build_auth_header(
196 request, self._last_challenge
197 )
198
199 response = yield request
200
201 if response.status_code != 401 or class="st">"www-authenticate" not in response.headers:
202 class="cm"># If the response is not a 401 then we don't
203 class="cm"># need to build an authenticated request.
204 return
205
206 for auth_header in response.headers.get_list(class="st">"www-authenticate"):
207 if auth_header.lower().startswith(class="st">"digest "):
208 break
209 else:
210 class="cm"># If the response does not include a class="st">'WWW-Authenticate: Digest ...'
211 class="cm"># header, then we don't need to build an authenticated request.
212 return
213
214 self._last_challenge = self._parse_challenge(request, response, auth_header)
215 self._nonce_count = 1
216
217 request.headers[class="st">"Authorization"] = self._build_auth_header(
218 request, self._last_challenge
219 )
220 if response.cookies:
221 Cookies(response.cookies).set_cookie_header(request=request)
222 yield request
223
224 def _parse_challenge(
225 self, request: Request, response: Response, auth_header: str

Callers

nothing calls this directly

Calls 5

_build_auth_headerMethod · 0.95
_parse_challengeMethod · 0.95
CookiesClass · 0.85
set_cookie_headerMethod · 0.80
get_listMethod · 0.45

Tested by

no test coverage detected