status-go/protocol
Icaro Motta 92b5d831fe
Support unfurling more websites (#3530)
Add support for unfurling a wider range of websites. Most code changes are
related to the implementation of a new Unfurler, an OEmbedUnfurler, which is
necessary to get metadata for Reddit URLs using oEmbed, since Reddit does not
support OpenGraph meta tags. The new unfurler will also be useful for other
websites, like Twitter. Also the user agent was changed, and now more websites
consider status-go reasonably human.

Related to issue https://github.com/status-im/status-mobile/issues/15918

Example hostnames that are now unfurleable: reddit.com, open.spotify.com,
music.youtube.com

Other improvements:

- Better error handling, especially because I wasn't wrapping errors correctly.
  I also removed the unnecessary custom error UnfurlErr.
- I made tests truly deterministic by parameterizing the http.Client instance
  and by customizing its Transport field (except for some failing conditions
  where it's even good to hit the real servers).
2023-06-05 07:46:17 -03:00
..
anonmetrics Changes necessary to restore wallet on mobile app 2023-05-25 21:08:34 +02:00
audio Add audio messages 2020-07-27 17:14:50 +02:00
common URL unfurling (initial implementation) (#3471) 2023-05-18 15:43:06 -03:00
communities Fix chats reseting when a Sync signal comes for communities (#3539) 2023-05-29 13:57:05 -04:00
datasync Rename MessageProcessor to MessageSender (#2264) 2021-06-23 17:13:48 +03:00
discord refactor(import-tool): process import data in chunks 2023-01-30 12:23:56 +01:00
encryption Changes necessary to restore wallet on mobile app 2023-05-25 21:08:34 +02:00
ens feat: make kdf iterations configurable when creating a multiaccount (#2796) 2022-09-27 16:27:20 -04:00
identity feat:support backup/sync social settings (#3407) 2023-04-20 06:59:09 +08:00
internal/sqlite Sync Settings (#2478) 2022-03-23 18:47:00 +00:00
linkpreview Support unfurling more websites (#3530) 2023-06-05 07:46:17 -03:00
migrations Changes necessary to restore wallet on mobile app 2023-05-25 21:08:34 +02:00
protobuf fix: issues caused by wrong `pairing.proto` fixed 2023-06-05 09:29:34 +02:00
pushnotificationclient Changes necessary to restore wallet on mobile app 2023-05-25 21:08:34 +02:00
pushnotificationserver Changes necessary to restore wallet on mobile app 2023-05-25 21:08:34 +02:00
requests feat(categories): Add muted type to category muting shortcut (#3534) 2023-06-02 14:25:32 +03:00
sqlite test: use `T.TempDir` to create temporary test directory (#2746) 2023-04-26 21:39:51 +01:00
subscription Move to monorepo structure (#1684) 2019-11-21 17:19:22 +01:00
transport Changes necessary to restore wallet on mobile app 2023-05-25 21:08:34 +02:00
tt Tests and linting 2021-09-30 13:02:41 +01:00
urls test: remove flaky test 2023-05-25 19:46:47 +02:00
v1 feat: accounts improvements applied 2023-05-25 19:46:47 +02:00
verification feat(ActivityCenter): Add message for canceling contact requests (#2992) 2022-12-14 12:27:02 +04:00
wakusync feat: accounts improvements applied 2023-05-25 19:46:47 +02:00
zaputil Move to monorepo structure (#1684) 2019-11-21 17:19:22 +01:00
LICENSE Move to monorepo structure (#1684) 2019-11-21 17:19:22 +01:00
README.md Added basic history of the protocol package (#1984) 2020-06-04 11:23:09 +01:00
activity_center.go Add muted_till param for chats (#3258) 2023-04-16 17:06:00 +02:00
activity_center_persistence.go feat: refactor activity center endpoints (#3237) 2023-03-03 18:31:48 +04:00
activity_center_persistence_test.go feat: refactor activity center endpoints (#3237) 2023-03-03 18:31:48 +04:00
chat.go feat(categories): Add muted type to category muting shortcut (#3534) 2023-06-02 14:25:32 +03:00
chat_group_proxy.go Clean up protocol package (#1890) 2020-03-09 07:19:23 +01:00
chat_test.go URL unfurling (initial implementation) (#3471) 2023-05-18 15:43:06 -03:00
communities_messenger_test.go feat(categories): Add muted type to category muting shortcut (#3534) 2023-06-02 14:25:32 +03:00
contact.go fix: marshal dismissed contact request state properly (#3482) 2023-05-15 11:29:33 +04:00
contact_test.go Compute emojiHash on-the-fly 2023-03-06 13:22:40 +02:00
delete_message.go sync message for `delete for me` should not be sent to someone else (#3462) 2023-05-09 20:54:56 +08:00
edit_message.go address feedback 2021-06-29 13:15:15 +02:00
emoji_reaction.go Return compressed key with emojis (#3410) 2023-05-10 13:45:42 +03:00
errors.go Add ClearHistory & DeactivateChat methods 2021-01-11 13:36:05 +01:00
group_chat_invitation.go group chat invitation 2020-09-07 12:15:58 +02:00
group_chat_system_messages.go feat: Handle image in group chat 2022-09-01 12:19:01 +02:00
identity_images.go Split clock values for contacts 2023-01-31 15:43:00 +00:00
local_notifications.go Add primary & secondary names 2023-02-27 15:13:43 +00:00
message_builder.go add PinMessage and PinnedMessage (#2180) 2021-05-14 23:22:50 +02:00
message_persistence.go URL unfurling (initial implementation) (#3471) 2023-05-18 15:43:06 -03:00
message_validator.go Fix some issues with pinned messages 2023-04-25 16:02:48 +01:00
message_validator_test.go Fix protobuf ImageType change 2020-12-17 14:10:00 +01:00
messenger.go Support unfurling more websites (#3530) 2023-06-05 07:46:17 -03:00
messenger_activity_center.go feat: refactor activity center endpoints (#3237) 2023-03-03 18:31:48 +04:00
messenger_activity_center_test.go Fix chats reseting when a Sync signal comes for communities (#3539) 2023-05-29 13:57:05 -04:00
messenger_auto_message.go Add read/unread messenger functions for activity center 2022-10-26 17:19:44 +01:00
messenger_backup.go feat: accounts improvements applied 2023-05-25 19:46:47 +02:00
messenger_backup_handler.go feat: accounts improvements applied 2023-05-25 19:46:47 +02:00
messenger_backup_test.go feat: a profile keypair name follows display name 2023-05-25 19:46:47 +02:00
messenger_base_test.go feat: a profile keypair name follows display name 2023-05-25 19:46:47 +02:00
messenger_bookmarks.go Sync all devices after initial pairing (#3047) 2023-01-06 20:21:14 +08:00
messenger_browsers.go Issue 13813 -- Use messenger ns for browser CRUD (#2801) 2022-08-24 16:05:35 +02:00
messenger_browsers_test.go Issue 13813 -- Use messenger ns for browser CRUD (#2801) 2022-08-24 16:05:35 +02:00
messenger_chats.go fix(unviewed): fix edge case where unviewed count would be -1 (#3491) (#3496) 2023-05-16 12:11:52 -04:00
messenger_collapsed_community_categories.go Add collapsed community categories 2023-03-14 17:13:21 +00:00
messenger_collapsed_community_categories_test.go Fix collapsed tests 2023-03-16 13:40:20 +00:00
messenger_communities.go feat(categories): Add muted type to category muting shortcut (#3534) 2023-06-02 14:25:32 +03:00
messenger_config.go feat: accounts improvements applied 2023-05-25 19:46:47 +02:00
messenger_contact_requests_test.go fix: create a CR on contact sync with received CR state (#3495) 2023-05-22 16:22:33 +04:00
messenger_contact_update_test.go Add spiff workflow cmd 2023-03-16 14:31:34 +00:00
messenger_contact_verification.go Add primary & secondary names 2023-02-27 15:13:43 +00:00
messenger_contact_verification_test.go Unifying the endpoints for contact flows (#3379) 2023-04-25 15:27:15 +04:00
messenger_contacts.go fix(contacts): add contact to ban and unban responses (#3558) 2023-06-01 13:26:12 -04:00
messenger_delete_message_for_everyone_test.go Fix chats reseting when a Sync signal comes for communities (#3539) 2023-05-29 13:57:05 -04:00
messenger_delete_message_for_me_test.go sync message for `delete for me` should not be sent to someone else (#3462) 2023-05-09 20:54:56 +08:00
messenger_delete_message_test.go fix(unviewed): fix edge case where unviewed count would be -1 (#3491) (#3496) 2023-05-16 12:11:52 -04:00
messenger_discv5.go feat: Add DiscV5 to Waku2 (#2434) 2021-11-22 09:40:14 -04:00
messenger_edit_message_test.go fix(mentions): deleting or editing a mention should remove the mention (#3421) 2023-04-27 10:22:26 -04:00
messenger_emoji_test.go Return compressed key with emojis (#3410) 2023-05-10 13:45:42 +03:00
messenger_ens.go Request/Decline access to communities 2021-02-26 15:35:43 +01:00
messenger_group_chat.go Add spiff workflow cmd 2023-03-16 14:31:34 +00:00
messenger_group_chat_test.go feat: allow group admin to delete others message (#3259) 2023-03-07 22:38:09 +08:00
messenger_handler.go fix: issues caused by wrong `pairing.proto` fixed 2023-06-05 09:29:34 +02:00
messenger_handler_test.go Split clock values for contacts 2023-01-31 15:43:00 +00:00
messenger_identity.go feat: a profile keypair name follows display name 2023-05-25 19:46:47 +02:00
messenger_identity_display_name_test.go feat: a profile keypair name follows display name 2023-05-25 19:46:47 +02:00
messenger_identity_image_test.go Add spiff workflow cmd 2023-03-16 14:31:34 +00:00
messenger_installations_test.go Fix installation test 2023-05-05 12:41:28 +01:00
messenger_keycard.go feat: accounts improvements applied 2023-05-25 19:46:47 +02:00
messenger_mailserver.go refactor: improve mailserver batch handling 2023-05-02 07:27:57 -04:00
messenger_mailserver_cycle.go Query only once mailservers per cycle 2023-05-05 16:49:06 +01:00
messenger_mailserver_processMailserverBatch_test.go test: processMailserverBatch 2023-04-30 10:04:04 -04:00
messenger_maps.go Tests and linting 2021-09-30 13:02:41 +01:00
messenger_mention.go fix: display name/nickname/ens which includes dash is not resolved in the chat when mentioned (#3516) 2023-05-23 18:07:49 +08:00
messenger_mention_test.go fix: display name/nickname/ens which includes dash is not resolved in the chat when mentioned (#3516) 2023-05-23 18:07:49 +08:00
messenger_messages.go Feat/sync local deleted message (#3476) 2023-05-12 16:31:34 +08:00
messenger_mute_test.go Add muted_till param for chats (#3258) 2023-04-16 17:06:00 +02:00
messenger_peers.go chore: upgrade go-waku to v0.5 (#3213) 2023-02-22 17:58:17 -04:00
messenger_pin_message_test.go fix(Messenger): Count SystemMessagePinnedMessage as unviewed (#3449) 2023-05-05 18:26:19 +03:00
messenger_pin_messages.go fix(pins): prepare content of pin messages so stickers work (#3523) 2023-05-30 15:05:38 -04:00
messenger_reply_test.go fix(reply-test): fix reply test because msgs could come out of order 2023-01-11 16:24:42 -05:00
messenger_response.go feat: accounts improvements applied 2023-05-25 19:46:47 +02:00
messenger_response_test.go Fix duplicated notifications on receiving contact update 2023-02-14 09:22:37 +00:00
messenger_saved_address.go feat: Update saved addresses DB to store ENS, isTest flag and chains (#3183) 2023-03-06 16:26:46 +03:00
messenger_send_images_album_test.go feat(edit-message): Edit image messages (#3393) 2023-04-26 14:10:17 +03:00
messenger_share_image_test.go Fix image fields (#3121) 2023-02-02 12:00:49 +04:00
messenger_status_updates.go Upgrade linter to 1.50.0 2023-01-13 17:52:03 +00:00
messenger_status_updates_test.go Timeout automatic status updates (#2757) 2022-08-03 04:38:01 +05:30
messenger_switcher_cards.go Persist switcher cards (#3049) 2023-01-05 21:41:57 +05:30
messenger_sync_bookmark_test.go support local pairing after logged in as receiver; pair installation;(#3202) 2023-02-28 20:32:45 +08:00
messenger_sync_chat_test.go support local pairing after logged in as receiver; pair installation;(#3202) 2023-02-28 20:32:45 +08:00
messenger_sync_clear_history_test.go support local pairing after logged in as receiver; pair installation;(#3202) 2023-02-28 20:32:45 +08:00
messenger_sync_keycard_change_test.go tests: `GetProfileKeypairForTest` from test helper updated and provides higher granularity 2023-05-25 19:46:47 +02:00
messenger_sync_keycards_state_test.go tests: `GetProfileKeypairForTest` from test helper updated and provides higher granularity 2023-05-25 19:46:47 +02:00
messenger_sync_profile_picture_test.go support local pairing after logged in as receiver; pair installation;(#3202) 2023-02-28 20:32:45 +08:00
messenger_sync_raw_messages.go feat: accounts improvements applied 2023-05-25 19:46:47 +02:00
messenger_sync_saved_addresses_test.go feat: Update saved addresses DB to store ENS, isTest flag and chains (#3183) 2023-03-06 16:26:46 +03:00
messenger_sync_settings.go feat: backup display name improvements 2023-03-31 16:20:50 +02:00
messenger_sync_settings_test.go Changes necessary to restore wallet on mobile app 2023-05-25 21:08:34 +02:00
messenger_sync_verification_test.go support local pairing after logged in as receiver; pair installation;(#3202) 2023-02-28 20:32:45 +08:00
messenger_sync_wallets_test.go chore: Add ColorId for Wallet accounts that can be shared with mobile (#3521) 2023-06-02 17:06:51 +02:00
messenger_test.go fix(contacts): add contact to ban and unban responses (#3558) 2023-06-01 13:26:12 -04:00
messenger_wallet.go fix: issues caused by wrong `pairing.proto` fixed 2023-06-05 09:29:34 +02:00
messenger_walletconnect.go Implement wallet connect session CRUD API 2022-08-19 12:32:00 +01:00
messenger_walletconnect_test.go Implement wallet connect session CRUD API 2022-08-19 12:32:00 +01:00
persistence.go fix(unviewed): fix edge case where unviewed count would be -1 (#3491) (#3496) 2023-05-16 12:11:52 -04:00
persistence_collapsed_community_categories.go Fix collapsed tests 2023-03-16 13:40:20 +00:00
persistence_test.go URL unfurling (initial implementation) (#3471) 2023-05-18 15:43:06 -03:00
push_notification_test.go Add spiff workflow cmd 2023-03-16 14:31:34 +00:00
status_update.go feat: user status (#2276) 2021-07-22 13:41:49 -04:00
switcher_card.go Persist switcher cards (#3049) 2023-01-05 21:41:57 +05:30
transaction_validator.go Move message to common namespace 2020-09-09 21:22:12 +02:00
transaction_validator_test.go Move message to common namespace 2020-09-09 21:22:12 +02:00

README.md

status-go/protocol

This is an implementation of the secure transport and payloads which are a part of the Status Client specification.

This implementation uses SQLite and SQLCipher for persistent storage.

The payloads are encoded using protocol-buffers.

Content

  • messenger.go is the main file which exports Messenger struct. This is a public API to interact with this implementation of the Status Chat Protocol.
  • protobuf/ contains protobuf files implementing payloads described in the Payloads spec.
  • encryption/ implements the Secure Transport spec.
  • transport/ connects the Status Chat Protocol with a wire-protocol which in our case is either Whisper or Waku.
  • datasync/ is an adapter for MVDS.
  • applicationmetadata/ is an outer layer wrapping a payload with an app-specific metadata like a signature.
  • identity/ implements details related to creating a three-word name and identicon.
  • migrations/ contains implementation specific migrations for the sqlite database which is used by Messenger as a persistent data store.

History

Originally this package was a dedicated repo called status-protocol-go and was migrated into status-go. The new status-go/protocol package maintained its own dependencies until sub modules were removed and the root go.mod file managed all dependencies for the entire status-go repo.