2023-04-15 18:33:17 +02:00
< div align = "center" >
2023-04-10 21:28:22 +02:00
2023-05-25 18:33:17 +02:00
[![Discord]][Discord-invite]
2023-04-10 21:37:27 +02:00
[![Build][build-shield]][build-url]
2023-08-25 20:58:46 +02:00
[![Coverage][coverage-shield]][coverage-url]
2023-04-10 21:37:27 +02:00
[![Contributors][contributors-shield]][contributors-url]
[![Forks][forks-shield]][forks-url]
[![Issues][issues-shield]][issues-url]
2023-08-27 13:21:45 +02:00
< img src = "https://img.shields.io/static/v1?label=Status&message=Alpha&color=blue" >
2023-04-10 21:31:40 +02:00
2023-04-15 18:33:17 +02:00
< / br >
< div align = "center" >
< a href = "https://github.com/polyphony-chat/chorus" >
2023-05-25 18:33:17 +02:00
< img src = "https://raw.githubusercontent.com/polyphony-chat/design/main/branding/polyphony-chorus-round-8bit.png" alt = "Logo" width = "128" height = "128" >
2023-04-15 18:33:17 +02:00
< / a >
< h3 align = "center" > Chorus< / h3 >
< p align = "center" >
A rust library for interacting with (multiple) Spacebar-compatible APIs and Gateways (at the same time).
< br / >
< a href = "https://github.com/polyphony-chat/chorus" > < strong > Explore the docs »< / strong > < / a >
< br / >
< br / >
< a href = "https://github.com/polyphony-chat/chorus/issues" > Report Bug< / a >
·
< a href = "https://github.com/polyphony-chat/chorus/issues" > Request Feature< / a >
2023-04-26 11:19:04 +02:00
·
< a href = "https://discord.gg/8tKSC8wzDq" > Join Discord< / a >
2023-04-15 18:33:17 +02:00
< / p >
< / div >
< / div >
2023-04-10 21:28:22 +02:00
2023-06-20 00:17:52 +02:00
## About
Chorus is a Rust library that allows developers to interact with multiple Spacebar-compatible APIs and Gateways simultaneously. The library provides a simple and efficient way to communicate with these services, making it easier for developers to build applications that rely on them. Chorus is open-source and welcomes contributions from the community.
## Contributing
2023-08-20 17:28:11 +02:00
If you'd like to contribute new functionality, check out [The 'Meta'-issues. ](https://github.com/polyphony-chat/chorus/issues?q=is%3Aissue+label%3A%22Type%3A+Meta%22+ ) They contain a comprehensive list of all features which are yet missing for full Discord.com compatibility.
2023-06-20 00:17:52 +02:00
If you would like to contribute, please feel free to open an Issue with the idea you have, or a
Pull Request. Please keep our [contribution guidelines ](https://github.com/polyphony-chat/.github/blob/main/CONTRIBUTION_GUIDELINES.md ) in mind. Your contribution might not be
accepted, if it violates these guidelines or [our Code of Conduct ](https://github.com/polyphony-chat/.github/blob/main/CODE_OF_CONDUCT.md ).
< details >
< summary > Progress Tracker/Roadmap< / summary >
### Core Functionality
- [x] Rate Limiter (hint: couldn't be fully tested due to [an Issue with the Spacebar Server ](https://github.com/spacebarchat/server/issues/1022 ))
- [x] [Login (the conventional way) ](https://github.com/polyphony-chat/chorus/issues/1 )
- [ ] [2FA ](https://github.com/polyphony-chat/chorus/issues/40 )
- [x] [Registration ](https://github.com/polyphony-chat/chorus/issues/1 )
### Messaging
- [x] [Sending messages ](https://github.com/polyphony-chat/chorus/issues/23 )
- [x] [Events (Message, User, Channel, etc.) ](https://github.com/polyphony-chat/chorus/issues/51 )
- [x] Channel creation
- [x] Channel deletion
- [x] [Channel management (name, description, icon, etc.) ](https://github.com/polyphony-chat/chorus/issues/48 )
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
- [x] [Join and Leave Guilds ](https://github.com/polyphony-chat/chorus/issues/45 )
- [x] [Start DMs ](https://github.com/polyphony-chat/chorus/issues/45 )
- [x] [Group DM creation, deletion and member management ](https://github.com/polyphony-chat/chorus/issues/89 )
2023-06-20 00:17:52 +02:00
- [ ] [Deleting messages ](https://github.com/polyphony-chat/chorus/issues/91 )
- [ ] [Message threads ](https://github.com/polyphony-chat/chorus/issues/90 )
- [x] [Reactions ](https://github.com/polyphony-chat/chorus/issues/85 )
- [ ] Message Search
- [ ] Message history
- [ ] Emoji
- [ ] Stickers
- [ ] [Forum channels ](https://github.com/polyphony-chat/chorus/issues/90 )
### User Management
- [ ] [User profile customization ](https://github.com/polyphony-chat/chorus/issues/41 )
- [x] Gettings users and user profiles
- [x] [Friend requests ](https://github.com/polyphony-chat/chorus/issues/92 )
- [x] [Blocking users ](https://github.com/polyphony-chat/chorus/issues/92 )
- [ ] User presence (online, offline, idle, etc.)
- [ ] User status (custom status, etc.)
- [x] Account deletion
### Additional Features
- [ ] Server discovery
- [ ] Server templates
### Voice and Video
- [ ] [Voice chat support ](https://github.com/polyphony-chat/chorus/issues/49 )
- [ ] [Video chat support ](https://github.com/polyphony-chat/chorus/issues/49 )
### Permissions and Roles
- [x] [Role management ](https://github.com/polyphony-chat/chorus/issues/46 ) (creation, deletion, modification)
- [x] [Permission management ](https://github.com/polyphony-chat/chorus/issues/46 ) (assigning and revoking permissions)
- [x] [Channel-specific permissions ](https://github.com/polyphony-chat/chorus/issues/88 )
- [x] Role-based access control
### Guild Management
- [x] Guild creation
- [x] Guild deletion
- [ ] [Guild settings (name, description, icon, etc.) ](https://github.com/polyphony-chat/chorus/issues/43 )
- [ ] Guild invites
### Moderation
- [ ] Channel moderation (slow mode, etc.)
- [ ] User sanctions (mute, kick, ban)
- [ ] Audit logs
### Embeds and Rich Content
- [x] Sending rich content in messages (links, images, videos)
- [ ] Customizing embed appearance (title, description, color, fields)
### Webhooks
- [ ] Webhook creation and management
- [ ] Handling incoming webhook events
### Documentation and Examples
- [ ] Comprehensive documentation
- [ ] Example usage and code snippets
- [ ] Tutorials and guides
[Rust]: https://img.shields.io/badge/Rust-orange?style=plastic& logo=rust
[Rust-url]: https://www.rust-lang.org/
[build-shield]: https://img.shields.io/github/actions/workflow/status/polyphony-chat/chorus/build_and_test.yml?style=flat
[build-url]: https://github.com/polyphony-chat/chorus/blob/main/.github/workflows/build_and_test.yml
[clippy-shield]: https://img.shields.io/github/actions/workflow/status/polyphony-chat/chorus/clippy.yml?style=flat
[clippy-url]: https://github.com/polyphony-chat/chorus/blob/main/.github/workflows/clippy.yml
[contributors-shield]: https://img.shields.io/github/contributors/polyphony-chat/chorus.svg?style=flat
[contributors-url]: https://github.com/polyphony-chat/chorus/graphs/contributors
2023-08-25 20:58:46 +02:00
[coverage-shield]: https://coveralls.io/repos/github/polyphony-chat/chorus/badge.svg?branch=main
[coverage-url]: https://coveralls.io/github/polyphony-chat/chorus?branch=main
2023-06-20 00:17:52 +02:00
[forks-shield]: https://img.shields.io/github/forks/polyphony-chat/chorus.svg?style=flat
[forks-url]: https://github.com/polyphony-chat/chorus/network/members
[stars-shield]: https://img.shields.io/github/stars/polyphony-chat/chorus.svg?style=flat
[stars-url]: https://github.com/polyphony-chat/chorus/stargazers
[issues-shield]: https://img.shields.io/github/issues/polyphony-chat/chorus.svg?style=flat
[issues-url]: https://github.com/polyphony-chat/chorus/issues
[license-shield]: https://img.shields.io/github/license/polyphony-chat/chorus.svg?style=f;at
[license-url]: https://github.com/polyphony-chat/chorus/blob/master/LICENSE
[Discord]: https://dcbadge.vercel.app/api/server/m3FpcapGDD?style=flat
[Discord-invite]: https://discord.com/invite/m3FpcapGDD
2023-08-20 17:28:11 +02:00
< / details >