Ryan Barrett
aa5701e158
ATProto.create_report: truncate reason string if it's too long
...
for snarfed/granary#717
2024-04-26 16:12:15 -07:00
Ryan Barrett
853b4be142
ATroto.send: for flag activities, send createReport to mod service
...
for snarfed/granary#596 . background:
* https://docs.bsky.app/docs/advanced-guides/moderation#reporting
* https://github.com/bluesky-social/atproto/discussions/2350#discussioncomment-8847613
* https://github.com/snarfed/granary/issues/596
2024-04-26 13:59:04 -07:00
Ryan Barrett
bfed0452b9
ATProto polls: skip notifs/posts we've already handled
2024-04-24 15:06:49 -07:00
Ryan Barrett
0f89b0750a
ATProto: remove some obsolete TODOs
2024-04-23 17:56:27 -07:00
Ryan Barrett
4efb0d3e35
ATProto: tweak polling: every 5 min, 10 items each call
2024-04-23 16:58:30 -07:00
Ryan Barrett
0238b46e36
add Protocol.HAS_COPIES, use to generate ids.COPIES_PROTOCOLS
2024-04-23 16:52:53 -07:00
Ryan Barrett
c86c91b25b
User.enable_protocols bug fix: only call create_for for copy protocols
...
also add integration test for following protocol bot user from ATProto
2024-04-23 16:38:08 -07:00
Ryan Barrett
34692abc60
handle protocol bot users in webfinger, ids.translate_handle, Web.owns_handle
...
for #880
2024-04-22 14:01:09 -07:00
Ryan Barrett
2886ae180d
remove common.ENABLED_PROTOCOLS, use Protocol.DEFAULT_ENABLED_PROTOCOLS instead
...
also use is_enabled_to in user page template
2024-04-18 16:39:15 -07:00
Ryan Barrett
8077a7f4ca
remove activitypub from ATProto.enabled_protocols, for now
2024-04-17 19:17:04 -07:00
Ryan Barrett
39a641e000
remove USER_ALLOWLIST in favor of User.enabled_protocols
2024-04-17 17:02:17 -07:00
Ryan Barrett
259b7d72dd
start on conditional opt in
...
* add Protocol.DEFAULT_ENABLED_PROTOCOLS
* add User.enabled_protocols
* move common.is_enabled to Protocol.is_enabled_to, include opt out/in
2024-04-17 16:43:10 -07:00
Ryan Barrett
393605bde9
change ATProto.ABBREV to bsky
...
🤞 , for #961
2024-04-17 06:54:16 -07:00
Ryan Barrett
12a3bf0862
noop: add messages to asserts in ids, atproto
2024-04-15 16:44:33 -07:00
Ryan Barrett
a70702776c
atproto: switch to Bluesky butterfly logo
...
also minor user page language tweak
2024-04-15 14:53:54 -07:00
Ryan Barrett
374af3aa5c
atproto polls: use common.USER_ALLOWLIST
2024-04-15 14:08:36 -07:00
Ryan Barrett
e913ad1f53
ATProto.convert: refetch subject for cid if we don't have it
2024-04-15 07:31:05 -07:00
Ryan Barrett
f840c8b784
temporarily disable is_enabled checks in ATProto/ActivityPub.convert
...
for manual testing
2024-04-14 14:50:02 -07:00
Ryan Barrett
5ec2159546
user page: link to bridged Bluesky profile
...
for #825
2024-04-12 08:46:59 -07:00
Ryan Barrett
133d640f1d
improve rendering of ATProto interactions on user pages
...
for #825
2024-04-11 15:02:15 -07:00
Ryan Barrett
0d549dc039
atproto: fix log message
2024-04-11 14:21:30 -07:00
Ryan Barrett
561c763fd4
atproto handle resolution: test, comments, minor refactoring
...
for snarfed/granary@d4bff45637
2024-04-10 16:34:50 -07:00
Ryan Barrett
bf296802d8
pass from_user through to convert() in a few more places
2024-04-10 15:16:37 -07:00
Ryan Barrett
7009267bb0
use new handle_or_id kwarg in common.is_enabled calls
2024-04-10 11:49:53 -07:00
Ryan Barrett
056644d19e
add handle_or_id kwarg to common.is_enabled
...
for allowlist of test users while testing a given pair of protocols
2024-04-10 11:40:17 -07:00
Ryan Barrett
4ed45e5af5
atproto: pass new ndb_client kwarg to DatastoreStorage constructor
...
for snarfed/lexrpc#8
2024-03-31 18:50:01 -07:00
Ryan Barrett
5a1dda151c
ATProto.create_for: better support for local testing
2024-03-24 08:59:54 -04:00
Ryan Barrett
048cd17ba5
bug fix for pds_for change in e86763f: don't use Object.as1 since that infinite loops
2024-03-14 21:16:09 -07:00
Ryan Barrett
878bbde328
atproto: handle bsky.app URLs in load, not fetch
2024-03-14 15:40:25 -07:00
Ryan Barrett
9b2bb9ef37
make ATProto.load([DID]) return the profile record by default
...
add did_doc kwarg to make it return the DID doc instead
2024-03-13 16:08:08 -07:00
Ryan Barrett
69e4b039e9
atproto: update authed_as, actor authz checks in poll_*
2024-03-13 15:41:03 -07:00
Ryan Barrett
bad7052663
atproto: add delete support
2024-03-13 14:47:48 -07:00
Ryan Barrett
d667c8ece4
atproto: add update support
2024-03-13 14:40:31 -07:00
Ryan Barrett
7bf29d411f
atproto: only enable indieweb.org and snarfed.org, for now
2024-03-13 13:07:30 -07:00
Ryan Barrett
be56539eb2
ATProto.send: explicitly ignore accepts, undos
2024-03-12 20:48:23 -07:00
Ryan Barrett
aea4880e6f
ATProto.convert: fill in strongRef URIs with DIDs as well as CID
...
also error handling in ATProto.fetch for failed getRecord requests
2024-03-12 14:45:48 -07:00
Ryan Barrett
cf4d105c3e
atproto: when creating new commits, fetch remote objects' CIDs if necessary
...
fixes sending likes, reposts, etc to ATProto
2024-03-12 11:12:34 -07:00
Ryan Barrett
51254f67de
atproto: tweak profile label, add bridgy-fed-
2024-03-11 15:31:31 -07:00
Ryan Barrett
95e46c5ebb
Revert "cache outbound HTTP request responses, locally to each inbound request"
...
This reverts commit 30debfc8fa
.
seemed promising, but broke in production. Saw a lot of `IncompleteRead`s on both GETs and POSTs. Rolled back for now.
```
('Connection broken: IncompleteRead(9172 bytes read, -4586 more expected)', IncompleteRead(9172 bytes read, -4586 more expected))
...
File "oauth_dropins/webutil/util.py", line 1673, in call
resp = getattr((session or requests), fn)(url, *args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "requests_cache/session.py", line 102, in get
return self.request('GET', url, params=params, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "requests_cache/session.py", line 158, in request
return super().request(method, url, *args, headers=headers, **kwargs) # type: ignore
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "requests/sessions.py", line 589, in request
resp = self.send(prep, **send_kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "requests_cache/session.py", line 205, in send
response = self._send_and_cache(request, actions, cached_response, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "requests_cache/session.py", line 233, in _send_and_cache
self.cache.save_response(response, actions.cache_key, actions.expires)
File "requests_cache/backends/base.py", line 89, in save_response
cached_response = CachedResponse.from_response(response, expires=expires)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "requests_cache/models/response.py", line 102, in from_response
obj.raw = CachedHTTPResponse.from_response(response)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "requests_cache/models/raw_response.py", line 69, in from_response
_ = response.content # This property reads, decodes, and stores response content
^^^^^^^^^^^^^^^^
File "requests/models.py", line 899, in content
self._content = b"".join(self.iter_content(CONTENT_CHUNK_SIZE)) or b""
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "requests/models.py", line 818, in generate
raise ChunkedEncodingError(e)
```
2024-03-11 15:31:30 -07:00
Ryan Barrett
30debfc8fa
cache outbound HTTP request responses, locally to each inbound request
...
using requests-cache. pretty straightforward! for #588
2024-03-08 12:34:49 -08:00
Ryan Barrett
0101cf04ea
atproto: fetch records from AppView (api.bsky.app) instead of PDSes
...
fixes #688
2024-03-04 16:35:31 -08:00
Ryan Barrett
396c3a64f3
ATProto.fetch: support bsky.app URLs
2024-03-02 16:50:01 -08:00
Ryan Barrett
c2b8db8687
atproto: self label profiles with 'bridged-from-[protocol]'
...
fixes #827
2024-03-01 13:31:59 -08:00
Ryan Barrett
d2865fdb86
add common.ENABLED_BRIDGES, check before conversion and /bridge-user
2024-02-28 12:07:06 -08:00
Ryan Barrett
3bcef0d37d
follow UI: specific error message for trying to follow bridged accounts
...
thanks for the nudge @campegg!
2024-01-25 17:05:26 -08:00
Ryan Barrett
03315891aa
drop a lot of g.user
...
for #690
2023-11-25 20:23:19 -08:00
Ryan Barrett
1591dfb641
pass user to Protocol.send/convert instead of using g.user
...
for #690
2023-11-25 20:07:14 -08:00
Ryan Barrett
db2668ffab
activitypub.postprocess_as2_actor: handle user without handle
...
fixes https://console.cloud.google.com/errors/detail/CIT9-r3d-MKW5AE;time=P30D?project=bridgy-federated
2023-11-23 22:09:11 -08:00
Ryan Barrett
bee313fb67
drop User.atproto_did, switch to using copies
2023-11-15 19:08:06 -08:00
Ryan Barrett
4d095fa3d9
misc cleanup
...
* remove obsolete TODOs, commented out code
* remove obsolete circular imports of per-protocol modules
* minimize Object put in Protocol.load
* remove duplicated Protocol.load tests in test_activitypub
* re-enable rest of ActivityPubUtilsTest.test_postprocess_as2_idempotent
* drop default cls=Web in TestCase.make_user
2023-11-15 14:23:08 -08:00
Ryan Barrett
5d1aadb869
ATProto.send: use type as collection, convert to record early to catch errors
2023-11-14 19:55:20 -08:00
Ryan Barrett
d237d9611c
atproto: store extra `cid` field in Object.bsky, populate in record strongRefs
2023-11-14 19:24:37 -08:00
Ryan Barrett
95631396b7
atproto: fill in createdAt
...
for snarfed/granary@a0795b8c34
2023-11-14 15:24:51 -08:00
Ryan Barrett
81838df113
atproto.poll_posts: store record, not #postView
2023-11-14 14:21:22 -08:00
Ryan Barrett
a5b5078729
ATProto: first pass at polling posts (timelines)
...
for #694
2023-11-14 12:30:14 -08:00
Ryan Barrett
9c5adab4f4
ATProto.send: support likes, reposts, follows
...
snarfed/bridgy-fed#717
2023-11-14 10:56:52 -08:00
Ryan Barrett
00fb4dd14d
move test_atproto.KEY to testutil.ATPROTO_KEY
2023-11-13 14:08:21 -08:00
Ryan Barrett
a08a76c672
Object.resolve_ids bug fix: handle both protocol LABEL and ABBREV
2023-11-12 10:33:08 -08:00
Ryan Barrett
2be1229488
ATProto.send: store copy id in base object
2023-11-09 14:09:45 -08:00
Ryan Barrett
4d44363693
fold Object.as_bsky into ATProto.convert, translate ids
2023-11-02 17:41:31 -07:00
Ryan Barrett
def5638a64
Protocol.translate: distinguish between object and user ids
2023-11-02 13:08:24 -07:00
Ryan Barrett
db646909e2
delivery: switch from threads to tasks, one per send
...
for #652
2023-10-31 12:49:27 -07:00
Ryan Barrett
672949e217
fix atproto lexrpc client test for new access token handling
...
for snarfed/lexrpc@98b61eb383
2023-10-29 11:55:37 -07:00
Ryan Barrett
acb1c703a3
rename Protocol.serve => .convert, move Content-Type to class constant
2023-10-25 12:31:52 -07:00
Ryan Barrett
39c0d0e734
atproto: hard code our PDS URL to atproto.brid.gy
...
even on localhost
2023-10-20 11:16:23 -07:00
Ryan Barrett
89cd73831b
rework g.user
...
* it's always sending user ie actor
* don't pass it to task from atproto.poll_notifications (we were incorrectly passing the receiving user)
* in Protocol.receive, default g.user to actor/author
* in ActivityPub.signed_request, if g.user is ActivityPub, it won't have AP keys, so use default signing user instead
kinda scary and iffy. 🤞 🤞 🤞
2023-10-18 13:56:53 -07:00
Ryan Barrett
e66ca3fb7f
noop: expand a few log messages
2023-10-18 13:13:44 -07:00
Ryan Barrett
7e3613ab6c
fix ATProto.target_for: it should always return our base URL as the PDS
2023-10-18 12:01:17 -07:00
Ryan Barrett
fc96959383
tone down logging, especially for polling ATProto notifs
2023-10-18 11:03:21 -07:00
Ryan Barrett
db3a5e7fd6
authorization: pass and accept authed_as in receive task handler
...
for #566
2023-10-16 12:45:27 -07:00
Ryan Barrett
f3039fc87a
Protocol.send: bring back log_data kwarg
2023-10-13 18:29:28 -07:00
Ryan Barrett
1b78e86e6c
add Protocol.LOGO_HTML constant, change user page to link to external user
...
for #442
2023-10-11 12:25:38 -07:00
Ryan Barrett
5efd97d867
add Object.lock and new add, remove, and put methods
2023-10-07 13:51:59 -07:00
Ryan Barrett
dfff201c6f
ATProto: log profile and post records that we store
2023-10-07 13:01:29 -07:00
Ryan Barrett
59abcb00bc
Protocol.send: drop log_data kwarg
...
protocols are responsible for logging objects themselves
2023-10-07 12:54:32 -07:00
Ryan Barrett
7e7962fe45
add orig_obj kwarg to Protocol.send
2023-10-07 12:49:39 -07:00
Ryan Barrett
62302b9105
more docstring formatting tweaks
2023-10-06 08:22:50 -07:00
Ryan Barrett
db29ad7757
docs: fix docstring formatting, other tweaks
2023-10-05 23:32:31 -07:00
Ryan Barrett
e00a4b52ba
ATProto: don't create DNS records if DEBUG is on
2023-10-05 15:55:31 -07:00
Ryan Barrett
7d8b1ba2e8
add fetch_blobs kwarg to Object.as_bsky
2023-10-05 15:47:04 -07:00
Ryan Barrett
000b08f9b2
when creating a new ATProto user, add a DNS _atproto TXT record for their handle
2023-10-04 13:54:20 -07:00
Ryan Barrett
e96ab4654f
move creating ATProto users from User.get_or_create to new ATProto.create_for
2023-10-04 12:44:14 -07:00
Ryan Barrett
b4d5ab15ef
ATProto: assert that we only store record type objects in the repo
2023-10-03 16:56:06 -07:00
Ryan Barrett
318ba554d5
misc hub setup, testing live
2023-09-29 11:32:29 -07:00
Ryan Barrett
bfabfabea7
move creating a new ATProto user from ATProto.send to User.get_or_create
...
in progress, still need to load user profile object and write it to ATProto repo
2023-09-29 11:32:28 -07:00
Ryan Barrett
ef44dae317
ATProto: when storing user, always try to fetch DID doc if we don't have it
2023-09-26 14:47:26 -07:00
Ryan Barrett
068dcdeb86
ATProto.send: ignore accepts and undos
2023-09-26 14:47:26 -07:00
Ryan Barrett
a9fcc167f6
replace User.readable_id computed property with handle
2023-09-25 15:08:14 -07:00
Ryan Barrett
9b8b02e99f
consolidate ap_address in ATProto, Fake, Web (partially) into User
2023-09-25 12:45:47 -07:00
Ryan Barrett
e9e8827ef9
standardize more on 'handle' and 'id' terms
...
* User.readable_id => handle
* User.readable_or_key_id => handle_or_id
2023-09-25 12:33:24 -07:00
Ryan Barrett
6cdb04b53f
replace User.atproto_handle with handle_as('atproto')
2023-09-25 10:58:05 -07:00
Ryan Barrett
40ba007e9e
add User.handle()
2023-09-25 10:58:05 -07:00
Ryan Barrett
6ae57bfd94
atproto: bug fix for getRecord call
2023-09-23 13:52:49 -07:00
Ryan Barrett
452e49134d
add User.profile_id, implement in ATProto
2023-09-22 15:40:22 -07:00
Ryan Barrett
e257d43f21
webfinger: if user part isn't an id, try resolving it as a handle
2023-09-22 15:14:15 -07:00
Ryan Barrett
169f8d7a2c
add Protocol.handle_to_id, implement in all protocols
2023-09-22 13:11:15 -07:00
Ryan Barrett
0d33b6422d
add Protocol.owns_handle (and in subclasses)
2023-09-22 12:17:42 -07:00
Ryan Barrett
5107d003fe
Object.as1: genericize converting actor/author id from copy to original
2023-09-19 19:59:28 -07:00
Ryan Barrett
bb18b5ee0d
add new User.copies property
2023-09-19 16:07:11 -07:00
Ryan Barrett
abde77e7eb
noop: more comments in ATProto.poll_notifications
2023-09-19 12:21:34 -07:00