diff --git a/livekit-api/src/services/sip.rs b/livekit-api/src/services/sip.rs index d8a2b982..773afd53 100644 --- a/livekit-api/src/services/sip.rs +++ b/livekit-api/src/services/sip.rs @@ -257,7 +257,10 @@ impl SIPClient { .request( SVC, "ListSIPTrunk", - proto::ListSipTrunkRequest {}, + proto::ListSipTrunkRequest { + // TODO support these attributes + page: Default::default(), + }, self.base.auth_header( Default::default(), Some(SIPGrants { admin: true, ..Default::default() }), @@ -279,6 +282,7 @@ impl SIPClient { "ListSIPInboundTrunk", proto::ListSipInboundTrunkRequest { // TODO: support these attributes + page: Default::default(), trunk_ids: Default::default(), numbers: Default::default(), }, @@ -303,6 +307,7 @@ impl SIPClient { "ListSIPOutboundTrunk", proto::ListSipOutboundTrunkRequest { // TODO: support these attributes + page: Default::default(), trunk_ids: Default::default(), numbers: Default::default(), }, @@ -373,6 +378,7 @@ impl SIPClient { "ListSIPDispatchRule", proto::ListSipDispatchRuleRequest { // TODO: support these attributes + page: Default::default(), dispatch_rule_ids: Default::default(), trunk_ids: Default::default(), }, diff --git a/livekit-ffi/protocol/room.proto b/livekit-ffi/protocol/room.proto index 87ad8fb5..1333f6d5 100644 --- a/livekit-ffi/protocol/room.proto +++ b/livekit-ffi/protocol/room.proto @@ -552,9 +552,9 @@ message DataStream { } - // header properties specific to file or image streams - message FileHeader { - required string file_name = 1; // name of the file + // header properties specific to byte or file streams + message ByteHeader { + required string name = 1; } // main DataStream.Header that contains a oneof for specific headers @@ -564,12 +564,12 @@ message DataStream { required string mime_type = 3; required string topic = 4; optional uint64 total_length = 5; // only populated for finite streams, if it's a stream of unknown size this stays empty - map extensions = 6; // user defined extensions map that can carry additional info + map attributes = 6; // user defined attributes map that can carry additional info // oneof to choose between specific header types oneof content_header { TextHeader text_header = 7; - FileHeader file_header = 8; + ByteHeader byte_header = 8; } } @@ -584,7 +584,7 @@ message DataStream { message Trailer { required string stream_id = 1; // unique identifier for this data stream required string reason = 2; // reason why the stream was closed (could contain "error" / "interrupted" / empty for expected end) - map extensions = 3; // finalizing updates for the stream, can also include additional insights for errors or endTime for transcription + map attributes = 3; // finalizing updates for the stream, can also include additional insights for errors or endTime for transcription } } diff --git a/livekit-ffi/src/conversion/room.rs b/livekit-ffi/src/conversion/room.rs index adf1bfce..2662bf3b 100644 --- a/livekit-ffi/src/conversion/room.rs +++ b/livekit-ffi/src/conversion/room.rs @@ -302,9 +302,9 @@ impl From for proto::data_stream::Header }, )) } - Some(livekit_protocol::data_stream::header::ContentHeader::FileHeader(file_header)) => { - Some(proto::data_stream::header::ContentHeader::FileHeader( - proto::data_stream::FileHeader { file_name: file_header.file_name }, + Some(livekit_protocol::data_stream::header::ContentHeader::ByteHeader(byte_header)) => { + Some(proto::data_stream::header::ContentHeader::ByteHeader( + proto::data_stream::ByteHeader { name: byte_header.name }, )) } None => None, @@ -316,7 +316,7 @@ impl From for proto::data_stream::Header topic: msg.topic, mime_type: msg.mime_type, total_length: msg.total_length, - extensions: msg.extensions, + attributes: msg.attributes, content_header, } } @@ -336,9 +336,9 @@ impl From for livekit_protocol::data_stream::Header }, )) } - Some(proto::data_stream::header::ContentHeader::FileHeader(file_header)) => { - Some(livekit_protocol::data_stream::header::ContentHeader::FileHeader( - livekit_protocol::data_stream::FileHeader { file_name: file_header.file_name }, + Some(proto::data_stream::header::ContentHeader::ByteHeader(byte_header)) => { + Some(livekit_protocol::data_stream::header::ContentHeader::ByteHeader( + livekit_protocol::data_stream::ByteHeader { name: byte_header.name }, )) } None => None, @@ -350,7 +350,7 @@ impl From for livekit_protocol::data_stream::Header topic: msg.topic, mime_type: msg.mime_type, total_length: msg.total_length, - extensions: msg.extensions, + attributes: msg.attributes, content_header, encryption_type: 0, } @@ -383,12 +383,12 @@ impl From for livekit_protocol::data_stream::Chunk { impl From for proto::data_stream::Trailer { fn from(msg: livekit_protocol::data_stream::Trailer) -> Self { - Self { stream_id: msg.stream_id, reason: msg.reason, extensions: msg.extensions } + Self { stream_id: msg.stream_id, reason: msg.reason, attributes: msg.attributes } } } impl From for livekit_protocol::data_stream::Trailer { fn from(msg: proto::data_stream::Trailer) -> Self { - Self { stream_id: msg.stream_id, reason: msg.reason, extensions: msg.extensions } + Self { stream_id: msg.stream_id, reason: msg.reason, attributes: msg.attributes } } } diff --git a/livekit-ffi/src/livekit.proto.rs b/livekit-ffi/src/livekit.proto.rs index a10af08d..ec8a9d53 100644 --- a/livekit-ffi/src/livekit.proto.rs +++ b/livekit-ffi/src/livekit.proto.rs @@ -1,4 +1,5 @@ // @generated +// This file is @generated by prost-build. #[allow(clippy::derive_partial_eq_without_eq)] #[derive(Clone, PartialEq, ::prost::Message)] pub struct FrameCryptor { @@ -2007,6 +2008,8 @@ impl VideoRotation { } } } +/// Values of this enum must not be changed +/// It is used to serialize a rtc.VideoFrame on Python #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] #[repr(i32)] pub enum VideoBufferType { @@ -3011,13 +3014,12 @@ pub mod data_stream { #[prost(bool, optional, tag="5")] pub generated: ::core::option::Option, } - /// header properties specific to file or image streams + /// header properties specific to byte or file streams #[allow(clippy::derive_partial_eq_without_eq)] #[derive(Clone, PartialEq, ::prost::Message)] - pub struct FileHeader { - /// name of the file + pub struct ByteHeader { #[prost(string, required, tag="1")] - pub file_name: ::prost::alloc::string::String, + pub name: ::prost::alloc::string::String, } /// main DataStream.Header that contains a oneof for specific headers #[allow(clippy::derive_partial_eq_without_eq)] @@ -3036,9 +3038,9 @@ pub mod data_stream { /// only populated for finite streams, if it's a stream of unknown size this stays empty #[prost(uint64, optional, tag="5")] pub total_length: ::core::option::Option, - /// user defined extensions map that can carry additional info + /// user defined attributes map that can carry additional info #[prost(map="string, string", tag="6")] - pub extensions: ::std::collections::HashMap<::prost::alloc::string::String, ::prost::alloc::string::String>, + pub attributes: ::std::collections::HashMap<::prost::alloc::string::String, ::prost::alloc::string::String>, /// oneof to choose between specific header types #[prost(oneof="header::ContentHeader", tags="7, 8")] pub content_header: ::core::option::Option, @@ -3052,7 +3054,7 @@ pub mod data_stream { #[prost(message, tag="7")] TextHeader(super::TextHeader), #[prost(message, tag="8")] - FileHeader(super::FileHeader), + ByteHeader(super::ByteHeader), } } #[allow(clippy::derive_partial_eq_without_eq)] @@ -3084,7 +3086,7 @@ pub mod data_stream { pub reason: ::prost::alloc::string::String, /// finalizing updates for the stream, can also include additional insights for errors or endTime for transcription #[prost(map="string, string", tag="3")] - pub extensions: ::std::collections::HashMap<::prost::alloc::string::String, ::prost::alloc::string::String>, + pub attributes: ::std::collections::HashMap<::prost::alloc::string::String, ::prost::alloc::string::String>, } /// enum for operation types (specific to TextHeader) #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] diff --git a/livekit-protocol/protocol b/livekit-protocol/protocol index 553f87b8..afe463fe 160000 --- a/livekit-protocol/protocol +++ b/livekit-protocol/protocol @@ -1 +1 @@ -Subproject commit 553f87b849effe55777f80cb93766509868fe4f5 +Subproject commit afe463fe84852471ee403efba3c32451162cbffd diff --git a/livekit-protocol/src/livekit.rs b/livekit-protocol/src/livekit.rs index 73f358d0..9b6eaec8 100644 --- a/livekit-protocol/src/livekit.rs +++ b/livekit-protocol/src/livekit.rs @@ -192,6 +192,15 @@ impl MetricLabel { } #[allow(clippy::derive_partial_eq_without_eq)] #[derive(Clone, PartialEq, ::prost::Message)] +pub struct Pagination { + /// list entities which IDs are greater + #[prost(string, tag="1")] + pub after_id: ::prost::alloc::string::String, + #[prost(int32, tag="2")] + pub limit: i32, +} +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] pub struct Room { #[prost(string, tag="1")] pub sid: ::prost::alloc::string::String, @@ -1143,13 +1152,12 @@ pub mod data_stream { #[prost(bool, tag="5")] pub generated: bool, } - /// header properties specific to file or image streams + /// header properties specific to byte or file streams #[allow(clippy::derive_partial_eq_without_eq)] #[derive(Clone, PartialEq, ::prost::Message)] - pub struct FileHeader { - /// name of the file + pub struct ByteHeader { #[prost(string, tag="1")] - pub file_name: ::prost::alloc::string::String, + pub name: ::prost::alloc::string::String, } /// main DataStream.Header that contains a oneof for specific headers #[allow(clippy::derive_partial_eq_without_eq)] @@ -1171,9 +1179,9 @@ pub mod data_stream { /// defaults to NONE #[prost(enumeration="super::encryption::Type", tag="7")] pub encryption_type: i32, - /// user defined extensions map that can carry additional info + /// user defined attributes map that can carry additional info #[prost(map="string, string", tag="8")] - pub extensions: ::std::collections::HashMap<::prost::alloc::string::String, ::prost::alloc::string::String>, + pub attributes: ::std::collections::HashMap<::prost::alloc::string::String, ::prost::alloc::string::String>, /// oneof to choose between specific header types #[prost(oneof="header::ContentHeader", tags="9, 10")] pub content_header: ::core::option::Option, @@ -1187,7 +1195,7 @@ pub mod data_stream { #[prost(message, tag="9")] TextHeader(super::TextHeader), #[prost(message, tag="10")] - FileHeader(super::FileHeader), + ByteHeader(super::ByteHeader), } } #[allow(clippy::derive_partial_eq_without_eq)] @@ -1219,7 +1227,7 @@ pub mod data_stream { pub reason: ::prost::alloc::string::String, /// finalizing updates for the stream, can also include additional insights for errors or endTime for transcription #[prost(map="string, string", tag="3")] - pub extensions: ::std::collections::HashMap<::prost::alloc::string::String, ::prost::alloc::string::String>, + pub attributes: ::std::collections::HashMap<::prost::alloc::string::String, ::prost::alloc::string::String>, } /// enum for operation types (specific to TextHeader) #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] @@ -4785,6 +4793,8 @@ pub struct GetSipOutboundTrunkResponse { #[allow(clippy::derive_partial_eq_without_eq)] #[derive(Clone, PartialEq, ::prost::Message)] pub struct ListSipTrunkRequest { + #[prost(message, optional, tag="1")] + pub page: ::core::option::Option, } #[allow(clippy::derive_partial_eq_without_eq)] #[derive(Clone, PartialEq, ::prost::Message)] @@ -4796,6 +4806,8 @@ pub struct ListSipTrunkResponse { #[allow(clippy::derive_partial_eq_without_eq)] #[derive(Clone, PartialEq, ::prost::Message)] pub struct ListSipInboundTrunkRequest { + #[prost(message, optional, tag="3")] + pub page: ::core::option::Option, /// Trunk IDs to list. If this option is set, the response will contains trunks in the same order. /// If any of the trunks is missing, a nil item in that position will be sent in the response. #[prost(string, repeated, tag="1")] @@ -4814,6 +4826,8 @@ pub struct ListSipInboundTrunkResponse { #[allow(clippy::derive_partial_eq_without_eq)] #[derive(Clone, PartialEq, ::prost::Message)] pub struct ListSipOutboundTrunkRequest { + #[prost(message, optional, tag="3")] + pub page: ::core::option::Option, /// Trunk IDs to list. If this option is set, the response will contains trunks in the same order. /// If any of the trunks is missing, a nil item in that position will be sent in the response. #[prost(string, repeated, tag="1")] @@ -4966,6 +4980,8 @@ pub struct SipDispatchRuleInfo { #[allow(clippy::derive_partial_eq_without_eq)] #[derive(Clone, PartialEq, ::prost::Message)] pub struct ListSipDispatchRuleRequest { + #[prost(message, optional, tag="3")] + pub page: ::core::option::Option, /// Rule IDs to list. If this option is set, the response will contains rules in the same order. /// If any of the rules is missing, a nil item in that position will be sent in the response. #[prost(string, repeated, tag="1")] diff --git a/livekit-protocol/src/livekit.serde.rs b/livekit-protocol/src/livekit.serde.rs index ae08809a..b908afb0 100644 --- a/livekit-protocol/src/livekit.serde.rs +++ b/livekit-protocol/src/livekit.serde.rs @@ -5571,6 +5571,101 @@ impl<'de> serde::Deserialize<'de> for DataStream { deserializer.deserialize_struct("livekit.DataStream", FIELDS, GeneratedVisitor) } } +impl serde::Serialize for data_stream::ByteHeader { + #[allow(deprecated)] + fn serialize(&self, serializer: S) -> std::result::Result + where + S: serde::Serializer, + { + use serde::ser::SerializeStruct; + let mut len = 0; + if !self.name.is_empty() { + len += 1; + } + let mut struct_ser = serializer.serialize_struct("livekit.DataStream.ByteHeader", len)?; + if !self.name.is_empty() { + struct_ser.serialize_field("name", &self.name)?; + } + struct_ser.end() + } +} +impl<'de> serde::Deserialize<'de> for data_stream::ByteHeader { + #[allow(deprecated)] + fn deserialize(deserializer: D) -> std::result::Result + where + D: serde::Deserializer<'de>, + { + const FIELDS: &[&str] = &[ + "name", + ]; + + #[allow(clippy::enum_variant_names)] + enum GeneratedField { + Name, + __SkipField__, + } + impl<'de> serde::Deserialize<'de> for GeneratedField { + fn deserialize(deserializer: D) -> std::result::Result + where + D: serde::Deserializer<'de>, + { + struct GeneratedVisitor; + + impl<'de> serde::de::Visitor<'de> for GeneratedVisitor { + type Value = GeneratedField; + + fn expecting(&self, formatter: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + write!(formatter, "expected one of: {:?}", &FIELDS) + } + + #[allow(unused_variables)] + fn visit_str(self, value: &str) -> std::result::Result + where + E: serde::de::Error, + { + match value { + "name" => Ok(GeneratedField::Name), + _ => Ok(GeneratedField::__SkipField__), + } + } + } + deserializer.deserialize_identifier(GeneratedVisitor) + } + } + struct GeneratedVisitor; + impl<'de> serde::de::Visitor<'de> for GeneratedVisitor { + type Value = data_stream::ByteHeader; + + fn expecting(&self, formatter: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + formatter.write_str("struct livekit.DataStream.ByteHeader") + } + + fn visit_map(self, mut map_: V) -> std::result::Result + where + V: serde::de::MapAccess<'de>, + { + let mut name__ = None; + while let Some(k) = map_.next_key()? { + match k { + GeneratedField::Name => { + if name__.is_some() { + return Err(serde::de::Error::duplicate_field("name")); + } + name__ = Some(map_.next_value()?); + } + GeneratedField::__SkipField__ => { + let _ = map_.next_value::()?; + } + } + } + Ok(data_stream::ByteHeader { + name: name__.unwrap_or_default(), + }) + } + } + deserializer.deserialize_struct("livekit.DataStream.ByteHeader", FIELDS, GeneratedVisitor) + } +} impl serde::Serialize for data_stream::Chunk { #[allow(deprecated)] fn serialize(&self, serializer: S) -> std::result::Result @@ -5750,102 +5845,6 @@ impl<'de> serde::Deserialize<'de> for data_stream::Chunk { deserializer.deserialize_struct("livekit.DataStream.Chunk", FIELDS, GeneratedVisitor) } } -impl serde::Serialize for data_stream::FileHeader { - #[allow(deprecated)] - fn serialize(&self, serializer: S) -> std::result::Result - where - S: serde::Serializer, - { - use serde::ser::SerializeStruct; - let mut len = 0; - if !self.file_name.is_empty() { - len += 1; - } - let mut struct_ser = serializer.serialize_struct("livekit.DataStream.FileHeader", len)?; - if !self.file_name.is_empty() { - struct_ser.serialize_field("fileName", &self.file_name)?; - } - struct_ser.end() - } -} -impl<'de> serde::Deserialize<'de> for data_stream::FileHeader { - #[allow(deprecated)] - fn deserialize(deserializer: D) -> std::result::Result - where - D: serde::Deserializer<'de>, - { - const FIELDS: &[&str] = &[ - "file_name", - "fileName", - ]; - - #[allow(clippy::enum_variant_names)] - enum GeneratedField { - FileName, - __SkipField__, - } - impl<'de> serde::Deserialize<'de> for GeneratedField { - fn deserialize(deserializer: D) -> std::result::Result - where - D: serde::Deserializer<'de>, - { - struct GeneratedVisitor; - - impl<'de> serde::de::Visitor<'de> for GeneratedVisitor { - type Value = GeneratedField; - - fn expecting(&self, formatter: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - write!(formatter, "expected one of: {:?}", &FIELDS) - } - - #[allow(unused_variables)] - fn visit_str(self, value: &str) -> std::result::Result - where - E: serde::de::Error, - { - match value { - "fileName" | "file_name" => Ok(GeneratedField::FileName), - _ => Ok(GeneratedField::__SkipField__), - } - } - } - deserializer.deserialize_identifier(GeneratedVisitor) - } - } - struct GeneratedVisitor; - impl<'de> serde::de::Visitor<'de> for GeneratedVisitor { - type Value = data_stream::FileHeader; - - fn expecting(&self, formatter: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - formatter.write_str("struct livekit.DataStream.FileHeader") - } - - fn visit_map(self, mut map_: V) -> std::result::Result - where - V: serde::de::MapAccess<'de>, - { - let mut file_name__ = None; - while let Some(k) = map_.next_key()? { - match k { - GeneratedField::FileName => { - if file_name__.is_some() { - return Err(serde::de::Error::duplicate_field("fileName")); - } - file_name__ = Some(map_.next_value()?); - } - GeneratedField::__SkipField__ => { - let _ = map_.next_value::()?; - } - } - } - Ok(data_stream::FileHeader { - file_name: file_name__.unwrap_or_default(), - }) - } - } - deserializer.deserialize_struct("livekit.DataStream.FileHeader", FIELDS, GeneratedVisitor) - } -} impl serde::Serialize for data_stream::Header { #[allow(deprecated)] fn serialize(&self, serializer: S) -> std::result::Result @@ -5872,7 +5871,7 @@ impl serde::Serialize for data_stream::Header { if self.encryption_type != 0 { len += 1; } - if !self.extensions.is_empty() { + if !self.attributes.is_empty() { len += 1; } if self.content_header.is_some() { @@ -5903,16 +5902,16 @@ impl serde::Serialize for data_stream::Header { .map_err(|_| serde::ser::Error::custom(format!("Invalid variant {}", self.encryption_type)))?; struct_ser.serialize_field("encryptionType", &v)?; } - if !self.extensions.is_empty() { - struct_ser.serialize_field("extensions", &self.extensions)?; + if !self.attributes.is_empty() { + struct_ser.serialize_field("attributes", &self.attributes)?; } if let Some(v) = self.content_header.as_ref() { match v { data_stream::header::ContentHeader::TextHeader(v) => { struct_ser.serialize_field("textHeader", v)?; } - data_stream::header::ContentHeader::FileHeader(v) => { - struct_ser.serialize_field("fileHeader", v)?; + data_stream::header::ContentHeader::ByteHeader(v) => { + struct_ser.serialize_field("byteHeader", v)?; } } } @@ -5936,11 +5935,11 @@ impl<'de> serde::Deserialize<'de> for data_stream::Header { "totalLength", "encryption_type", "encryptionType", - "extensions", + "attributes", "text_header", "textHeader", - "file_header", - "fileHeader", + "byte_header", + "byteHeader", ]; #[allow(clippy::enum_variant_names)] @@ -5951,9 +5950,9 @@ impl<'de> serde::Deserialize<'de> for data_stream::Header { MimeType, TotalLength, EncryptionType, - Extensions, + Attributes, TextHeader, - FileHeader, + ByteHeader, __SkipField__, } impl<'de> serde::Deserialize<'de> for GeneratedField { @@ -5982,9 +5981,9 @@ impl<'de> serde::Deserialize<'de> for data_stream::Header { "mimeType" | "mime_type" => Ok(GeneratedField::MimeType), "totalLength" | "total_length" => Ok(GeneratedField::TotalLength), "encryptionType" | "encryption_type" => Ok(GeneratedField::EncryptionType), - "extensions" => Ok(GeneratedField::Extensions), + "attributes" => Ok(GeneratedField::Attributes), "textHeader" | "text_header" => Ok(GeneratedField::TextHeader), - "fileHeader" | "file_header" => Ok(GeneratedField::FileHeader), + "byteHeader" | "byte_header" => Ok(GeneratedField::ByteHeader), _ => Ok(GeneratedField::__SkipField__), } } @@ -6010,7 +6009,7 @@ impl<'de> serde::Deserialize<'de> for data_stream::Header { let mut mime_type__ = None; let mut total_length__ = None; let mut encryption_type__ = None; - let mut extensions__ = None; + let mut attributes__ = None; let mut content_header__ = None; while let Some(k) = map_.next_key()? { match k { @@ -6054,11 +6053,11 @@ impl<'de> serde::Deserialize<'de> for data_stream::Header { } encryption_type__ = Some(map_.next_value::()? as i32); } - GeneratedField::Extensions => { - if extensions__.is_some() { - return Err(serde::de::Error::duplicate_field("extensions")); + GeneratedField::Attributes => { + if attributes__.is_some() { + return Err(serde::de::Error::duplicate_field("attributes")); } - extensions__ = Some( + attributes__ = Some( map_.next_value::>()? ); } @@ -6069,11 +6068,11 @@ impl<'de> serde::Deserialize<'de> for data_stream::Header { content_header__ = map_.next_value::<::std::option::Option<_>>()?.map(data_stream::header::ContentHeader::TextHeader) ; } - GeneratedField::FileHeader => { + GeneratedField::ByteHeader => { if content_header__.is_some() { - return Err(serde::de::Error::duplicate_field("fileHeader")); + return Err(serde::de::Error::duplicate_field("byteHeader")); } - content_header__ = map_.next_value::<::std::option::Option<_>>()?.map(data_stream::header::ContentHeader::FileHeader) + content_header__ = map_.next_value::<::std::option::Option<_>>()?.map(data_stream::header::ContentHeader::ByteHeader) ; } GeneratedField::__SkipField__ => { @@ -6088,7 +6087,7 @@ impl<'de> serde::Deserialize<'de> for data_stream::Header { mime_type: mime_type__.unwrap_or_default(), total_length: total_length__, encryption_type: encryption_type__.unwrap_or_default(), - extensions: extensions__.unwrap_or_default(), + attributes: attributes__.unwrap_or_default(), content_header: content_header__, }) } @@ -6357,7 +6356,7 @@ impl serde::Serialize for data_stream::Trailer { if !self.reason.is_empty() { len += 1; } - if !self.extensions.is_empty() { + if !self.attributes.is_empty() { len += 1; } let mut struct_ser = serializer.serialize_struct("livekit.DataStream.Trailer", len)?; @@ -6367,8 +6366,8 @@ impl serde::Serialize for data_stream::Trailer { if !self.reason.is_empty() { struct_ser.serialize_field("reason", &self.reason)?; } - if !self.extensions.is_empty() { - struct_ser.serialize_field("extensions", &self.extensions)?; + if !self.attributes.is_empty() { + struct_ser.serialize_field("attributes", &self.attributes)?; } struct_ser.end() } @@ -6383,14 +6382,14 @@ impl<'de> serde::Deserialize<'de> for data_stream::Trailer { "stream_id", "streamId", "reason", - "extensions", + "attributes", ]; #[allow(clippy::enum_variant_names)] enum GeneratedField { StreamId, Reason, - Extensions, + Attributes, __SkipField__, } impl<'de> serde::Deserialize<'de> for GeneratedField { @@ -6415,7 +6414,7 @@ impl<'de> serde::Deserialize<'de> for data_stream::Trailer { match value { "streamId" | "stream_id" => Ok(GeneratedField::StreamId), "reason" => Ok(GeneratedField::Reason), - "extensions" => Ok(GeneratedField::Extensions), + "attributes" => Ok(GeneratedField::Attributes), _ => Ok(GeneratedField::__SkipField__), } } @@ -6437,7 +6436,7 @@ impl<'de> serde::Deserialize<'de> for data_stream::Trailer { { let mut stream_id__ = None; let mut reason__ = None; - let mut extensions__ = None; + let mut attributes__ = None; while let Some(k) = map_.next_key()? { match k { GeneratedField::StreamId => { @@ -6452,11 +6451,11 @@ impl<'de> serde::Deserialize<'de> for data_stream::Trailer { } reason__ = Some(map_.next_value()?); } - GeneratedField::Extensions => { - if extensions__.is_some() { - return Err(serde::de::Error::duplicate_field("extensions")); + GeneratedField::Attributes => { + if attributes__.is_some() { + return Err(serde::de::Error::duplicate_field("attributes")); } - extensions__ = Some( + attributes__ = Some( map_.next_value::>()? ); } @@ -6468,7 +6467,7 @@ impl<'de> serde::Deserialize<'de> for data_stream::Trailer { Ok(data_stream::Trailer { stream_id: stream_id__.unwrap_or_default(), reason: reason__.unwrap_or_default(), - extensions: extensions__.unwrap_or_default(), + attributes: attributes__.unwrap_or_default(), }) } } @@ -14883,6 +14882,9 @@ impl serde::Serialize for ListSipDispatchRuleRequest { { use serde::ser::SerializeStruct; let mut len = 0; + if self.page.is_some() { + len += 1; + } if !self.dispatch_rule_ids.is_empty() { len += 1; } @@ -14890,6 +14892,9 @@ impl serde::Serialize for ListSipDispatchRuleRequest { len += 1; } let mut struct_ser = serializer.serialize_struct("livekit.ListSIPDispatchRuleRequest", len)?; + if let Some(v) = self.page.as_ref() { + struct_ser.serialize_field("page", v)?; + } if !self.dispatch_rule_ids.is_empty() { struct_ser.serialize_field("dispatchRuleIds", &self.dispatch_rule_ids)?; } @@ -14906,6 +14911,7 @@ impl<'de> serde::Deserialize<'de> for ListSipDispatchRuleRequest { D: serde::Deserializer<'de>, { const FIELDS: &[&str] = &[ + "page", "dispatch_rule_ids", "dispatchRuleIds", "trunk_ids", @@ -14914,6 +14920,7 @@ impl<'de> serde::Deserialize<'de> for ListSipDispatchRuleRequest { #[allow(clippy::enum_variant_names)] enum GeneratedField { + Page, DispatchRuleIds, TrunkIds, __SkipField__, @@ -14938,6 +14945,7 @@ impl<'de> serde::Deserialize<'de> for ListSipDispatchRuleRequest { E: serde::de::Error, { match value { + "page" => Ok(GeneratedField::Page), "dispatchRuleIds" | "dispatch_rule_ids" => Ok(GeneratedField::DispatchRuleIds), "trunkIds" | "trunk_ids" => Ok(GeneratedField::TrunkIds), _ => Ok(GeneratedField::__SkipField__), @@ -14959,10 +14967,17 @@ impl<'de> serde::Deserialize<'de> for ListSipDispatchRuleRequest { where V: serde::de::MapAccess<'de>, { + let mut page__ = None; let mut dispatch_rule_ids__ = None; let mut trunk_ids__ = None; while let Some(k) = map_.next_key()? { match k { + GeneratedField::Page => { + if page__.is_some() { + return Err(serde::de::Error::duplicate_field("page")); + } + page__ = map_.next_value()?; + } GeneratedField::DispatchRuleIds => { if dispatch_rule_ids__.is_some() { return Err(serde::de::Error::duplicate_field("dispatchRuleIds")); @@ -14981,6 +14996,7 @@ impl<'de> serde::Deserialize<'de> for ListSipDispatchRuleRequest { } } Ok(ListSipDispatchRuleRequest { + page: page__, dispatch_rule_ids: dispatch_rule_ids__.unwrap_or_default(), trunk_ids: trunk_ids__.unwrap_or_default(), }) @@ -15092,6 +15108,9 @@ impl serde::Serialize for ListSipInboundTrunkRequest { { use serde::ser::SerializeStruct; let mut len = 0; + if self.page.is_some() { + len += 1; + } if !self.trunk_ids.is_empty() { len += 1; } @@ -15099,6 +15118,9 @@ impl serde::Serialize for ListSipInboundTrunkRequest { len += 1; } let mut struct_ser = serializer.serialize_struct("livekit.ListSIPInboundTrunkRequest", len)?; + if let Some(v) = self.page.as_ref() { + struct_ser.serialize_field("page", v)?; + } if !self.trunk_ids.is_empty() { struct_ser.serialize_field("trunkIds", &self.trunk_ids)?; } @@ -15115,6 +15137,7 @@ impl<'de> serde::Deserialize<'de> for ListSipInboundTrunkRequest { D: serde::Deserializer<'de>, { const FIELDS: &[&str] = &[ + "page", "trunk_ids", "trunkIds", "numbers", @@ -15122,6 +15145,7 @@ impl<'de> serde::Deserialize<'de> for ListSipInboundTrunkRequest { #[allow(clippy::enum_variant_names)] enum GeneratedField { + Page, TrunkIds, Numbers, __SkipField__, @@ -15146,6 +15170,7 @@ impl<'de> serde::Deserialize<'de> for ListSipInboundTrunkRequest { E: serde::de::Error, { match value { + "page" => Ok(GeneratedField::Page), "trunkIds" | "trunk_ids" => Ok(GeneratedField::TrunkIds), "numbers" => Ok(GeneratedField::Numbers), _ => Ok(GeneratedField::__SkipField__), @@ -15167,10 +15192,17 @@ impl<'de> serde::Deserialize<'de> for ListSipInboundTrunkRequest { where V: serde::de::MapAccess<'de>, { + let mut page__ = None; let mut trunk_ids__ = None; let mut numbers__ = None; while let Some(k) = map_.next_key()? { match k { + GeneratedField::Page => { + if page__.is_some() { + return Err(serde::de::Error::duplicate_field("page")); + } + page__ = map_.next_value()?; + } GeneratedField::TrunkIds => { if trunk_ids__.is_some() { return Err(serde::de::Error::duplicate_field("trunkIds")); @@ -15189,6 +15221,7 @@ impl<'de> serde::Deserialize<'de> for ListSipInboundTrunkRequest { } } Ok(ListSipInboundTrunkRequest { + page: page__, trunk_ids: trunk_ids__.unwrap_or_default(), numbers: numbers__.unwrap_or_default(), }) @@ -15300,6 +15333,9 @@ impl serde::Serialize for ListSipOutboundTrunkRequest { { use serde::ser::SerializeStruct; let mut len = 0; + if self.page.is_some() { + len += 1; + } if !self.trunk_ids.is_empty() { len += 1; } @@ -15307,6 +15343,9 @@ impl serde::Serialize for ListSipOutboundTrunkRequest { len += 1; } let mut struct_ser = serializer.serialize_struct("livekit.ListSIPOutboundTrunkRequest", len)?; + if let Some(v) = self.page.as_ref() { + struct_ser.serialize_field("page", v)?; + } if !self.trunk_ids.is_empty() { struct_ser.serialize_field("trunkIds", &self.trunk_ids)?; } @@ -15323,6 +15362,7 @@ impl<'de> serde::Deserialize<'de> for ListSipOutboundTrunkRequest { D: serde::Deserializer<'de>, { const FIELDS: &[&str] = &[ + "page", "trunk_ids", "trunkIds", "numbers", @@ -15330,6 +15370,7 @@ impl<'de> serde::Deserialize<'de> for ListSipOutboundTrunkRequest { #[allow(clippy::enum_variant_names)] enum GeneratedField { + Page, TrunkIds, Numbers, __SkipField__, @@ -15354,6 +15395,7 @@ impl<'de> serde::Deserialize<'de> for ListSipOutboundTrunkRequest { E: serde::de::Error, { match value { + "page" => Ok(GeneratedField::Page), "trunkIds" | "trunk_ids" => Ok(GeneratedField::TrunkIds), "numbers" => Ok(GeneratedField::Numbers), _ => Ok(GeneratedField::__SkipField__), @@ -15375,10 +15417,17 @@ impl<'de> serde::Deserialize<'de> for ListSipOutboundTrunkRequest { where V: serde::de::MapAccess<'de>, { + let mut page__ = None; let mut trunk_ids__ = None; let mut numbers__ = None; while let Some(k) = map_.next_key()? { match k { + GeneratedField::Page => { + if page__.is_some() { + return Err(serde::de::Error::duplicate_field("page")); + } + page__ = map_.next_value()?; + } GeneratedField::TrunkIds => { if trunk_ids__.is_some() { return Err(serde::de::Error::duplicate_field("trunkIds")); @@ -15397,6 +15446,7 @@ impl<'de> serde::Deserialize<'de> for ListSipOutboundTrunkRequest { } } Ok(ListSipOutboundTrunkRequest { + page: page__, trunk_ids: trunk_ids__.unwrap_or_default(), numbers: numbers__.unwrap_or_default(), }) @@ -15507,8 +15557,14 @@ impl serde::Serialize for ListSipTrunkRequest { S: serde::Serializer, { use serde::ser::SerializeStruct; - let len = 0; - let struct_ser = serializer.serialize_struct("livekit.ListSIPTrunkRequest", len)?; + let mut len = 0; + if self.page.is_some() { + len += 1; + } + let mut struct_ser = serializer.serialize_struct("livekit.ListSIPTrunkRequest", len)?; + if let Some(v) = self.page.as_ref() { + struct_ser.serialize_field("page", v)?; + } struct_ser.end() } } @@ -15519,10 +15575,12 @@ impl<'de> serde::Deserialize<'de> for ListSipTrunkRequest { D: serde::Deserializer<'de>, { const FIELDS: &[&str] = &[ + "page", ]; #[allow(clippy::enum_variant_names)] enum GeneratedField { + Page, __SkipField__, } impl<'de> serde::Deserialize<'de> for GeneratedField { @@ -15544,7 +15602,10 @@ impl<'de> serde::Deserialize<'de> for ListSipTrunkRequest { where E: serde::de::Error, { - Ok(GeneratedField::__SkipField__) + match value { + "page" => Ok(GeneratedField::Page), + _ => Ok(GeneratedField::__SkipField__), + } } } deserializer.deserialize_identifier(GeneratedVisitor) @@ -15562,10 +15623,22 @@ impl<'de> serde::Deserialize<'de> for ListSipTrunkRequest { where V: serde::de::MapAccess<'de>, { - while map_.next_key::()?.is_some() { - let _ = map_.next_value::()?; + let mut page__ = None; + while let Some(k) = map_.next_key()? { + match k { + GeneratedField::Page => { + if page__.is_some() { + return Err(serde::de::Error::duplicate_field("page")); + } + page__ = map_.next_value()?; + } + GeneratedField::__SkipField__ => { + let _ = map_.next_value::()?; + } + } } Ok(ListSipTrunkRequest { + page: page__, }) } } @@ -16553,6 +16626,121 @@ impl<'de> serde::Deserialize<'de> for MuteTrackRequest { deserializer.deserialize_struct("livekit.MuteTrackRequest", FIELDS, GeneratedVisitor) } } +impl serde::Serialize for Pagination { + #[allow(deprecated)] + fn serialize(&self, serializer: S) -> std::result::Result + where + S: serde::Serializer, + { + use serde::ser::SerializeStruct; + let mut len = 0; + if !self.after_id.is_empty() { + len += 1; + } + if self.limit != 0 { + len += 1; + } + let mut struct_ser = serializer.serialize_struct("livekit.Pagination", len)?; + if !self.after_id.is_empty() { + struct_ser.serialize_field("afterId", &self.after_id)?; + } + if self.limit != 0 { + struct_ser.serialize_field("limit", &self.limit)?; + } + struct_ser.end() + } +} +impl<'de> serde::Deserialize<'de> for Pagination { + #[allow(deprecated)] + fn deserialize(deserializer: D) -> std::result::Result + where + D: serde::Deserializer<'de>, + { + const FIELDS: &[&str] = &[ + "after_id", + "afterId", + "limit", + ]; + + #[allow(clippy::enum_variant_names)] + enum GeneratedField { + AfterId, + Limit, + __SkipField__, + } + impl<'de> serde::Deserialize<'de> for GeneratedField { + fn deserialize(deserializer: D) -> std::result::Result + where + D: serde::Deserializer<'de>, + { + struct GeneratedVisitor; + + impl<'de> serde::de::Visitor<'de> for GeneratedVisitor { + type Value = GeneratedField; + + fn expecting(&self, formatter: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + write!(formatter, "expected one of: {:?}", &FIELDS) + } + + #[allow(unused_variables)] + fn visit_str(self, value: &str) -> std::result::Result + where + E: serde::de::Error, + { + match value { + "afterId" | "after_id" => Ok(GeneratedField::AfterId), + "limit" => Ok(GeneratedField::Limit), + _ => Ok(GeneratedField::__SkipField__), + } + } + } + deserializer.deserialize_identifier(GeneratedVisitor) + } + } + struct GeneratedVisitor; + impl<'de> serde::de::Visitor<'de> for GeneratedVisitor { + type Value = Pagination; + + fn expecting(&self, formatter: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + formatter.write_str("struct livekit.Pagination") + } + + fn visit_map(self, mut map_: V) -> std::result::Result + where + V: serde::de::MapAccess<'de>, + { + let mut after_id__ = None; + let mut limit__ = None; + while let Some(k) = map_.next_key()? { + match k { + GeneratedField::AfterId => { + if after_id__.is_some() { + return Err(serde::de::Error::duplicate_field("afterId")); + } + after_id__ = Some(map_.next_value()?); + } + GeneratedField::Limit => { + if limit__.is_some() { + return Err(serde::de::Error::duplicate_field("limit")); + } + limit__ = + Some(map_.next_value::<::pbjson::private::NumberDeserialize<_>>()?.0) + ; + } + GeneratedField::__SkipField__ => { + let _ = map_.next_value::()?; + } + } + } + Ok(Pagination { + after_id: after_id__.unwrap_or_default(), + limit: limit__.unwrap_or_default(), + }) + } + } + deserializer.deserialize_struct("livekit.Pagination", FIELDS, GeneratedVisitor) + } +} impl serde::Serialize for ParticipantEgressRequest { #[allow(deprecated)] fn serialize(&self, serializer: S) -> std::result::Result