Skip to content

Commit 4aae84c

Browse files
committed
feat: implement derives for some more types
1 parent e9a124b commit 4aae84c

File tree

4 files changed

+50
-0
lines changed

4 files changed

+50
-0
lines changed

crates/sdk/src/api/auth.rs

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,13 @@ use self::next_step_request::form_fields::Field;
99

1010
/// A response to an [`AuthStep`].
1111
#[derive(Debug, Clone)]
12+
#[cfg_attr(
13+
feature = "rkyv",
14+
derive(rkyv::Archive, rkyv::Serialize, rkyv::Deserialize)
15+
)]
16+
#[cfg_attr(feature = "rkyv_validation", derive(bytecheck::CheckBytes))]
17+
#[cfg_attr(feature = "serde_derive", derive(serde::Serialize, serde::Deserialize))]
18+
#[repr(u8)]
1219
pub enum AuthStepResponse {
1320
/// A choice selection.
1421
Choice(String),

crates/sdk/src/api/chat.rs

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -117,6 +117,13 @@ impl Message {
117117

118118
/// A stream event.
119119
#[derive(Debug, Clone, PartialEq)]
120+
#[cfg_attr(
121+
feature = "rkyv",
122+
derive(rkyv::Archive, rkyv::Serialize, rkyv::Deserialize)
123+
)]
124+
#[cfg_attr(feature = "rkyv_validation", derive(bytecheck::CheckBytes))]
125+
#[cfg_attr(feature = "serde_derive", derive(serde::Serialize, serde::Deserialize))]
126+
#[repr(u8)]
120127
pub enum Event {
121128
/// A chat service event.
122129
Chat(stream_event::Event),
@@ -167,6 +174,13 @@ impl From<Event> for stream_events_response::Event {
167174

168175
/// Describes where to subscribe for events.
169176
#[derive(Debug, Clone, Copy, Hash, PartialEq, Eq)]
177+
#[cfg_attr(
178+
feature = "rkyv",
179+
derive(rkyv::Archive, rkyv::Serialize, rkyv::Deserialize)
180+
)]
181+
#[cfg_attr(feature = "rkyv_validation", derive(bytecheck::CheckBytes))]
182+
#[cfg_attr(feature = "serde_derive", derive(serde::Serialize, serde::Deserialize))]
183+
#[repr(u8)]
170184
pub enum EventSource {
171185
/// Subscription for a guild's events.
172186
Guild(u64),
@@ -205,6 +219,12 @@ impl From<EventSource> for StreamEventsRequest {
205219
/// An invite ID.
206220
#[into_request("JoinGuildRequest", "PreviewGuildRequest")]
207221
#[derive(Debug, Clone, Eq, PartialEq)]
222+
#[cfg_attr(
223+
feature = "rkyv",
224+
derive(rkyv::Archive, rkyv::Serialize, rkyv::Deserialize)
225+
)]
226+
#[cfg_attr(feature = "rkyv_validation", derive(bytecheck::CheckBytes))]
227+
#[cfg_attr(feature = "serde_derive", derive(serde::Serialize, serde::Deserialize))]
208228
pub struct InviteId {
209229
invite_id: String,
210230
}

crates/sdk/src/api/mod.rs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -160,6 +160,11 @@ impl StdError for HmcFromStrError {
160160
///
161161
/// An example HMC looks like `hmc://chat.harmonyapp.io/403cb46c-49cf-4ae1-b876-f38eb26accb0`.
162162
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
163+
/* blocked on Uri
164+
#[cfg_attr(feature = "rkyv", derive(rkyv::Archive, rkyv::Serialize, rkyv::Deserialize))]
165+
#[cfg_attr(feature = "rkyv_validation", derive(bytecheck::CheckBytes))]
166+
#[cfg_attr(feature = "serde_derive", derive(serde::Serialize, serde::Deserialize))]
167+
*/
163168
pub struct Hmc {
164169
inner: Uri,
165170
}

crates/sdk/src/api/rest.rs

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,13 @@ use serde::{Deserialize, Serialize};
77

88
/// Kind of a file.
99
#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord)]
10+
#[cfg_attr(
11+
feature = "rkyv",
12+
derive(rkyv::Archive, rkyv::Serialize, rkyv::Deserialize)
13+
)]
14+
#[cfg_attr(feature = "rkyv_validation", derive(bytecheck::CheckBytes))]
15+
#[cfg_attr(feature = "serde_derive", derive(serde::Serialize, serde::Deserialize))]
16+
#[repr(u8)]
1017
pub enum FileKind {
1118
/// An attachment file.
1219
Attachment,
@@ -16,6 +23,12 @@ pub enum FileKind {
1623

1724
/// A "file id", which can be a HMC URL, an external URL or a plain ID string.
1825
#[derive(Debug, Clone, Display, PartialEq, Eq, Hash)]
26+
/* blocked on Hmc
27+
#[cfg_attr(feature = "rkyv", derive(rkyv::Archive, rkyv::Serialize, rkyv::Deserialize))]
28+
#[cfg_attr(feature = "rkyv_validation", derive(bytecheck::CheckBytes))]
29+
#[cfg_attr(feature = "serde_derive", derive(serde::Serialize, serde::Deserialize))]
30+
#[repr(u8)]
31+
*/
1932
pub enum FileId {
2033
/// A HMC describing where the file is.
2134
Hmc(Hmc),
@@ -158,6 +171,11 @@ pub fn extract_file_info_from_download_response<'a>(
158171
/// Struct that implements `serde` `Deserialize` / `Serialize` and can be used for
159172
/// the [`/_harmony/about`](https://github.com/harmony-development/protocol/blob/main/stable/rest/rest.md#get-_harmonyabout) endpoint.
160173
#[derive(Debug, Clone, Hash, PartialEq, Eq, Deserialize, Serialize)]
174+
#[cfg_attr(
175+
feature = "rkyv",
176+
derive(rkyv::Archive, rkyv::Serialize, rkyv::Deserialize)
177+
)]
178+
#[cfg_attr(feature = "rkyv_validation", derive(bytecheck::CheckBytes))]
161179
pub struct About {
162180
/// the Harmony server software being hosted.
163181
#[serde(rename = "serverName")]

0 commit comments

Comments
 (0)