Commit Graph

69 Commits

Author SHA1 Message Date
Alec Murphy 128d7d4f3a Slon/Modules/ActivityPub: Use NULL account_id for status lookup
Fixes regression introduced by a5460ec
2025-03-17 23:52:09 -04:00
Alec Murphy 0a3e307916 Slon/Modules/ActivityPub: Increment replies_count on local status when receiving replies 2025-03-17 18:14:52 -04:00
Alec Murphy a5460ece4b Slon/Modules/ActivityPub: Use @slon_api_find_status_by_uri to handle receiving replies to statuses 2025-03-17 17:45:30 -04:00
Alec Murphy 966be78422 Slon/Api/V1/Polls: Implement Polls
Fixes #8
2025-03-16 19:21:44 -04:00
Alec Murphy 9a2a68ef93 Slon/Modules/Db: Load/save votes 2025-03-16 10:04:18 -04:00
Alec Murphy 8fc990670b Slon/Modules/ActivityPub: Create Poll object if present
This creates a poll for a status received via ActivityPub, partially
implementing #8
2025-03-16 08:45:53 -04:00
Alec Murphy 35ff50746c Slon/Api/V1/Statuses: Implement Boosts
Fixes #4
2025-03-15 20:28:04 -04:00
Alec Murphy 57ab5d1d1f Slon/Modules/ActivityPub: Translate Announce requests to Boosts
When we receive an Announce from someone we are following, we will
lookup and/or create the author of the boosted status, followed by the
status itself, which will be attached to a new status from the followed
user as a "reblog" object. Partially implements #4.
2025-03-15 18:22:48 -04:00
Alec Murphy c4ec8ae999 Slon/Modules/ActivityPub: Add http_signature_is_always_valid option
For testing purposes, we can set http_signature_is always_valid to any
value in the db settings Object. This allows us e.g. to replay
ActivityPub payloads using curl, without having to deal with signatures
while we are implementing new features.
2025-03-15 18:02:47 -04:00
Alec Murphy 400d9c9c01 Slon/Api/V1/Bookmarks: Implement Bookmarks
Fixes #10
2025-03-14 18:24:10 -04:00
Alec Murphy 5a9bf4f32b Slon/Api/V1/CustomEmojis: Implement Custom Emojis
Fixes #6
2025-03-13 15:50:48 -04:00
Alec Murphy 401035a0d1 Slon/Api/V1/Favourites: Implement Favourites
Fixes #7
2025-03-12 20:33:39 -04:00
Alec Murphy 475e648feb Slon/Api/V1/Announcements: Implement Announcements
Fixes #9
2025-03-12 16:19:00 -04:00
Alec Murphy 6e9f86b4ae Slon/Modules/Db: Show progress when loading profiles and statues 2025-03-12 13:41:05 -04:00
Alec Murphy fd8d6ca2b7 Slon/Modules/ActivityPub: Fix offset for HTTP signatures (for now) 2025-03-12 09:05:42 -04:00
Alec Murphy 3faed0e966 Slon/Modules/OAuth: Return client state for /oauth/verify_access
Most clients don't care about this, but the (deprecated) Tooot iOS app
does, so now we support it.
2025-03-12 07:47:09 -04:00
Alec Murphy 08579df0b8 Slon/Modules/Http: Add mem_task to SlonHttpSession
We should be using the CHeapCtrl from the Spawned @slon_http_task to
allocate memory for each individual session, which will automatically
be freed when the CTask dies, so let's give ourselves the ability to
do that.
2025-03-10 08:18:13 -04:00
Alec Murphy 546cbaf18d Slon/Modules/Api: Add NULL check to SLON_AUTH_ACCOUNT_ID macro 2025-03-09 20:34:45 -04:00
Alec Murphy d5a09373e4 Everywhere: Update JSON API 2025-03-09 19:39:44 -04:00
Alec Murphy b0c1016955 Slon/Modules/ActivityPub: Pass actor as argument to @slon_activitypub_get_account_for_remote_actor 2025-03-06 15:09:57 -05:00
Alec Murphy 74455c59ab Slon/Modules/Db: Add @slon_db_save_status_to_disk() to save an individual account's statuses 2025-03-06 15:03:05 -05:00
Alec Murphy aded79c192 Slon/Modules/Db: Save/load accounts to/from individual JSON files 2025-03-06 10:54:25 -05:00
Alec Murphy 64f31de070 Everywhere: Use slon_mem_task for memory allocation 2025-03-06 09:54:26 -05:00
Alec Murphy 5333b64917 Everywhere: Store statuses by account id, generate timelines as array of object:account_id,status_id 2025-03-05 13:43:35 -05:00
Alec Murphy 62b6d75851 Slon/Modules/Api: Use @slon_api_find_status_by_id 2025-03-05 08:09:17 -05:00
Alec Murphy b8fba64ab0 Slon/Api/V1/Accounts: Allow updating avatar/header images via PATCH /api/v1/accounts/update_credentials 2025-03-04 20:46:43 -05:00
Alec Murphy a7649a00c8 Everywhere: Use Catbox API asynchronously
Fixes #2
2025-03-04 13:26:35 -05:00
Alec Murphy 04dce33aca Slon/Modules/Api: Move Catbox API routines here 2025-03-03 21:12:33 -05:00
Alec Murphy e1c6ca1b2b Slon/Http/Server: Reimplement multipart/form-data to JSON parser 2025-03-03 21:00:55 -05:00
Alec Murphy 5258ab19a8 Slon/Api/V1/Statuses: Allow retrieval of individual status from public timeline 2025-03-02 18:07:09 -05:00
Alec Murphy 27fa0f8aad Slon/Api/V2/Media: Add support for Catbox API 2025-03-02 15:08:39 -05:00
Alec Murphy 6ff3a74914 Slon/Modules/Db,Slon/Http/AdminServer: Add a settings object to the database for misc parameters 2025-03-02 09:55:22 -05:00
Alec Murphy c0a28a6f17 Slon/Modules/Http: Increase session buffer size to 10MB 2025-03-01 21:11:01 -05:00
Alec Murphy b104551bbd Slon/Api/{V1,V2}/Media: Implement PUT /api/v1/media, POST /api/v2/media 2025-03-01 19:46:13 -05:00
Alec Murphy 95aecb9fb1 Slon/Api/V1/Markers: Implement /api/v1/markers 2025-02-28 18:39:20 -05:00
Alec Murphy b487e381e8 Slon/Modules/ActivityPub: Associate replies with known statuses 2025-02-28 10:21:02 -05:00
Alec Murphy c44f5b482e Slon/Modules/ActivityPub: Use atomUri as idempotency key for Create status requests 2025-02-23 09:25:03 -05:00
Alec Murphy 6ee0f037f6 Slon/Modules/ActivityPub: Always send the Accept request to signatory, rather than the actor specified in the object 2025-02-23 09:23:09 -05:00
Alec Murphy 430e92cbe0 Slon/Modules/ActivityPub: Sign GET request in @slon_activitypub_http_signature_is_valid 2025-02-23 08:20:56 -05:00
Alec Murphy 89e70359c4 Slon/Modules/ActivityPub: Remove invalid newline when building headers for signing GET request 2025-02-23 07:26:08 -05:00
Alec Murphy 8838d0446d Everywhere: Deduplicate local account creation for remote actors in @slon_accounts_create_local_for_remote_actor 2025-02-22 21:43:19 -05:00
Alec Murphy 1a5aa1e22c Slon/Modules/ActivityPub: Fix typo passing http_headers to Http.Get 2025-02-22 21:41:48 -05:00
Alec Murphy 045893b6c6 Everywhere: Be more granular with @db_save_* calls 2025-02-22 20:38:35 -05:00
Alec Murphy a9f5a1de0c Slon/Modules/ActivityPub: Deduplicate signed requests into @slon_activitypub_signed_request 2025-02-22 19:25:23 -05:00
Alec Murphy d6c1b8dbfd Slon/Api/V1/Timelines: Implement public timeline 2025-02-21 18:38:11 -05:00
Alec Murphy 66074a5472 Everywhere: Use session->path() 2025-02-21 18:10:25 -05:00
Alec Murphy ff5a07dc04 Everywhere: Make session->content_type() callable 2025-02-21 18:03:12 -05:00
Alec Murphy 614e68194b Slon/Modules/NodeInfo: Implement .well-known/nodeinfo and nodeinfo/2.0 2025-02-21 17:44:54 -05:00
Alec Murphy 545d408512 Everywhere: Make session->path(), session->path_count() callable 2025-02-21 16:51:22 -05:00
Alec Murphy 3728d56ea0 Everywhere: Make session->verb() callable 2025-02-21 11:13:31 -05:00