+4
-5
src/atproto/oauth.py
+4
-5
src/atproto/oauth.py
···
236
236
user: OAuthSession,
237
237
update_dpop_pds_nonce: Callable[[str], None],
238
238
body: dict[str, Any] | None = None,
239
-
) -> ClientResponse | None:
239
+
) -> ClientResponse:
240
240
dpop_private_jwk = JsonWebKey.import_key(json.loads(user.dpop_private_jwk))
241
241
dpop_pds_nonce = user.dpop_pds_nonce
242
242
access_token = user.access_token
243
-
244
-
response: ClientResponse | None = None
243
+
response: ClientResponse
245
244
246
245
# Might need to retry request with a new nonce.
247
-
for i in range(2):
246
+
for _ in range(2):
248
247
dpop_jwt = _pds_dpop_jwt(
249
248
"POST",
250
249
url,
···
272
271
continue
273
272
break
274
273
275
-
return response
274
+
return response # pyright: ignore[reportPossiblyUnboundVariable] response is assigned inside the loop
276
275
277
276
278
277
def _client_assertion_jwt(
+6
-2
src/main.py
+6
-2
src/main.py
···
1
1
import asyncio
2
2
import json
3
3
4
-
from aiohttp.client import ClientSession
4
+
from aiohttp.client import ClientResponse, ClientSession
5
5
from flask import Flask, g, session, redirect, render_template, request, url_for
6
6
from flask_htmx import HTMX, make_response as htmx_reponse
7
7
from typing import Any
···
310
310
update_dpop_pds_nonce=update_dpop_pds_nonce,
311
311
)
312
312
313
-
return response is not None and response.ok
313
+
if not response.ok:
314
+
app.logger.warning(f"put_record failed with status {response.status}")
315
+
app.logger.warning(await response.text())
316
+
317
+
return response.ok
314
318
315
319
316
320
def _is_did_blocked(did: str) -> bool: