jacquard_api/place_stream/
segment.rs1#[jacquard_derive::lexicon]
9#[derive(
10 serde::Serialize,
11 serde::Deserialize,
12 Debug,
13 Clone,
14 PartialEq,
15 Eq,
16 jacquard_derive::IntoStatic,
17 bon::Builder
18)]
19#[serde(rename_all = "camelCase")]
20pub struct Audio<'a> {
21 pub channels: i64,
22 #[serde(borrow)]
23 #[builder(into)]
24 pub codec: jacquard_common::CowStr<'a>,
25 pub rate: i64,
26}
27
28#[jacquard_derive::lexicon]
29#[derive(
30 serde::Serialize,
31 serde::Deserialize,
32 Debug,
33 Clone,
34 PartialEq,
35 Eq,
36 jacquard_derive::IntoStatic,
37 bon::Builder
38)]
39#[serde(rename_all = "camelCase")]
40pub struct Framerate<'a> {
41 pub den: i64,
42 pub num: i64,
43}
44
45#[jacquard_derive::lexicon]
47#[derive(
48 serde::Serialize,
49 serde::Deserialize,
50 Debug,
51 Clone,
52 PartialEq,
53 Eq,
54 jacquard_derive::IntoStatic,
55 bon::Builder
56)]
57#[serde(rename_all = "camelCase")]
58pub struct Segment<'a> {
59 #[serde(skip_serializing_if = "std::option::Option::is_none")]
60 #[builder(into)]
61 #[serde(borrow)]
62 pub audio: Option<Vec<crate::place_stream::segment::Audio<'a>>>,
63 #[serde(borrow)]
64 pub creator: jacquard_common::types::string::Did<'a>,
65 #[serde(skip_serializing_if = "std::option::Option::is_none")]
67 #[builder(into)]
68 pub duration: Option<i64>,
69 #[serde(borrow)]
71 #[builder(into)]
72 pub id: jacquard_common::CowStr<'a>,
73 #[serde(borrow)]
75 #[builder(into)]
76 pub signing_key: jacquard_common::CowStr<'a>,
77 #[serde(skip_serializing_if = "std::option::Option::is_none")]
79 #[builder(into)]
80 pub size: Option<i64>,
81 pub start_time: jacquard_common::types::string::Datetime,
83 #[serde(skip_serializing_if = "std::option::Option::is_none")]
84 #[builder(into)]
85 #[serde(borrow)]
86 pub video: Option<Vec<crate::place_stream::segment::Video<'a>>>,
87}
88
89impl<'a> Segment<'a> {
90 pub fn uri(
91 uri: impl Into<jacquard_common::CowStr<'a>>,
92 ) -> Result<
93 jacquard_common::types::uri::RecordUri<'a, SegmentRecord>,
94 jacquard_common::types::uri::UriError,
95 > {
96 jacquard_common::types::uri::RecordUri::try_from_uri(
97 jacquard_common::types::string::AtUri::new_cow(uri.into())?,
98 )
99 }
100}
101
102#[derive(
104 serde::Serialize,
105 serde::Deserialize,
106 Debug,
107 Clone,
108 PartialEq,
109 Eq,
110 jacquard_derive::IntoStatic
111)]
112#[serde(rename_all = "camelCase")]
113pub struct SegmentGetRecordOutput<'a> {
114 #[serde(skip_serializing_if = "std::option::Option::is_none")]
115 #[serde(borrow)]
116 pub cid: std::option::Option<jacquard_common::types::string::Cid<'a>>,
117 #[serde(borrow)]
118 pub uri: jacquard_common::types::string::AtUri<'a>,
119 #[serde(borrow)]
120 pub value: Segment<'a>,
121}
122
123impl From<SegmentGetRecordOutput<'_>> for Segment<'_> {
124 fn from(output: SegmentGetRecordOutput<'_>) -> Self {
125 use jacquard_common::IntoStatic;
126 output.value.into_static()
127 }
128}
129
130impl jacquard_common::types::collection::Collection for Segment<'_> {
131 const NSID: &'static str = "place.stream.segment";
132 type Record = SegmentRecord;
133}
134
135#[derive(Debug, serde::Serialize, serde::Deserialize)]
137pub struct SegmentRecord;
138impl jacquard_common::xrpc::XrpcResp for SegmentRecord {
139 const NSID: &'static str = "place.stream.segment";
140 const ENCODING: &'static str = "application/json";
141 type Output<'de> = SegmentGetRecordOutput<'de>;
142 type Err<'de> = jacquard_common::types::collection::RecordError<'de>;
143}
144
145impl jacquard_common::types::collection::Collection for SegmentRecord {
146 const NSID: &'static str = "place.stream.segment";
147 type Record = SegmentRecord;
148}
149
150#[jacquard_derive::lexicon]
151#[derive(
152 serde::Serialize,
153 serde::Deserialize,
154 Debug,
155 Clone,
156 PartialEq,
157 Eq,
158 jacquard_derive::IntoStatic,
159 bon::Builder
160)]
161#[serde(rename_all = "camelCase")]
162pub struct SegmentView<'a> {
163 #[serde(borrow)]
164 pub cid: jacquard_common::types::string::Cid<'a>,
165 #[serde(borrow)]
166 pub record: jacquard_common::types::value::Data<'a>,
167}
168
169#[jacquard_derive::lexicon]
170#[derive(
171 serde::Serialize,
172 serde::Deserialize,
173 Debug,
174 Clone,
175 PartialEq,
176 Eq,
177 jacquard_derive::IntoStatic,
178 bon::Builder
179)]
180#[serde(rename_all = "camelCase")]
181pub struct Video<'a> {
182 #[serde(skip_serializing_if = "std::option::Option::is_none")]
183 #[builder(into)]
184 pub bframes: Option<bool>,
185 #[serde(borrow)]
186 #[builder(into)]
187 pub codec: jacquard_common::CowStr<'a>,
188 #[serde(skip_serializing_if = "std::option::Option::is_none")]
189 #[builder(into)]
190 #[serde(borrow)]
191 pub framerate: Option<crate::place_stream::segment::Framerate<'a>>,
192 pub height: i64,
193 pub width: i64,
194}