Commit Graph

402 Commits

Author SHA1 Message Date
bitfl0wer 852d784bd5 Add crosspost endpoint 2023-08-22 22:10:12 +02:00
bitfl0wer 54c5cc6cc2 Add message acknowledge endpoint 2023-08-22 22:06:19 +02:00
bitfl0wer d751c92778 Create Greet Message 2023-08-22 21:55:24 +02:00
bitfl0wer fd3a3ee836 Add message: get 2023-08-22 21:27:31 +02:00
bitfl0wer 7b5426519d Closes #269, #268, #270 2023-08-22 20:09:44 +02:00
bitfl0wer 36a0730d0b Correctify search_message
Fixes Search Messages #258
2023-08-22 19:23:27 +02:00
bitfl0wer 6e40568b23 Move search_messages to Channel impl 2023-08-22 17:56:13 +02:00
bitfl0wer a13f766758 Add search() and search_messages() 2023-08-22 14:00:39 +02:00
bitfl0wer cfbcb29a95 Modify Guild Channel Positions
Fixes #229
2023-08-22 01:11:22 +02:00
bitfl0wer 7eee08459b Add Guild::modify(); 2023-08-20 23:13:34 +02:00
bitfl0wer cb216c462d Add create_ban
Closes "Create Guild Ban #299"
2023-08-20 18:49:10 +02:00
kozabrada123 905b7af618 Add content type specification 2023-08-18 11:41:06 +02:00
bitfl0wer 0396e318d3 Change bearer_auth to header("Authorization" 2023-08-17 22:26:07 +02:00
bitfl0wer 116c829f28 Rename update to modify 2023-08-16 14:05:51 +02:00
bitfl0wer 6dd9f84573 Remove unused import 2023-08-14 00:04:58 +02:00
bitfl0wer 02be1e786d Remove stupid comment from me 2023-08-14 00:04:53 +02:00
bitfl0wer 45d68b4da4 Rename get to get_user 2023-08-14 00:02:30 +02:00
bitfl0wer 614c7bb2b2 Change UserMeta::get() to take self instead of Self 2023-08-14 00:02:03 +02:00
bitfl0wer f9c3f55d95 Remove channel_id argument from modify. WHY WAS IT THERE TO BEGIN WITH LOL 2023-08-13 15:54:25 +02:00
fowb 63a4141bde Add fixme comment 2023-08-12 22:40:07 +02:00
fowb ff47965e99 Change Mutex<T> to RwLock<T> 2023-08-12 19:31:31 +02:00
kozabrada123 e0d7df417c Fix trailing /s (#180) 2023-08-12 16:48:33 +02:00
bitfl0wer fb792f8356 Integrate component behaviour everywhere 2023-08-04 11:19:23 +02:00
kozabrada123 c0bc2ee9e2 Fix missing references to the best of my ability 2023-07-31 10:28:18 +02:00
kozabrada123 261ae6eb4a Goof 2023-07-31 10:07:56 +02:00
kozabrada123 60393a5686 Docs 2023-07-31 10:01:25 +02:00
kozabrada123 1ce9bf08cd Guilds + Channels 2023-07-30 09:04:31 +02:00
kozabrada123 b72ebf36ed Documemtaiom 2023-07-30 08:26:26 +02:00
kozabrada123 590afc8c9d Permissions with code blocks 2023-07-29 18:12:57 +02:00
kozabrada123 83d4ffc4e8 Moar docs 2023-07-29 10:23:04 +02:00
kozabrada123 8eb2e2008c Remove the todos from the last commit 2023-07-28 18:57:35 +02:00
kozabrada123 d0547cb1f0 Better docs 2023-07-28 18:45:40 +02:00
kozabrada123 dcfb59fca1 Merge branch 'main' into fix/doc-improvements 2023-07-28 18:21:20 +02:00
Flori 07f283a205 Improve auto updating structs usage (#168)
* Add `GatewayHandle` to `UserMeta`

* Make user::shell async due to gateway add
2023-07-24 19:13:53 +02:00
Flori ccf44a5375 Auto updating structs (#163)
* Gateway fields don't need to be pub

* Add store to Gateway

* Add UpdateMessage trait

* Proof of concept: impl UpdateMessage for Channel

* Start working on auto updating structs

* Send entity updates over watch channel

* Add id to UpdateMessage

* Create trait Updateable

* Add documentation

* add gateway test

* Complete test

* Impl UpdateMessage::update() for ChannelUpdate

* Impl UpdateMessage::update() for ChannelUpdate
Co-authored by: SpecificProtagonist <specificprotagonist@posteo.org>

* make channel::modify no longer mutate Channel

* change modify call

* remove unused imports

* Allow dead code with TODO to remove it

* fix channel::modify test

* Update src/gateway.rs

Co-authored-by: SpecificProtagonist <vincentjunge@posteo.net>

---------

Co-authored-by: SpecificProtagonist <vincentjunge@posteo.net>
2023-07-21 15:35:31 +02:00
kozabrada123 44d9655e8e Merge stuff 2023-07-21 14:10:50 +02:00
Flori 85fb24cd8c Fix: message file attachment duplication (#159)
* make send() take ownership of MessageSendSchema

* Remove message file attachment duplication

* Remove superfluous docstrings
2023-07-17 23:26:25 +02:00
Flori 1fdbe6cc00 Join/Leave Guilds, (Group) DMs and minor improvements (#157)
## Summary:

**Added:**
- Schemas `PrivateChannelCreateSchema` `ChannelInviteCreateSchema`, `AddChannelRecipientSchema` recursively (including schemas which were needed to create these schemas)
- Methods `create_private_channel`, `leave_guild`, `accept_invite`, `create_user_invite`, `create_guild_invite`, `add_channel_recipient`, `remove_channel_recipient`
- Integration tests for the functionality covered by implementing #45
- Documentation in some places where I noticed it would be useful to have some
- `create_user` method in `/src/tests`: Cuts down on test boilerplate needed to create an addition test user

**Changed:**
- `.gitignore`
  - Added `.DS_store` files to gitignore (some weird macos files), removed Cargo.lock, as Cargo.lock should be included for libraries
- Added a lot of default trait derives like Clone, Copy, PartialEq, Eq, Ord, PartialOrd to structs and enums where I saw them missing
- Added missing `teardown()` calls to the integration tests
- Renamed integration test files in `/src/tests` dir to all be plural: `channel.rs` -> `channels.rs`
- Made more fields on `User` type `Option<>`
- All instances in `/src/tests` where a second test user was created using a RegistrationSchema and the register_user method were replaced with the new `create_user` method
- README.md: Marked roadmap fields covered by #45 as implemented
- Changed visibility of `/src/tests/common/mod.rs` methods from `pub` to `pub(crate)`. In hindsight, this was probably not required, haha

**Removed:**
- Unneeded import in`src/types/config/types/guild_configuration.rs`


## Commit log:

* Add .DS_store, remove Cargo.lock

* Create PrivateChannelCreateSchema

* pub use users

* add channels.rs

* create channels.rs

* Add Deserialize/Serialize derives

* Implement create_private_channel

* Add create_dm() test

* Make optional fields on `User` `Option<>`

* Check boxes for implemented features

* Create users/guilds.rs

* Remove unneeded import

* Add UserMeta::leave_guild()

* Create api/invites/mod.rs

* Add debug print to send_request

* Rename tests files

* Create invites.rs

* create invite.rs

* Add documentation

* Implement accept_invite

* Sort fields on Channel alphabetically

* Add invite mod

* Add forgotten teardown() at test end

* change visiblities, add create_user()

* Implement `create_user_invite()`

* start working on invite tests

* Add allow flags

* Fix bad url

* Create CreateChannelInviteSchema and friends

* remove non-implemented test code

* add body to requests

* Add Clone to UserMeta

* More comprehensive error message when running into a deserialization error

* Add arguments documentation to accept_invite

* Add Eq derive to GuildFeaturesList

* Add Eq derive to Emoji

* Add Eq derive to GuildBan

* Add create_accept_invite() test

* Add Default derive to ChannelCreateSchema

* Change create_guild_invite to return GuildInvite

* Dates as chrono::Date(Utc); sort alphabetically

* Add default derives wherever possible

* Implement add_- and remove_channel_recipient

* Create AddChannelRecipientSchema

* replace otheruser regs with bundle.creeate_user()

* Add (disabled) test remove_add_person_from_to_dm()
2023-07-17 19:36:28 +02:00
Flori 6f3bd04963 Enable saving and loading LimitsConfiguration (#152)
Impl Serialize, Deserialize for LimitsConfiguration and children
2023-07-14 17:38:54 +02:00
kozabrada123 a0d2fc8213 Add some docs 2023-07-11 19:54:04 +02:00
kozabrada123 18ac7b5708 Rustdoc warnings + misc changes 2023-07-10 18:06:45 +02:00
kozabrada123 192f12d892 /* -> /// 2023-07-10 16:59:00 +02:00
Flori 69b7c2445c Ratelimiter overhaul (#144)
* Rename limits and limit to have better names

* Remove empty lines

* Remove handle_request (moved to requestlimiter)

* Start working on new ratelimiter

* Make limits Option, add "limited?" to constructor

* Add missing logic to send_request

* Rename Limits

* Create Ratelimits and Limit Struct

* Define Limit

* Import Ratelimits

* Define get_rate_limits

* Remove unused import

* + check_rate_limits & limits_config_to_ratelimits

* Remove Absolute Limits
These limits are not meant to be tracked anyways.

* add ratelimits is_exhausted

* Add error handling and send request checking

* change limits to option ratelimits

* Add strum

* Change Ratelimits to Hashmap

* Remove ratelimits in favor of hashmap

* Change code from struct to hashmap

* start working on update rate limits

* Remove wrong import

* Rename ChorusLibError to ChorusError

* Documented the chorus errors

* Made error documentation docstring

* Make ReceivedErrorCodeError have error string

* Remove unneeded import

* Match changes in errors.rs

* Improve update_rate_limits and can_send_request

* add ratelimits.to_hash_map()

* use instances' client instead of new client

* add LimitsConfiguration to instance

* improve update_limits, change a method name

* Fix un-updated errors

* Get LimitConfiguration in a sane way

* Move common.rs into ratelimiter::ChorusRequest

* Delete common.rs

* Make instance.rs use overhauled errors

* Refactor to use new Rate limiting implementation

* Refactor to use new Rate limiting implementation

* Refactor to use new Rate limiting implementation

* Refactor to use new Rate limiting implementation

* Refactor to use new Rate limiting implementation

* Refactor to use new Rate limiting implementation

* update ratelimiter implementation across all files

* Fix remaining errors post-refactor

* Changed Enum case to be correct

* Use result

* Re-add missing body to request

* Remove unneeded late initalization

* Change visibility from pub to pub(crate)
I feel like these core methods don't need to be exposed as public API.

* Remove unnecessary import

* Fix clippy warnings

* Add docstring

* Change Error names across all files

* Update Cargo.toml

Strum is not needed

* Update ratelimits.rs

* Update ratelimits.rs

* Bug/discord instance info unavailable (#146)

* Change text to be more ambigous

* Use default Configuration instead of erroring out

* Emit warning log if instance config cant be gotten

* Remove import

* Update src/instance.rs

Co-authored-by: SpecificProtagonist <specificprotagonist@posteo.org>

* Add missing closing bracket

* Put limits and limits_configuration as one struct

* Derive Hash

* remove import

* rename limits and limits_configuration

* Save clone call

* Change LimitsConfiguration to RateLimits
`LimitsConfiguration` is in no way related to whether the instance has API rate limits enabled or not. Therefore, it has been replaced with what it should have been all along.

* Add ensure_limit_in_map(), add `window` to `Limit`

* Remove unneeded var

* Remove import

* Clean up unneeded things
Dead code warnings have been supressed, but flagged as FIXME so they don't get forgotten. Anyone using tools like TODO Tree in VSCode can still see that they are there, however, they will not be shown as warnings anymore

* Remove nested submodule `limit`

* Add doc comments

* Add more doc comments

* Add some log messages to some methods

---------

Co-authored-by: SpecificProtagonist <specificprotagonist@posteo.org>
2023-07-09 18:38:02 +02:00
Vincent Junge 8b0f41fad3 remove client side validation 2023-06-25 11:36:37 +02:00
Flori Weber c25795ab4d Make ReactionMeta::get() return Vec<PublicUser> 2023-06-23 12:54:08 +02:00
Flori Weber 6c9df9508e Fix stupid multi line comments 2023-06-23 12:18:22 +02:00
Flori 8fdbd7d84f Merge pull request #130 from polyphony-chat/refactor/change-channel-modify
Refactor/change channel modify
2023-06-22 20:05:15 +02:00
Flori Weber c00cc215fe Remove wrongful match statement 2023-06-22 19:54:39 +02:00
Flori 6c0faa29f3 Update src/api/channels/channels.rs
Co-authored-by: SpecificProtagonist <specificprotagonist@posteo.org>
2023-06-22 19:42:07 +02:00
Flori Weber 7fb37ff204 Make Channel::modify() take &mut self 2023-06-22 18:56:16 +02:00
Vincent Junge d52acd9093 always use Snowflakes in args 2023-06-22 18:55:19 +02:00
Vincent Junge f98180cd03 ChorusResult type alias 2023-06-21 21:39:22 +02:00
Vincent Junge 709ef11f2c get channel messages 2023-06-21 14:46:45 +02:00
Flori Weber 62f6bfa363 Change send_request() calls to pass &mut Instance 2023-06-20 22:42:42 +02:00
Flori Weber 6eb3cf65d1 Change to single-line docstring 2023-06-20 22:36:39 +02:00
Flori Weber 20f39a409d Multiline docstring to single line docstring 2023-06-20 22:30:42 +02:00
Vincent Junge 55b0f268e2 more consistent use of snowflakes 2023-06-20 22:03:29 +02:00
kozabrada123 cd98de286f Change Option<ChorusLibError> to Result<(), ChorusLibError> 2023-06-20 18:26:30 +02:00
Vincent Junge 9c7031abde UrlBundle remove getters 2023-06-20 12:29:52 +02:00
Flori Weber ec3a531f48 apply clippy suggestions 2023-06-19 19:01:18 +02:00
Flori Weber 5dbb627322 change post to delete 2023-06-19 18:12:09 +02:00
Vincent Junge c06778fc71 Fix clippy::await_holding_refcell_ref false positives 2023-06-19 16:46:58 +02:00
Vincent Junge 208eeac536 Fix various Clippy lints 2023-06-19 12:35:07 +02:00
Flori Weber 1cb672faa6 Add remove_relationship 2023-06-18 23:10:29 +02:00
Flori Weber f658f3fe61 Remove unneccessary imports 2023-06-18 23:04:25 +02:00
Flori Weber 8c68e8bd77 Add modify_user_relationship 2023-06-18 23:02:49 +02:00
Flori Weber 9b52ceab4b Change returns, add documentation 2023-06-18 15:39:52 +02:00
Flori Weber 94ae449f7d Start implementing get_relationship 2023-06-18 14:00:12 +02:00
Flori Weber c2d46196c8 Implement send_friend_request 2023-06-15 19:00:47 +02:00
Flori Weber 28881276e0 Add get_mutual_relationships 2023-06-14 22:54:14 +02:00
Flori Weber 7e4b4269b6 Change belongs_to to be borrowed non-mutably 2023-06-14 22:53:56 +02:00
Flori Weber 2e84385007 Create relationships.rs 2023-06-13 14:04:58 +02:00
Flori Weber 616d8a1bf0 Create relationships.rs 2023-06-13 14:04:39 +02:00
bitfl0wer 7a3524a1ab run cargo fix 2023-06-12 18:59:06 +02:00
bitfl0wer 9bbe9fc470 run cargo fix 2023-06-12 18:58:53 +02:00
bitfl0wer c97fa7bc48 Remove unneccessary variable 2023-06-12 18:55:27 +02:00
bitfl0wer 44224cb478 Refactor limited requester
The requester does not need to be instantiated anymore, which makes things easier to read imo.
2023-06-12 18:51:54 +02:00
Flori Weber 057e8e552f Refactor users.rs to use api::common 2023-06-11 21:40:03 +02:00
Flori Weber 6db823cb48 Refactor roles.rs to use api::common 2023-06-11 20:04:40 +02:00
Flori Weber 893d1be98a Refactor member.rs to use api::common 2023-06-11 19:30:15 +02:00
Flori Weber d10f268ae5 Refactor guilds.rs to use api:common 2023-06-11 19:26:34 +02:00
Flori Weber c8e4268638 Use handle_request_as_option instead 2023-06-11 19:22:28 +02:00
Flori Weber e0a6b37a94 Introduce handle_request_as_option 2023-06-11 19:22:10 +02:00
Flori Weber 8d6fab0858 Refactor reactions to use api::options 2023-06-11 19:13:38 +02:00
Flori Weber 876cbd319d Refactor permissions.rs to use api::common 2023-06-11 17:56:29 +02:00
Flori Weber 96b82377d8 Remove import 2023-06-11 17:51:26 +02:00
Flori Weber 06e27e816c Refactor Message::send() 2023-06-11 17:49:42 +02:00
Flori Weber 99aa44daa8 Refactor to use api common, return Message instead 2023-06-11 17:40:44 +02:00
Flori Weber 0d8505121d Refactor channels.rs to use api::common 2023-06-11 17:36:04 +02:00
Flori Weber 120469453b Add argument to specify which LimitType to use 2023-06-11 17:35:47 +02:00
Flori Weber 4305f035f0 Move common request code into common.rs 2023-06-11 17:21:09 +02:00
Flori Weber 9b6a3c2fa6 Merge branch 'main' into feature/permissions-and-roles 2023-06-11 15:34:43 +02:00
Flori Weber 1dbc05d48c create common.rs 2023-06-11 15:34:05 +02:00
Flori Weber c745861592 Reformat entire project, optimize imports 2023-06-11 13:52:53 +02:00
Flori Weber f641dbb14f Reformat entire project, optimize imports 2023-06-11 13:52:31 +02:00
bitfl0wer 9940394f20 Implement delete_permission 2023-06-10 22:16:53 +02:00
bitfl0wer b20fc61aea impl Channel::edit_permissions() 2023-06-10 22:09:53 +02:00
bitfl0wer 6b1dd90355 Create permissions.rs 2023-06-10 21:51:45 +02:00
Flori Weber f5fba7c34a Better error handling in get methods. 2023-06-10 18:50:49 +02:00
Flori Weber f0e3933419 Implement RoleObject::get() 2023-06-10 18:48:37 +02:00