summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/helix/models.rs14
-rw-r--r--src/kraken/models.rs8
-rw-r--r--src/types.rs9
3 files changed, 20 insertions, 11 deletions
diff --git a/src/helix/models.rs b/src/helix/models.rs
index af221bc..e63a9f4 100644
--- a/src/helix/models.rs
+++ b/src/helix/models.rs
@@ -7,7 +7,7 @@ use crate::types::{UserId, VideoId, ChannelId};
use crate::client::PaginationTrait;
-#[derive(Debug, Deserialize)]
+#[derive(Debug, Deserialize, Serialize)]
pub struct DataContainer<T> {
pub data: Vec<T>
}
@@ -34,18 +34,18 @@ impl PaginationTrait for Credentials {
fn cursor<'a>(&'a self) -> Option<&'a str> { None }
}
-#[derive(Debug, Deserialize)]
+#[derive(Debug, Deserialize, Serialize)]
pub struct PaginationContainer<T> {
pub data: Vec<T>,
pub pagination: Option<Cursor>
}
-#[derive(Debug, Deserialize)]
+#[derive(Debug, Deserialize, Serialize)]
pub struct Cursor {
pub cursor: Option<String>
}
-#[derive(Debug, Deserialize)]
+#[derive(Debug, Deserialize, Serialize)]
pub struct Video {
pub id: VideoId<'static>,
pub user_id: UserId<'static>,
@@ -70,7 +70,7 @@ pub struct Video {
pub duration: String,
}
-#[derive(Debug, Deserialize)]
+#[derive(Debug, Deserialize, Serialize)]
pub struct User {
pub id: UserId<'static>,
pub login: String,
@@ -87,7 +87,7 @@ pub struct User {
pub email: Option<String>,
}
-#[derive(Debug, Deserialize)]
+#[derive(Debug, Deserialize, Serialize)]
pub struct Clip {
pub id: String,
#[serde(with = "url_serde")]
@@ -108,7 +108,7 @@ pub struct Clip {
pub view_count: i32,
}
-#[derive(Debug, Deserialize)]
+#[derive(Debug, Deserialize, Serialize)]
pub struct Credentials {
pub access_token: String,
pub refresh_token: Option<String>,
diff --git a/src/kraken/models.rs b/src/kraken/models.rs
index d6a6e4f..e8f2d6c 100644
--- a/src/kraken/models.rs
+++ b/src/kraken/models.rs
@@ -7,7 +7,7 @@ use chrono::{DateTime, Utc};
use super::types::{UserId, VideoId};
use crate::client::PaginationTrait;
-#[derive(Debug, Deserialize)]
+#[derive(Debug, Deserialize, Serialize)]
pub struct Clip {
pub slug: String,
pub tracking_id: String,
@@ -33,7 +33,7 @@ impl PaginationTrait for Clip {
}
-#[derive(Debug, Deserialize)]
+#[derive(Debug, Deserialize, Serialize)]
pub struct Thumbnails {
#[serde(with = "url_serde")]
pub medium: Url,
@@ -43,7 +43,7 @@ pub struct Thumbnails {
pub tiny: Url,
}
-#[derive(Debug, Deserialize)]
+#[derive(Debug, Deserialize, Serialize)]
pub struct UserData {
pub id: UserId<'static>,
pub name: String,
@@ -53,7 +53,7 @@ pub struct UserData {
pub logo: String,
}
-#[derive(Debug, Deserialize)]
+#[derive(Debug, Deserialize, Serialize)]
pub struct Vod {
pub id: VideoId<'static>,
#[serde(with = "url_serde")]
diff --git a/src/types.rs b/src/types.rs
index eb97e28..89375bb 100644
--- a/src/types.rs
+++ b/src/types.rs
@@ -121,6 +121,15 @@ impl<'de, T> Deserialize<'de> for IntegerId<'static, T> {
}
}
+use serde::{Serialize, Serializer};
+impl<'a, T> Serialize for IntegerId<'a, T> {
+ fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
+ where
+ S: Serializer,
+ {
+ serializer.serialize_str(&self.id)
+ }
+}
pub struct Id {
inner: String