Skip to main content

nominal_api_proto/proto/
nominal.videos.v1.rs

1// This file is @generated by prost-build.
2#[derive(Clone, PartialEq, ::prost::Message)]
3pub struct Segment {
4    #[prost(string, tag = "1")]
5    pub rid: ::prost::alloc::string::String,
6    #[prost(string, optional, tag = "2")]
7    pub video_rid: ::core::option::Option<::prost::alloc::string::String>,
8    #[prost(string, optional, tag = "3")]
9    pub dataset_file_id: ::core::option::Option<::prost::alloc::string::String>,
10    #[prost(message, optional, tag = "4")]
11    pub data_handle: ::core::option::Option<super::super::types::Handle>,
12    #[prost(double, tag = "5")]
13    pub frame_rate: f64,
14    #[prost(double, tag = "6")]
15    pub duration_seconds: f64,
16    #[prost(message, optional, tag = "7")]
17    pub frame_timestamps: ::core::option::Option<FrameTimestamps>,
18    #[prost(message, optional, tag = "8")]
19    pub end_timestamp: ::core::option::Option<
20        super::super::super::google::protobuf::Timestamp,
21    >,
22}
23#[derive(Clone, PartialEq, ::prost::Message)]
24pub struct FrameTimestamps {
25    #[prost(double, repeated, packed = "false", tag = "1")]
26    pub media_timestamps_seconds: ::prost::alloc::vec::Vec<f64>,
27    #[prost(message, repeated, tag = "2")]
28    pub absolute_timestamps: ::prost::alloc::vec::Vec<
29        super::super::super::google::protobuf::Timestamp,
30    >,
31}
32#[derive(Clone, PartialEq, ::prost::Message)]
33pub struct SegmentTimeRange {
34    #[prost(message, optional, tag = "1")]
35    pub absolute_start_time: ::core::option::Option<
36        super::super::super::google::protobuf::Timestamp,
37    >,
38    #[prost(message, optional, tag = "2")]
39    pub absolute_end_time: ::core::option::Option<
40        super::super::super::google::protobuf::Timestamp,
41    >,
42    #[prost(double, tag = "3")]
43    pub media_start_seconds: f64,
44    #[prost(double, tag = "4")]
45    pub media_end_seconds: f64,
46    #[prost(string, optional, tag = "5")]
47    pub dataset_file_id: ::core::option::Option<::prost::alloc::string::String>,
48}
49#[derive(Clone, Copy, PartialEq, ::prost::Message)]
50pub struct TimeBounds {
51    #[prost(message, optional, tag = "1")]
52    pub start: ::core::option::Option<super::super::super::google::protobuf::Timestamp>,
53    #[prost(message, optional, tag = "2")]
54    pub end: ::core::option::Option<super::super::super::google::protobuf::Timestamp>,
55}
56#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
57#[repr(i32)]
58pub enum VideoError {
59    InvalidRequest = 0,
60}
61impl VideoError {
62    /// String value of the enum field names used in the ProtoBuf definition.
63    ///
64    /// The values are not transformed in any way and thus are considered stable
65    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
66    pub fn as_str_name(&self) -> &'static str {
67        match self {
68            Self::InvalidRequest => "VIDEO_ERROR_INVALID_REQUEST",
69        }
70    }
71    /// Creates an enum from field names used in the ProtoBuf definition.
72    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
73        match value {
74            "VIDEO_ERROR_INVALID_REQUEST" => Some(Self::InvalidRequest),
75            _ => None,
76        }
77    }
78}
79#[derive(Clone, PartialEq, ::prost::Message)]
80pub struct ListVideoFileSegmentTimeRangesRequest {
81    #[prost(string, tag = "1")]
82    pub video_file_rid: ::prost::alloc::string::String,
83    #[prost(int32, optional, tag = "2")]
84    pub page_size: ::core::option::Option<i32>,
85    #[prost(string, tag = "3")]
86    pub page_token: ::prost::alloc::string::String,
87}
88#[derive(Clone, PartialEq, ::prost::Message)]
89pub struct ListVideoFileSegmentTimeRangesResponse {
90    #[prost(message, repeated, tag = "1")]
91    pub segment_time_ranges: ::prost::alloc::vec::Vec<SegmentTimeRange>,
92    #[prost(string, tag = "2")]
93    pub next_page_token: ::prost::alloc::string::String,
94}
95/// Generated client implementations.
96pub mod video_file_service_client {
97    #![allow(
98        unused_variables,
99        dead_code,
100        missing_docs,
101        clippy::wildcard_imports,
102        clippy::let_unit_value,
103    )]
104    use tonic::codegen::*;
105    use tonic::codegen::http::Uri;
106    #[derive(Debug, Clone)]
107    pub struct VideoFileServiceClient<T> {
108        inner: tonic::client::Grpc<T>,
109    }
110    impl VideoFileServiceClient<tonic::transport::Channel> {
111        /// Attempt to create a new client by connecting to a given endpoint.
112        pub async fn connect<D>(dst: D) -> Result<Self, tonic::transport::Error>
113        where
114            D: TryInto<tonic::transport::Endpoint>,
115            D::Error: Into<StdError>,
116        {
117            let conn = tonic::transport::Endpoint::new(dst)?.connect().await?;
118            Ok(Self::new(conn))
119        }
120    }
121    impl<T> VideoFileServiceClient<T>
122    where
123        T: tonic::client::GrpcService<tonic::body::Body>,
124        T::Error: Into<StdError>,
125        T::ResponseBody: Body<Data = Bytes> + std::marker::Send + 'static,
126        <T::ResponseBody as Body>::Error: Into<StdError> + std::marker::Send,
127    {
128        pub fn new(inner: T) -> Self {
129            let inner = tonic::client::Grpc::new(inner);
130            Self { inner }
131        }
132        pub fn with_origin(inner: T, origin: Uri) -> Self {
133            let inner = tonic::client::Grpc::with_origin(inner, origin);
134            Self { inner }
135        }
136        pub fn with_interceptor<F>(
137            inner: T,
138            interceptor: F,
139        ) -> VideoFileServiceClient<InterceptedService<T, F>>
140        where
141            F: tonic::service::Interceptor,
142            T::ResponseBody: Default,
143            T: tonic::codegen::Service<
144                http::Request<tonic::body::Body>,
145                Response = http::Response<
146                    <T as tonic::client::GrpcService<tonic::body::Body>>::ResponseBody,
147                >,
148            >,
149            <T as tonic::codegen::Service<
150                http::Request<tonic::body::Body>,
151            >>::Error: Into<StdError> + std::marker::Send + std::marker::Sync,
152        {
153            VideoFileServiceClient::new(InterceptedService::new(inner, interceptor))
154        }
155        /// Compress requests with the given encoding.
156        ///
157        /// This requires the server to support it otherwise it might respond with an
158        /// error.
159        #[must_use]
160        pub fn send_compressed(mut self, encoding: CompressionEncoding) -> Self {
161            self.inner = self.inner.send_compressed(encoding);
162            self
163        }
164        /// Enable decompressing responses.
165        #[must_use]
166        pub fn accept_compressed(mut self, encoding: CompressionEncoding) -> Self {
167            self.inner = self.inner.accept_compressed(encoding);
168            self
169        }
170        /// Limits the maximum size of a decoded message.
171        ///
172        /// Default: `4MB`
173        #[must_use]
174        pub fn max_decoding_message_size(mut self, limit: usize) -> Self {
175            self.inner = self.inner.max_decoding_message_size(limit);
176            self
177        }
178        /// Limits the maximum size of an encoded message.
179        ///
180        /// Default: `usize::MAX`
181        #[must_use]
182        pub fn max_encoding_message_size(mut self, limit: usize) -> Self {
183            self.inner = self.inner.max_encoding_message_size(limit);
184            self
185        }
186        pub async fn list_video_file_segment_time_ranges(
187            &mut self,
188            request: impl tonic::IntoRequest<
189                super::ListVideoFileSegmentTimeRangesRequest,
190            >,
191        ) -> std::result::Result<
192            tonic::Response<super::ListVideoFileSegmentTimeRangesResponse>,
193            tonic::Status,
194        > {
195            self.inner
196                .ready()
197                .await
198                .map_err(|e| {
199                    tonic::Status::unknown(
200                        format!("Service was not ready: {}", e.into()),
201                    )
202                })?;
203            let codec = tonic::codec::ProstCodec::default();
204            let path = http::uri::PathAndQuery::from_static(
205                "/nominal.videos.v1.VideoFileService/ListVideoFileSegmentTimeRanges",
206            );
207            let mut req = request.into_request();
208            req.extensions_mut()
209                .insert(
210                    GrpcMethod::new(
211                        "nominal.videos.v1.VideoFileService",
212                        "ListVideoFileSegmentTimeRanges",
213                    ),
214                );
215            self.inner.unary(req, path, codec).await
216        }
217    }
218}
219#[derive(Clone, PartialEq, ::prost::Message)]
220pub struct VideoChannelSeries {
221    #[prost(oneof = "video_channel_series::Series", tags = "1, 2")]
222    pub series: ::core::option::Option<video_channel_series::Series>,
223}
224/// Nested message and enum types in `VideoChannelSeries`.
225pub mod video_channel_series {
226    #[derive(Clone, PartialEq, ::prost::Oneof)]
227    pub enum Series {
228        #[prost(message, tag = "1")]
229        DataSourceChannel(super::VideoDataSourceChannel),
230        #[prost(message, tag = "2")]
231        AssetChannel(super::VideoAssetChannel),
232    }
233}
234#[derive(Clone, PartialEq, ::prost::Message)]
235pub struct VideoDataSourceChannel {
236    #[prost(string, tag = "1")]
237    pub data_source_rid: ::prost::alloc::string::String,
238    #[prost(string, tag = "2")]
239    pub channel: ::prost::alloc::string::String,
240    #[prost(map = "string, string", tag = "3")]
241    pub tags: ::std::collections::HashMap<
242        ::prost::alloc::string::String,
243        ::prost::alloc::string::String,
244    >,
245}
246#[derive(Clone, PartialEq, ::prost::Message)]
247pub struct VideoAssetChannel {
248    #[prost(string, tag = "1")]
249    pub asset_rid: ::prost::alloc::string::String,
250    #[prost(string, tag = "2")]
251    pub data_scope_name: ::prost::alloc::string::String,
252    #[prost(string, tag = "3")]
253    pub channel: ::prost::alloc::string::String,
254    #[prost(map = "string, string", tag = "4")]
255    pub tags: ::std::collections::HashMap<
256        ::prost::alloc::string::String,
257        ::prost::alloc::string::String,
258    >,
259}
260#[derive(Clone, Copy, PartialEq, ::prost::Message)]
261pub struct VideoChannelSegmentsMetadata {
262    #[prost(int32, tag = "1")]
263    pub frame_count: i32,
264    #[prost(int32, tag = "2")]
265    pub segment_count: i32,
266    #[prost(message, optional, tag = "3")]
267    pub min_absolute_timestamp: ::core::option::Option<
268        super::super::super::google::protobuf::Timestamp,
269    >,
270    #[prost(message, optional, tag = "4")]
271    pub max_absolute_timestamp: ::core::option::Option<
272        super::super::super::google::protobuf::Timestamp,
273    >,
274    #[prost(double, tag = "5")]
275    pub media_duration_seconds: f64,
276    #[prost(double, tag = "6")]
277    pub media_frame_rate: f64,
278}
279#[derive(Clone, PartialEq, ::prost::Message)]
280pub struct VideoChannelDatasetFile {
281    #[prost(string, tag = "1")]
282    pub dataset_file_id: ::prost::alloc::string::String,
283    #[prost(message, optional, tag = "2")]
284    pub start: ::core::option::Option<super::super::super::google::protobuf::Timestamp>,
285    #[prost(message, optional, tag = "3")]
286    pub end: ::core::option::Option<super::super::super::google::protobuf::Timestamp>,
287}
288#[derive(Clone, PartialEq, ::prost::Message)]
289pub struct VideoChannelDatasetFileUpdate {
290    #[prost(string, tag = "1")]
291    pub dataset_file_id: ::prost::alloc::string::String,
292    #[prost(message, optional, tag = "2")]
293    pub start: ::core::option::Option<super::super::super::google::protobuf::Timestamp>,
294    #[prost(string, optional, tag = "3")]
295    pub name: ::core::option::Option<::prost::alloc::string::String>,
296    #[prost(message, optional, tag = "4")]
297    pub scale_parameter: ::core::option::Option<
298        super::super::ingest::v2::ScaleParameter,
299    >,
300}
301#[derive(Clone, PartialEq, ::prost::Message)]
302pub struct IceServer {
303    #[prost(string, repeated, tag = "1")]
304    pub urls: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
305    #[prost(string, optional, tag = "2")]
306    pub username: ::core::option::Option<::prost::alloc::string::String>,
307    #[prost(string, optional, tag = "3")]
308    pub credential: ::core::option::Option<::prost::alloc::string::String>,
309}
310#[derive(Clone, PartialEq, ::prost::Message)]
311pub struct WhipPublishEndpoint {
312    #[prost(string, tag = "1")]
313    pub stream_id: ::prost::alloc::string::String,
314    #[prost(string, tag = "2")]
315    pub whip_url: ::prost::alloc::string::String,
316    #[prost(message, repeated, tag = "3")]
317    pub ice_servers: ::prost::alloc::vec::Vec<IceServer>,
318}
319#[derive(Clone, PartialEq, ::prost::Message)]
320pub struct WhepPlaybackEndpoint {
321    #[prost(string, tag = "1")]
322    pub whep_url: ::prost::alloc::string::String,
323    #[prost(message, repeated, tag = "2")]
324    pub ice_servers: ::prost::alloc::vec::Vec<IceServer>,
325    #[prost(string, tag = "3")]
326    pub playback_token: ::prost::alloc::string::String,
327}
328#[derive(Clone, PartialEq, ::prost::Message)]
329pub struct VideoStream {
330    #[prost(string, tag = "1")]
331    pub stream_id: ::prost::alloc::string::String,
332    #[prost(string, optional, tag = "2")]
333    pub video_rid: ::core::option::Option<::prost::alloc::string::String>,
334    #[prost(enumeration = "VideoStreamStatus", tag = "3")]
335    pub status: i32,
336    #[prost(message, optional, tag = "4")]
337    pub start: ::core::option::Option<super::super::super::google::protobuf::Timestamp>,
338    #[prost(message, optional, tag = "5")]
339    pub end: ::core::option::Option<super::super::super::google::protobuf::Timestamp>,
340    #[prost(message, optional, tag = "6")]
341    pub created_at: ::core::option::Option<
342        super::super::super::google::protobuf::Timestamp,
343    >,
344    #[prost(message, optional, tag = "7")]
345    pub updated_at: ::core::option::Option<
346        super::super::super::google::protobuf::Timestamp,
347    >,
348}
349#[derive(Clone, PartialEq, ::prost::Message)]
350pub struct ListChannelSegmentTimeRangesRequest {
351    #[prost(message, optional, tag = "1")]
352    pub channel_series: ::core::option::Option<VideoChannelSeries>,
353    #[prost(message, optional, tag = "2")]
354    pub bounds: ::core::option::Option<TimeBounds>,
355    #[prost(int32, optional, tag = "3")]
356    pub page_size: ::core::option::Option<i32>,
357    #[prost(string, tag = "4")]
358    pub page_token: ::prost::alloc::string::String,
359}
360#[derive(Clone, PartialEq, ::prost::Message)]
361pub struct ListChannelSegmentTimeRangesResponse {
362    #[prost(message, repeated, tag = "1")]
363    pub segment_time_ranges: ::prost::alloc::vec::Vec<SegmentTimeRange>,
364    #[prost(string, tag = "2")]
365    pub next_page_token: ::prost::alloc::string::String,
366}
367#[derive(Clone, PartialEq, ::prost::Message)]
368pub struct GetChannelSegmentsMetadataRequest {
369    #[prost(message, optional, tag = "1")]
370    pub channel_series: ::core::option::Option<VideoChannelSeries>,
371    #[prost(message, optional, tag = "2")]
372    pub bounds: ::core::option::Option<TimeBounds>,
373}
374#[derive(Clone, Copy, PartialEq, ::prost::Message)]
375pub struct GetChannelSegmentsMetadataResponse {
376    #[prost(message, optional, tag = "1")]
377    pub segments_metadata: ::core::option::Option<VideoChannelSegmentsMetadata>,
378}
379#[derive(Clone, PartialEq, ::prost::Message)]
380pub struct GetChannelSegmentByTimestampRequest {
381    #[prost(message, optional, tag = "1")]
382    pub channel_series: ::core::option::Option<VideoChannelSeries>,
383    #[prost(message, optional, tag = "2")]
384    pub timestamp: ::core::option::Option<
385        super::super::super::google::protobuf::Timestamp,
386    >,
387    #[prost(message, optional, tag = "3")]
388    pub view_range_start: ::core::option::Option<
389        super::super::super::google::protobuf::Timestamp,
390    >,
391}
392#[derive(Clone, PartialEq, ::prost::Message)]
393pub struct GetChannelSegmentByTimestampResponse {
394    #[prost(message, optional, tag = "1")]
395    pub segment: ::core::option::Option<Segment>,
396}
397#[derive(Clone, PartialEq, ::prost::Message)]
398pub struct GetChannelSegmentAtOrAfterTimestampRequest {
399    #[prost(message, optional, tag = "1")]
400    pub channel_series: ::core::option::Option<VideoChannelSeries>,
401    #[prost(message, optional, tag = "2")]
402    pub timestamp: ::core::option::Option<
403        super::super::super::google::protobuf::Timestamp,
404    >,
405}
406#[derive(Clone, PartialEq, ::prost::Message)]
407pub struct GetChannelSegmentAtOrAfterTimestampResponse {
408    #[prost(message, optional, tag = "1")]
409    pub segment: ::core::option::Option<Segment>,
410}
411#[derive(Clone, PartialEq, ::prost::Message)]
412pub struct StartChannelStreamRequest {
413    #[prost(message, optional, tag = "1")]
414    pub channel_series: ::core::option::Option<VideoChannelSeries>,
415}
416#[derive(Clone, PartialEq, ::prost::Message)]
417pub struct StartChannelStreamResponse {
418    #[prost(message, optional, tag = "1")]
419    pub stream: ::core::option::Option<VideoStream>,
420    #[prost(message, optional, tag = "2")]
421    pub publish_endpoint: ::core::option::Option<WhipPublishEndpoint>,
422}
423#[derive(Clone, PartialEq, ::prost::Message)]
424pub struct GetChannelStreamPlaybackRequest {
425    #[prost(message, optional, tag = "1")]
426    pub channel_series: ::core::option::Option<VideoChannelSeries>,
427}
428#[derive(Clone, PartialEq, ::prost::Message)]
429pub struct GetChannelStreamPlaybackResponse {
430    #[prost(message, optional, tag = "1")]
431    pub playback_endpoint: ::core::option::Option<WhepPlaybackEndpoint>,
432}
433#[derive(Clone, PartialEq, ::prost::Message)]
434pub struct GetVideoStreamRequest {
435    #[prost(string, tag = "1")]
436    pub video_rid: ::prost::alloc::string::String,
437    #[prost(string, tag = "2")]
438    pub stream_id: ::prost::alloc::string::String,
439}
440#[derive(Clone, PartialEq, ::prost::Message)]
441pub struct GetVideoStreamResponse {
442    #[prost(message, optional, tag = "1")]
443    pub stream: ::core::option::Option<VideoStream>,
444}
445#[derive(Clone, PartialEq, ::prost::Message)]
446pub struct ListChannelStreamsRequest {
447    #[prost(message, optional, tag = "1")]
448    pub channel_series: ::core::option::Option<VideoChannelSeries>,
449    #[prost(message, optional, tag = "2")]
450    pub bounds: ::core::option::Option<TimeBounds>,
451    #[prost(int32, optional, tag = "3")]
452    pub page_size: ::core::option::Option<i32>,
453    #[prost(string, tag = "4")]
454    pub page_token: ::prost::alloc::string::String,
455}
456#[derive(Clone, PartialEq, ::prost::Message)]
457pub struct ListChannelStreamsResponse {
458    #[prost(message, repeated, tag = "1")]
459    pub streams: ::prost::alloc::vec::Vec<VideoStream>,
460    #[prost(string, tag = "2")]
461    pub next_page_token: ::prost::alloc::string::String,
462}
463#[derive(Clone, PartialEq, ::prost::Message)]
464pub struct ListChannelDatasetFilesRequest {
465    #[prost(message, optional, tag = "1")]
466    pub channel_series: ::core::option::Option<VideoChannelSeries>,
467    #[prost(message, optional, tag = "2")]
468    pub bounds: ::core::option::Option<TimeBounds>,
469    #[prost(int32, optional, tag = "3")]
470    pub page_size: ::core::option::Option<i32>,
471    #[prost(string, tag = "4")]
472    pub page_token: ::prost::alloc::string::String,
473}
474#[derive(Clone, PartialEq, ::prost::Message)]
475pub struct ListChannelDatasetFilesResponse {
476    #[prost(message, repeated, tag = "1")]
477    pub dataset_files: ::prost::alloc::vec::Vec<VideoChannelDatasetFile>,
478    #[prost(string, tag = "2")]
479    pub next_page_token: ::prost::alloc::string::String,
480}
481#[derive(Clone, PartialEq, ::prost::Message)]
482pub struct BatchUpdateChannelDatasetFilesRequest {
483    #[prost(message, repeated, tag = "3")]
484    pub updates: ::prost::alloc::vec::Vec<VideoChannelDatasetFileUpdate>,
485    #[prost(
486        oneof = "batch_update_channel_dataset_files_request::FileScope",
487        tags = "1, 2"
488    )]
489    pub file_scope: ::core::option::Option<
490        batch_update_channel_dataset_files_request::FileScope,
491    >,
492}
493/// Nested message and enum types in `BatchUpdateChannelDatasetFilesRequest`.
494pub mod batch_update_channel_dataset_files_request {
495    #[derive(Clone, PartialEq, ::prost::Oneof)]
496    pub enum FileScope {
497        #[prost(string, tag = "1")]
498        DatasetRid(::prost::alloc::string::String),
499        #[prost(message, tag = "2")]
500        ChannelSeries(super::VideoChannelSeries),
501    }
502}
503#[derive(Clone, PartialEq, ::prost::Message)]
504pub struct BatchUpdateChannelDatasetFilesResponse {
505    #[prost(message, repeated, tag = "1")]
506    pub dataset_files: ::prost::alloc::vec::Vec<VideoChannelDatasetFile>,
507}
508#[derive(Clone, PartialEq, ::prost::Message)]
509pub struct EndChannelStreamRequest {
510    #[prost(message, optional, tag = "1")]
511    pub channel_series: ::core::option::Option<VideoChannelSeries>,
512}
513#[derive(Clone, PartialEq, ::prost::Message)]
514pub struct EndChannelStreamResponse {
515    #[prost(message, optional, tag = "1")]
516    pub stream: ::core::option::Option<VideoStream>,
517}
518#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
519#[repr(i32)]
520pub enum VideoStreamStatus {
521    Unspecified = 0,
522    Active = 1,
523    Ended = 2,
524}
525impl VideoStreamStatus {
526    /// String value of the enum field names used in the ProtoBuf definition.
527    ///
528    /// The values are not transformed in any way and thus are considered stable
529    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
530    pub fn as_str_name(&self) -> &'static str {
531        match self {
532            Self::Unspecified => "VIDEO_STREAM_STATUS_UNSPECIFIED",
533            Self::Active => "VIDEO_STREAM_STATUS_ACTIVE",
534            Self::Ended => "VIDEO_STREAM_STATUS_ENDED",
535        }
536    }
537    /// Creates an enum from field names used in the ProtoBuf definition.
538    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
539        match value {
540            "VIDEO_STREAM_STATUS_UNSPECIFIED" => Some(Self::Unspecified),
541            "VIDEO_STREAM_STATUS_ACTIVE" => Some(Self::Active),
542            "VIDEO_STREAM_STATUS_ENDED" => Some(Self::Ended),
543            _ => None,
544        }
545    }
546}
547/// Generated client implementations.
548pub mod video_service_client {
549    #![allow(
550        unused_variables,
551        dead_code,
552        missing_docs,
553        clippy::wildcard_imports,
554        clippy::let_unit_value,
555    )]
556    use tonic::codegen::*;
557    use tonic::codegen::http::Uri;
558    #[derive(Debug, Clone)]
559    pub struct VideoServiceClient<T> {
560        inner: tonic::client::Grpc<T>,
561    }
562    impl VideoServiceClient<tonic::transport::Channel> {
563        /// Attempt to create a new client by connecting to a given endpoint.
564        pub async fn connect<D>(dst: D) -> Result<Self, tonic::transport::Error>
565        where
566            D: TryInto<tonic::transport::Endpoint>,
567            D::Error: Into<StdError>,
568        {
569            let conn = tonic::transport::Endpoint::new(dst)?.connect().await?;
570            Ok(Self::new(conn))
571        }
572    }
573    impl<T> VideoServiceClient<T>
574    where
575        T: tonic::client::GrpcService<tonic::body::Body>,
576        T::Error: Into<StdError>,
577        T::ResponseBody: Body<Data = Bytes> + std::marker::Send + 'static,
578        <T::ResponseBody as Body>::Error: Into<StdError> + std::marker::Send,
579    {
580        pub fn new(inner: T) -> Self {
581            let inner = tonic::client::Grpc::new(inner);
582            Self { inner }
583        }
584        pub fn with_origin(inner: T, origin: Uri) -> Self {
585            let inner = tonic::client::Grpc::with_origin(inner, origin);
586            Self { inner }
587        }
588        pub fn with_interceptor<F>(
589            inner: T,
590            interceptor: F,
591        ) -> VideoServiceClient<InterceptedService<T, F>>
592        where
593            F: tonic::service::Interceptor,
594            T::ResponseBody: Default,
595            T: tonic::codegen::Service<
596                http::Request<tonic::body::Body>,
597                Response = http::Response<
598                    <T as tonic::client::GrpcService<tonic::body::Body>>::ResponseBody,
599                >,
600            >,
601            <T as tonic::codegen::Service<
602                http::Request<tonic::body::Body>,
603            >>::Error: Into<StdError> + std::marker::Send + std::marker::Sync,
604        {
605            VideoServiceClient::new(InterceptedService::new(inner, interceptor))
606        }
607        /// Compress requests with the given encoding.
608        ///
609        /// This requires the server to support it otherwise it might respond with an
610        /// error.
611        #[must_use]
612        pub fn send_compressed(mut self, encoding: CompressionEncoding) -> Self {
613            self.inner = self.inner.send_compressed(encoding);
614            self
615        }
616        /// Enable decompressing responses.
617        #[must_use]
618        pub fn accept_compressed(mut self, encoding: CompressionEncoding) -> Self {
619            self.inner = self.inner.accept_compressed(encoding);
620            self
621        }
622        /// Limits the maximum size of a decoded message.
623        ///
624        /// Default: `4MB`
625        #[must_use]
626        pub fn max_decoding_message_size(mut self, limit: usize) -> Self {
627            self.inner = self.inner.max_decoding_message_size(limit);
628            self
629        }
630        /// Limits the maximum size of an encoded message.
631        ///
632        /// Default: `usize::MAX`
633        #[must_use]
634        pub fn max_encoding_message_size(mut self, limit: usize) -> Self {
635            self.inner = self.inner.max_encoding_message_size(limit);
636            self
637        }
638        pub async fn list_channel_segment_time_ranges(
639            &mut self,
640            request: impl tonic::IntoRequest<super::ListChannelSegmentTimeRangesRequest>,
641        ) -> std::result::Result<
642            tonic::Response<super::ListChannelSegmentTimeRangesResponse>,
643            tonic::Status,
644        > {
645            self.inner
646                .ready()
647                .await
648                .map_err(|e| {
649                    tonic::Status::unknown(
650                        format!("Service was not ready: {}", e.into()),
651                    )
652                })?;
653            let codec = tonic::codec::ProstCodec::default();
654            let path = http::uri::PathAndQuery::from_static(
655                "/nominal.videos.v1.VideoService/ListChannelSegmentTimeRanges",
656            );
657            let mut req = request.into_request();
658            req.extensions_mut()
659                .insert(
660                    GrpcMethod::new(
661                        "nominal.videos.v1.VideoService",
662                        "ListChannelSegmentTimeRanges",
663                    ),
664                );
665            self.inner.unary(req, path, codec).await
666        }
667        pub async fn get_channel_segments_metadata(
668            &mut self,
669            request: impl tonic::IntoRequest<super::GetChannelSegmentsMetadataRequest>,
670        ) -> std::result::Result<
671            tonic::Response<super::GetChannelSegmentsMetadataResponse>,
672            tonic::Status,
673        > {
674            self.inner
675                .ready()
676                .await
677                .map_err(|e| {
678                    tonic::Status::unknown(
679                        format!("Service was not ready: {}", e.into()),
680                    )
681                })?;
682            let codec = tonic::codec::ProstCodec::default();
683            let path = http::uri::PathAndQuery::from_static(
684                "/nominal.videos.v1.VideoService/GetChannelSegmentsMetadata",
685            );
686            let mut req = request.into_request();
687            req.extensions_mut()
688                .insert(
689                    GrpcMethod::new(
690                        "nominal.videos.v1.VideoService",
691                        "GetChannelSegmentsMetadata",
692                    ),
693                );
694            self.inner.unary(req, path, codec).await
695        }
696        pub async fn get_channel_segment_by_timestamp(
697            &mut self,
698            request: impl tonic::IntoRequest<super::GetChannelSegmentByTimestampRequest>,
699        ) -> std::result::Result<
700            tonic::Response<super::GetChannelSegmentByTimestampResponse>,
701            tonic::Status,
702        > {
703            self.inner
704                .ready()
705                .await
706                .map_err(|e| {
707                    tonic::Status::unknown(
708                        format!("Service was not ready: {}", e.into()),
709                    )
710                })?;
711            let codec = tonic::codec::ProstCodec::default();
712            let path = http::uri::PathAndQuery::from_static(
713                "/nominal.videos.v1.VideoService/GetChannelSegmentByTimestamp",
714            );
715            let mut req = request.into_request();
716            req.extensions_mut()
717                .insert(
718                    GrpcMethod::new(
719                        "nominal.videos.v1.VideoService",
720                        "GetChannelSegmentByTimestamp",
721                    ),
722                );
723            self.inner.unary(req, path, codec).await
724        }
725        pub async fn get_channel_segment_at_or_after_timestamp(
726            &mut self,
727            request: impl tonic::IntoRequest<
728                super::GetChannelSegmentAtOrAfterTimestampRequest,
729            >,
730        ) -> std::result::Result<
731            tonic::Response<super::GetChannelSegmentAtOrAfterTimestampResponse>,
732            tonic::Status,
733        > {
734            self.inner
735                .ready()
736                .await
737                .map_err(|e| {
738                    tonic::Status::unknown(
739                        format!("Service was not ready: {}", e.into()),
740                    )
741                })?;
742            let codec = tonic::codec::ProstCodec::default();
743            let path = http::uri::PathAndQuery::from_static(
744                "/nominal.videos.v1.VideoService/GetChannelSegmentAtOrAfterTimestamp",
745            );
746            let mut req = request.into_request();
747            req.extensions_mut()
748                .insert(
749                    GrpcMethod::new(
750                        "nominal.videos.v1.VideoService",
751                        "GetChannelSegmentAtOrAfterTimestamp",
752                    ),
753                );
754            self.inner.unary(req, path, codec).await
755        }
756        pub async fn start_channel_stream(
757            &mut self,
758            request: impl tonic::IntoRequest<super::StartChannelStreamRequest>,
759        ) -> std::result::Result<
760            tonic::Response<super::StartChannelStreamResponse>,
761            tonic::Status,
762        > {
763            self.inner
764                .ready()
765                .await
766                .map_err(|e| {
767                    tonic::Status::unknown(
768                        format!("Service was not ready: {}", e.into()),
769                    )
770                })?;
771            let codec = tonic::codec::ProstCodec::default();
772            let path = http::uri::PathAndQuery::from_static(
773                "/nominal.videos.v1.VideoService/StartChannelStream",
774            );
775            let mut req = request.into_request();
776            req.extensions_mut()
777                .insert(
778                    GrpcMethod::new(
779                        "nominal.videos.v1.VideoService",
780                        "StartChannelStream",
781                    ),
782                );
783            self.inner.unary(req, path, codec).await
784        }
785        pub async fn get_channel_stream_playback(
786            &mut self,
787            request: impl tonic::IntoRequest<super::GetChannelStreamPlaybackRequest>,
788        ) -> std::result::Result<
789            tonic::Response<super::GetChannelStreamPlaybackResponse>,
790            tonic::Status,
791        > {
792            self.inner
793                .ready()
794                .await
795                .map_err(|e| {
796                    tonic::Status::unknown(
797                        format!("Service was not ready: {}", e.into()),
798                    )
799                })?;
800            let codec = tonic::codec::ProstCodec::default();
801            let path = http::uri::PathAndQuery::from_static(
802                "/nominal.videos.v1.VideoService/GetChannelStreamPlayback",
803            );
804            let mut req = request.into_request();
805            req.extensions_mut()
806                .insert(
807                    GrpcMethod::new(
808                        "nominal.videos.v1.VideoService",
809                        "GetChannelStreamPlayback",
810                    ),
811                );
812            self.inner.unary(req, path, codec).await
813        }
814        pub async fn get_video_stream(
815            &mut self,
816            request: impl tonic::IntoRequest<super::GetVideoStreamRequest>,
817        ) -> std::result::Result<
818            tonic::Response<super::GetVideoStreamResponse>,
819            tonic::Status,
820        > {
821            self.inner
822                .ready()
823                .await
824                .map_err(|e| {
825                    tonic::Status::unknown(
826                        format!("Service was not ready: {}", e.into()),
827                    )
828                })?;
829            let codec = tonic::codec::ProstCodec::default();
830            let path = http::uri::PathAndQuery::from_static(
831                "/nominal.videos.v1.VideoService/GetVideoStream",
832            );
833            let mut req = request.into_request();
834            req.extensions_mut()
835                .insert(
836                    GrpcMethod::new("nominal.videos.v1.VideoService", "GetVideoStream"),
837                );
838            self.inner.unary(req, path, codec).await
839        }
840        pub async fn list_channel_streams(
841            &mut self,
842            request: impl tonic::IntoRequest<super::ListChannelStreamsRequest>,
843        ) -> std::result::Result<
844            tonic::Response<super::ListChannelStreamsResponse>,
845            tonic::Status,
846        > {
847            self.inner
848                .ready()
849                .await
850                .map_err(|e| {
851                    tonic::Status::unknown(
852                        format!("Service was not ready: {}", e.into()),
853                    )
854                })?;
855            let codec = tonic::codec::ProstCodec::default();
856            let path = http::uri::PathAndQuery::from_static(
857                "/nominal.videos.v1.VideoService/ListChannelStreams",
858            );
859            let mut req = request.into_request();
860            req.extensions_mut()
861                .insert(
862                    GrpcMethod::new(
863                        "nominal.videos.v1.VideoService",
864                        "ListChannelStreams",
865                    ),
866                );
867            self.inner.unary(req, path, codec).await
868        }
869        pub async fn list_channel_dataset_files(
870            &mut self,
871            request: impl tonic::IntoRequest<super::ListChannelDatasetFilesRequest>,
872        ) -> std::result::Result<
873            tonic::Response<super::ListChannelDatasetFilesResponse>,
874            tonic::Status,
875        > {
876            self.inner
877                .ready()
878                .await
879                .map_err(|e| {
880                    tonic::Status::unknown(
881                        format!("Service was not ready: {}", e.into()),
882                    )
883                })?;
884            let codec = tonic::codec::ProstCodec::default();
885            let path = http::uri::PathAndQuery::from_static(
886                "/nominal.videos.v1.VideoService/ListChannelDatasetFiles",
887            );
888            let mut req = request.into_request();
889            req.extensions_mut()
890                .insert(
891                    GrpcMethod::new(
892                        "nominal.videos.v1.VideoService",
893                        "ListChannelDatasetFiles",
894                    ),
895                );
896            self.inner.unary(req, path, codec).await
897        }
898        pub async fn batch_update_channel_dataset_files(
899            &mut self,
900            request: impl tonic::IntoRequest<
901                super::BatchUpdateChannelDatasetFilesRequest,
902            >,
903        ) -> std::result::Result<
904            tonic::Response<super::BatchUpdateChannelDatasetFilesResponse>,
905            tonic::Status,
906        > {
907            self.inner
908                .ready()
909                .await
910                .map_err(|e| {
911                    tonic::Status::unknown(
912                        format!("Service was not ready: {}", e.into()),
913                    )
914                })?;
915            let codec = tonic::codec::ProstCodec::default();
916            let path = http::uri::PathAndQuery::from_static(
917                "/nominal.videos.v1.VideoService/BatchUpdateChannelDatasetFiles",
918            );
919            let mut req = request.into_request();
920            req.extensions_mut()
921                .insert(
922                    GrpcMethod::new(
923                        "nominal.videos.v1.VideoService",
924                        "BatchUpdateChannelDatasetFiles",
925                    ),
926                );
927            self.inner.unary(req, path, codec).await
928        }
929        pub async fn end_channel_stream(
930            &mut self,
931            request: impl tonic::IntoRequest<super::EndChannelStreamRequest>,
932        ) -> std::result::Result<
933            tonic::Response<super::EndChannelStreamResponse>,
934            tonic::Status,
935        > {
936            self.inner
937                .ready()
938                .await
939                .map_err(|e| {
940                    tonic::Status::unknown(
941                        format!("Service was not ready: {}", e.into()),
942                    )
943                })?;
944            let codec = tonic::codec::ProstCodec::default();
945            let path = http::uri::PathAndQuery::from_static(
946                "/nominal.videos.v1.VideoService/EndChannelStream",
947            );
948            let mut req = request.into_request();
949            req.extensions_mut()
950                .insert(
951                    GrpcMethod::new("nominal.videos.v1.VideoService", "EndChannelStream"),
952                );
953            self.inner.unary(req, path, codec).await
954        }
955    }
956}