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)]
18#[serde(rename_all = "camelCase")]
19pub struct Audio<'a> {
20 pub channels: i64,
21 #[serde(borrow)]
22 pub codec: jacquard_common::CowStr<'a>,
23 pub rate: i64,
24}
25
26#[jacquard_derive::lexicon]
27#[derive(
28 serde::Serialize,
29 serde::Deserialize,
30 Debug,
31 Clone,
32 PartialEq,
33 Eq,
34 jacquard_derive::IntoStatic
35)]
36#[serde(rename_all = "camelCase")]
37pub struct Framerate<'a> {
38 pub den: i64,
39 pub num: i64,
40}
41
42#[jacquard_derive::lexicon]
44#[derive(
45 serde::Serialize,
46 serde::Deserialize,
47 Debug,
48 Clone,
49 PartialEq,
50 Eq,
51 jacquard_derive::IntoStatic
52)]
53#[serde(rename_all = "camelCase")]
54pub struct Segment<'a> {
55 #[serde(skip_serializing_if = "std::option::Option::is_none")]
56 #[serde(borrow)]
57 pub audio: std::option::Option<Vec<crate::place_stream::segment::Audio<'a>>>,
58 #[serde(borrow)]
59 pub creator: jacquard_common::types::string::Did<'a>,
60 #[serde(skip_serializing_if = "std::option::Option::is_none")]
62 pub duration: std::option::Option<i64>,
63 #[serde(borrow)]
65 pub id: jacquard_common::CowStr<'a>,
66 #[serde(borrow)]
68 pub signing_key: jacquard_common::CowStr<'a>,
69 #[serde(skip_serializing_if = "std::option::Option::is_none")]
71 pub size: std::option::Option<i64>,
72 pub start_time: jacquard_common::types::string::Datetime,
74 #[serde(skip_serializing_if = "std::option::Option::is_none")]
75 #[serde(borrow)]
76 pub video: std::option::Option<Vec<crate::place_stream::segment::Video<'a>>>,
77}
78
79#[derive(
81 serde::Serialize,
82 serde::Deserialize,
83 Debug,
84 Clone,
85 PartialEq,
86 Eq,
87 jacquard_derive::IntoStatic
88)]
89#[serde(rename_all = "camelCase")]
90pub struct SegmentGetRecordOutput<'a> {
91 #[serde(skip_serializing_if = "std::option::Option::is_none")]
92 #[serde(borrow)]
93 pub cid: std::option::Option<jacquard_common::types::string::Cid<'a>>,
94 #[serde(borrow)]
95 pub uri: jacquard_common::types::string::AtUri<'a>,
96 #[serde(borrow)]
97 pub value: Segment<'a>,
98}
99
100pub struct SegmentRecord;
102impl jacquard_common::xrpc::XrpcResp for SegmentRecord {
103 const NSID: &'static str = "place.stream.segment";
104 const ENCODING: &'static str = "application/json";
105 type Output<'de> = SegmentGetRecordOutput<'de>;
106 type Err<'de> = jacquard_common::types::collection::RecordError<'de>;
107}
108
109impl jacquard_common::types::collection::Collection for Segment<'_> {
110 const NSID: &'static str = "place.stream.segment";
111 type Record = SegmentRecord;
112}
113
114impl From<SegmentGetRecordOutput<'_>> for Segment<'_> {
115 fn from(output: SegmentGetRecordOutput<'_>) -> Self {
116 use jacquard_common::IntoStatic;
117 output.value.into_static()
118 }
119}
120
121#[jacquard_derive::lexicon]
122#[derive(
123 serde::Serialize,
124 serde::Deserialize,
125 Debug,
126 Clone,
127 PartialEq,
128 Eq,
129 jacquard_derive::IntoStatic
130)]
131#[serde(rename_all = "camelCase")]
132pub struct SegmentView<'a> {
133 #[serde(borrow)]
134 pub cid: jacquard_common::types::string::Cid<'a>,
135 #[serde(borrow)]
136 pub record: jacquard_common::types::value::Data<'a>,
137}
138
139#[jacquard_derive::lexicon]
140#[derive(
141 serde::Serialize,
142 serde::Deserialize,
143 Debug,
144 Clone,
145 PartialEq,
146 Eq,
147 jacquard_derive::IntoStatic
148)]
149#[serde(rename_all = "camelCase")]
150pub struct Video<'a> {
151 #[serde(skip_serializing_if = "std::option::Option::is_none")]
152 pub bframes: std::option::Option<bool>,
153 #[serde(borrow)]
154 pub codec: jacquard_common::CowStr<'a>,
155 #[serde(skip_serializing_if = "std::option::Option::is_none")]
156 #[serde(borrow)]
157 pub framerate: std::option::Option<crate::place_stream::segment::Framerate<'a>>,
158 pub height: i64,
159 pub width: i64,
160}