Skip to main content

nominal_api_proto/proto/
nominal.comments.v1.rs

1// This file is @generated by prost-build.
2#[derive(Clone, PartialEq, ::prost::Message)]
3pub struct Comment {
4    #[prost(string, tag = "1")]
5    pub rid: ::prost::alloc::string::String,
6    #[prost(message, optional, tag = "2")]
7    pub parent: ::core::option::Option<CommentParent>,
8    #[prost(string, tag = "3")]
9    pub author_rid: ::prost::alloc::string::String,
10    #[prost(message, optional, tag = "4")]
11    pub created_at: ::core::option::Option<
12        super::super::super::google::protobuf::Timestamp,
13    >,
14    #[prost(message, optional, tag = "5")]
15    pub edited_at: ::core::option::Option<
16        super::super::super::google::protobuf::Timestamp,
17    >,
18    #[prost(message, optional, tag = "6")]
19    pub deleted_at: ::core::option::Option<
20        super::super::super::google::protobuf::Timestamp,
21    >,
22    #[prost(string, tag = "7")]
23    pub content: ::prost::alloc::string::String,
24    #[prost(string, optional, tag = "8")]
25    pub pinned_by: ::core::option::Option<::prost::alloc::string::String>,
26    #[prost(message, optional, tag = "9")]
27    pub pinned_at: ::core::option::Option<
28        super::super::super::google::protobuf::Timestamp,
29    >,
30    #[prost(message, repeated, tag = "10")]
31    pub reactions: ::prost::alloc::vec::Vec<Reaction>,
32    #[prost(string, repeated, tag = "11")]
33    pub attachments: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
34}
35#[derive(Clone, PartialEq, ::prost::Message)]
36pub struct CommentParent {
37    #[prost(oneof = "comment_parent::CommentParent", tags = "1, 2")]
38    pub comment_parent: ::core::option::Option<comment_parent::CommentParent>,
39}
40/// Nested message and enum types in `CommentParent`.
41pub mod comment_parent {
42    #[derive(Clone, PartialEq, ::prost::Oneof)]
43    pub enum CommentParent {
44        #[prost(message, tag = "1")]
45        Resource(super::CommentParentResource),
46        #[prost(message, tag = "2")]
47        Comment(super::CommentParentComment),
48    }
49}
50#[derive(Clone, PartialEq, ::prost::Message)]
51pub struct CommentParentComment {
52    #[prost(string, tag = "1")]
53    pub comment_rid: ::prost::alloc::string::String,
54}
55#[derive(Clone, PartialEq, ::prost::Message)]
56pub struct CommentParentResource {
57    #[prost(enumeration = "ResourceType", tag = "1")]
58    pub resource_type: i32,
59    #[prost(string, tag = "2")]
60    pub resource_rid: ::prost::alloc::string::String,
61}
62#[derive(Clone, PartialEq, ::prost::Message)]
63pub struct Conversation {
64    #[prost(string, tag = "1")]
65    pub resource_rid: ::prost::alloc::string::String,
66    #[prost(enumeration = "ResourceType", tag = "2")]
67    pub resource_type: i32,
68    #[prost(message, repeated, tag = "3")]
69    pub comments: ::prost::alloc::vec::Vec<ConversationNode>,
70}
71#[derive(Clone, PartialEq, ::prost::Message)]
72pub struct ConversationNode {
73    #[prost(message, optional, tag = "1")]
74    pub comment: ::core::option::Option<Comment>,
75    #[prost(message, repeated, tag = "2")]
76    pub replies: ::prost::alloc::vec::Vec<ConversationNode>,
77}
78#[derive(Clone, PartialEq, ::prost::Message)]
79pub struct CreateCommentRequest {
80    #[prost(message, optional, tag = "1")]
81    pub parent: ::core::option::Option<CommentParent>,
82    #[prost(string, tag = "2")]
83    pub content: ::prost::alloc::string::String,
84    #[prost(string, repeated, tag = "3")]
85    pub attachments: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
86}
87#[derive(Clone, PartialEq, ::prost::Message)]
88pub struct EditCommentRequest {
89    #[prost(string, tag = "1")]
90    pub content: ::prost::alloc::string::String,
91    #[prost(string, repeated, tag = "2")]
92    pub attachments: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
93}
94#[derive(Clone, PartialEq, ::prost::Message)]
95pub struct Reaction {
96    #[prost(string, tag = "1")]
97    pub rid: ::prost::alloc::string::String,
98    #[prost(string, tag = "2")]
99    pub user_rid: ::prost::alloc::string::String,
100    #[prost(message, optional, tag = "3")]
101    pub created_at: ::core::option::Option<
102        super::super::super::google::protobuf::Timestamp,
103    >,
104    #[prost(enumeration = "ReactionType", tag = "4")]
105    pub r#type: i32,
106}
107#[derive(Clone, PartialEq, ::prost::Message)]
108pub struct GetConversationRequest {
109    #[prost(enumeration = "ResourceType", tag = "1")]
110    pub resource_type: i32,
111    #[prost(string, tag = "2")]
112    pub resource_rid: ::prost::alloc::string::String,
113}
114#[derive(Clone, PartialEq, ::prost::Message)]
115pub struct GetConversationResponse {
116    #[prost(message, optional, tag = "1")]
117    pub conversation: ::core::option::Option<Conversation>,
118}
119#[derive(Clone, PartialEq, ::prost::Message)]
120pub struct GetConversationCountRequest {
121    #[prost(enumeration = "ResourceType", tag = "1")]
122    pub resource_type: i32,
123    #[prost(string, tag = "2")]
124    pub resource_rid: ::prost::alloc::string::String,
125    #[prost(bool, optional, tag = "3")]
126    pub include_deleted: ::core::option::Option<bool>,
127}
128#[derive(Clone, Copy, PartialEq, ::prost::Message)]
129pub struct GetConversationCountResponse {
130    #[prost(int32, tag = "1")]
131    pub count: i32,
132}
133#[derive(Clone, PartialEq, ::prost::Message)]
134pub struct GetCommentRequest {
135    #[prost(string, tag = "1")]
136    pub comment_rid: ::prost::alloc::string::String,
137}
138#[derive(Clone, PartialEq, ::prost::Message)]
139pub struct GetCommentResponse {
140    #[prost(message, optional, tag = "1")]
141    pub comment: ::core::option::Option<Comment>,
142}
143#[derive(Clone, PartialEq, ::prost::Message)]
144pub struct CreateCommentResponse {
145    #[prost(message, optional, tag = "1")]
146    pub comment: ::core::option::Option<Comment>,
147}
148#[derive(Clone, PartialEq, ::prost::Message)]
149pub struct EditCommentRequestWrapper {
150    #[prost(string, tag = "1")]
151    pub comment_rid: ::prost::alloc::string::String,
152    #[prost(message, optional, tag = "2")]
153    pub request: ::core::option::Option<EditCommentRequest>,
154}
155#[derive(Clone, PartialEq, ::prost::Message)]
156pub struct EditCommentResponse {
157    #[prost(message, optional, tag = "1")]
158    pub comment: ::core::option::Option<Comment>,
159}
160#[derive(Clone, PartialEq, ::prost::Message)]
161pub struct DeleteCommentRequest {
162    #[prost(string, tag = "1")]
163    pub comment_rid: ::prost::alloc::string::String,
164}
165#[derive(Clone, PartialEq, ::prost::Message)]
166pub struct DeleteCommentResponse {
167    #[prost(message, optional, tag = "1")]
168    pub comment: ::core::option::Option<Comment>,
169}
170#[derive(Clone, PartialEq, ::prost::Message)]
171pub struct PinCommentRequest {
172    #[prost(string, tag = "1")]
173    pub comment_rid: ::prost::alloc::string::String,
174}
175#[derive(Clone, PartialEq, ::prost::Message)]
176pub struct PinCommentResponse {
177    #[prost(message, optional, tag = "1")]
178    pub comment: ::core::option::Option<Comment>,
179}
180#[derive(Clone, PartialEq, ::prost::Message)]
181pub struct UnpinCommentRequest {
182    #[prost(string, tag = "1")]
183    pub comment_rid: ::prost::alloc::string::String,
184}
185#[derive(Clone, PartialEq, ::prost::Message)]
186pub struct UnpinCommentResponse {
187    #[prost(message, optional, tag = "1")]
188    pub comment: ::core::option::Option<Comment>,
189}
190#[derive(Clone, PartialEq, ::prost::Message)]
191pub struct AddReactionRequest {
192    #[prost(string, tag = "1")]
193    pub comment_rid: ::prost::alloc::string::String,
194    #[prost(enumeration = "ReactionType", tag = "2")]
195    pub r#type: i32,
196}
197#[derive(Clone, PartialEq, ::prost::Message)]
198pub struct AddReactionResponse {
199    #[prost(message, optional, tag = "1")]
200    pub comment: ::core::option::Option<Comment>,
201}
202#[derive(Clone, PartialEq, ::prost::Message)]
203pub struct RemoveReactionRequest {
204    #[prost(string, tag = "1")]
205    pub comment_rid: ::prost::alloc::string::String,
206    #[prost(enumeration = "ReactionType", tag = "2")]
207    pub r#type: i32,
208}
209#[derive(Clone, PartialEq, ::prost::Message)]
210pub struct RemoveReactionResponse {
211    #[prost(message, optional, tag = "1")]
212    pub comment: ::core::option::Option<Comment>,
213}
214#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
215#[repr(i32)]
216pub enum ReactionType {
217    Unspecified = 0,
218    Like = 1,
219    Dislike = 2,
220    Heart = 3,
221    Hooray = 4,
222    Rocket = 5,
223    Eyes = 6,
224}
225impl ReactionType {
226    /// String value of the enum field names used in the ProtoBuf definition.
227    ///
228    /// The values are not transformed in any way and thus are considered stable
229    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
230    pub fn as_str_name(&self) -> &'static str {
231        match self {
232            Self::Unspecified => "REACTION_TYPE_UNSPECIFIED",
233            Self::Like => "LIKE",
234            Self::Dislike => "DISLIKE",
235            Self::Heart => "HEART",
236            Self::Hooray => "HOORAY",
237            Self::Rocket => "ROCKET",
238            Self::Eyes => "EYES",
239        }
240    }
241    /// Creates an enum from field names used in the ProtoBuf definition.
242    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
243        match value {
244            "REACTION_TYPE_UNSPECIFIED" => Some(Self::Unspecified),
245            "LIKE" => Some(Self::Like),
246            "DISLIKE" => Some(Self::Dislike),
247            "HEART" => Some(Self::Heart),
248            "HOORAY" => Some(Self::Hooray),
249            "ROCKET" => Some(Self::Rocket),
250            "EYES" => Some(Self::Eyes),
251            _ => None,
252        }
253    }
254}
255#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
256#[repr(i32)]
257pub enum ResourceType {
258    Unspecified = 0,
259    Run = 1,
260    Event = 2,
261}
262impl ResourceType {
263    /// String value of the enum field names used in the ProtoBuf definition.
264    ///
265    /// The values are not transformed in any way and thus are considered stable
266    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
267    pub fn as_str_name(&self) -> &'static str {
268        match self {
269            Self::Unspecified => "RESOURCE_TYPE_UNSPECIFIED",
270            Self::Run => "RUN",
271            Self::Event => "EVENT",
272        }
273    }
274    /// Creates an enum from field names used in the ProtoBuf definition.
275    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
276        match value {
277            "RESOURCE_TYPE_UNSPECIFIED" => Some(Self::Unspecified),
278            "RUN" => Some(Self::Run),
279            "EVENT" => Some(Self::Event),
280            _ => None,
281        }
282    }
283}
284#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
285#[repr(i32)]
286pub enum CommentsError {
287    CommentNotFound = 0,
288    ContentTooLong = 1,
289    EmptyCommentContent = 2,
290    InvalidAttachment = 3,
291    MaxNestingDepthExceeded = 4,
292    Unauthorized = 5,
293    InvalidArgument = 6,
294}
295impl CommentsError {
296    /// String value of the enum field names used in the ProtoBuf definition.
297    ///
298    /// The values are not transformed in any way and thus are considered stable
299    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
300    pub fn as_str_name(&self) -> &'static str {
301        match self {
302            Self::CommentNotFound => "COMMENTS_ERROR_COMMENT_NOT_FOUND",
303            Self::ContentTooLong => "COMMENTS_ERROR_CONTENT_TOO_LONG",
304            Self::EmptyCommentContent => "COMMENTS_ERROR_EMPTY_COMMENT_CONTENT",
305            Self::InvalidAttachment => "COMMENTS_ERROR_INVALID_ATTACHMENT",
306            Self::MaxNestingDepthExceeded => "COMMENTS_ERROR_MAX_NESTING_DEPTH_EXCEEDED",
307            Self::Unauthorized => "COMMENTS_ERROR_UNAUTHORIZED",
308            Self::InvalidArgument => "COMMENTS_ERROR_INVALID_ARGUMENT",
309        }
310    }
311    /// Creates an enum from field names used in the ProtoBuf definition.
312    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
313        match value {
314            "COMMENTS_ERROR_COMMENT_NOT_FOUND" => Some(Self::CommentNotFound),
315            "COMMENTS_ERROR_CONTENT_TOO_LONG" => Some(Self::ContentTooLong),
316            "COMMENTS_ERROR_EMPTY_COMMENT_CONTENT" => Some(Self::EmptyCommentContent),
317            "COMMENTS_ERROR_INVALID_ATTACHMENT" => Some(Self::InvalidAttachment),
318            "COMMENTS_ERROR_MAX_NESTING_DEPTH_EXCEEDED" => {
319                Some(Self::MaxNestingDepthExceeded)
320            }
321            "COMMENTS_ERROR_UNAUTHORIZED" => Some(Self::Unauthorized),
322            "COMMENTS_ERROR_INVALID_ARGUMENT" => Some(Self::InvalidArgument),
323            _ => None,
324        }
325    }
326}
327/// Generated client implementations.
328pub mod comments_service_client {
329    #![allow(
330        unused_variables,
331        dead_code,
332        missing_docs,
333        clippy::wildcard_imports,
334        clippy::let_unit_value,
335    )]
336    use tonic::codegen::*;
337    use tonic::codegen::http::Uri;
338    #[derive(Debug, Clone)]
339    pub struct CommentsServiceClient<T> {
340        inner: tonic::client::Grpc<T>,
341    }
342    impl CommentsServiceClient<tonic::transport::Channel> {
343        /// Attempt to create a new client by connecting to a given endpoint.
344        pub async fn connect<D>(dst: D) -> Result<Self, tonic::transport::Error>
345        where
346            D: TryInto<tonic::transport::Endpoint>,
347            D::Error: Into<StdError>,
348        {
349            let conn = tonic::transport::Endpoint::new(dst)?.connect().await?;
350            Ok(Self::new(conn))
351        }
352    }
353    impl<T> CommentsServiceClient<T>
354    where
355        T: tonic::client::GrpcService<tonic::body::Body>,
356        T::Error: Into<StdError>,
357        T::ResponseBody: Body<Data = Bytes> + std::marker::Send + 'static,
358        <T::ResponseBody as Body>::Error: Into<StdError> + std::marker::Send,
359    {
360        pub fn new(inner: T) -> Self {
361            let inner = tonic::client::Grpc::new(inner);
362            Self { inner }
363        }
364        pub fn with_origin(inner: T, origin: Uri) -> Self {
365            let inner = tonic::client::Grpc::with_origin(inner, origin);
366            Self { inner }
367        }
368        pub fn with_interceptor<F>(
369            inner: T,
370            interceptor: F,
371        ) -> CommentsServiceClient<InterceptedService<T, F>>
372        where
373            F: tonic::service::Interceptor,
374            T::ResponseBody: Default,
375            T: tonic::codegen::Service<
376                http::Request<tonic::body::Body>,
377                Response = http::Response<
378                    <T as tonic::client::GrpcService<tonic::body::Body>>::ResponseBody,
379                >,
380            >,
381            <T as tonic::codegen::Service<
382                http::Request<tonic::body::Body>,
383            >>::Error: Into<StdError> + std::marker::Send + std::marker::Sync,
384        {
385            CommentsServiceClient::new(InterceptedService::new(inner, interceptor))
386        }
387        /// Compress requests with the given encoding.
388        ///
389        /// This requires the server to support it otherwise it might respond with an
390        /// error.
391        #[must_use]
392        pub fn send_compressed(mut self, encoding: CompressionEncoding) -> Self {
393            self.inner = self.inner.send_compressed(encoding);
394            self
395        }
396        /// Enable decompressing responses.
397        #[must_use]
398        pub fn accept_compressed(mut self, encoding: CompressionEncoding) -> Self {
399            self.inner = self.inner.accept_compressed(encoding);
400            self
401        }
402        /// Limits the maximum size of a decoded message.
403        ///
404        /// Default: `4MB`
405        #[must_use]
406        pub fn max_decoding_message_size(mut self, limit: usize) -> Self {
407            self.inner = self.inner.max_decoding_message_size(limit);
408            self
409        }
410        /// Limits the maximum size of an encoded message.
411        ///
412        /// Default: `usize::MAX`
413        #[must_use]
414        pub fn max_encoding_message_size(mut self, limit: usize) -> Self {
415            self.inner = self.inner.max_encoding_message_size(limit);
416            self
417        }
418        pub async fn get_conversation(
419            &mut self,
420            request: impl tonic::IntoRequest<super::GetConversationRequest>,
421        ) -> std::result::Result<
422            tonic::Response<super::GetConversationResponse>,
423            tonic::Status,
424        > {
425            self.inner
426                .ready()
427                .await
428                .map_err(|e| {
429                    tonic::Status::unknown(
430                        format!("Service was not ready: {}", e.into()),
431                    )
432                })?;
433            let codec = tonic::codec::ProstCodec::default();
434            let path = http::uri::PathAndQuery::from_static(
435                "/nominal.comments.v1.CommentsService/GetConversation",
436            );
437            let mut req = request.into_request();
438            req.extensions_mut()
439                .insert(
440                    GrpcMethod::new(
441                        "nominal.comments.v1.CommentsService",
442                        "GetConversation",
443                    ),
444                );
445            self.inner.unary(req, path, codec).await
446        }
447        pub async fn get_conversation_count(
448            &mut self,
449            request: impl tonic::IntoRequest<super::GetConversationCountRequest>,
450        ) -> std::result::Result<
451            tonic::Response<super::GetConversationCountResponse>,
452            tonic::Status,
453        > {
454            self.inner
455                .ready()
456                .await
457                .map_err(|e| {
458                    tonic::Status::unknown(
459                        format!("Service was not ready: {}", e.into()),
460                    )
461                })?;
462            let codec = tonic::codec::ProstCodec::default();
463            let path = http::uri::PathAndQuery::from_static(
464                "/nominal.comments.v1.CommentsService/GetConversationCount",
465            );
466            let mut req = request.into_request();
467            req.extensions_mut()
468                .insert(
469                    GrpcMethod::new(
470                        "nominal.comments.v1.CommentsService",
471                        "GetConversationCount",
472                    ),
473                );
474            self.inner.unary(req, path, codec).await
475        }
476        pub async fn get_comment(
477            &mut self,
478            request: impl tonic::IntoRequest<super::GetCommentRequest>,
479        ) -> std::result::Result<
480            tonic::Response<super::GetCommentResponse>,
481            tonic::Status,
482        > {
483            self.inner
484                .ready()
485                .await
486                .map_err(|e| {
487                    tonic::Status::unknown(
488                        format!("Service was not ready: {}", e.into()),
489                    )
490                })?;
491            let codec = tonic::codec::ProstCodec::default();
492            let path = http::uri::PathAndQuery::from_static(
493                "/nominal.comments.v1.CommentsService/GetComment",
494            );
495            let mut req = request.into_request();
496            req.extensions_mut()
497                .insert(
498                    GrpcMethod::new("nominal.comments.v1.CommentsService", "GetComment"),
499                );
500            self.inner.unary(req, path, codec).await
501        }
502        pub async fn create_comment(
503            &mut self,
504            request: impl tonic::IntoRequest<super::CreateCommentRequest>,
505        ) -> std::result::Result<
506            tonic::Response<super::CreateCommentResponse>,
507            tonic::Status,
508        > {
509            self.inner
510                .ready()
511                .await
512                .map_err(|e| {
513                    tonic::Status::unknown(
514                        format!("Service was not ready: {}", e.into()),
515                    )
516                })?;
517            let codec = tonic::codec::ProstCodec::default();
518            let path = http::uri::PathAndQuery::from_static(
519                "/nominal.comments.v1.CommentsService/CreateComment",
520            );
521            let mut req = request.into_request();
522            req.extensions_mut()
523                .insert(
524                    GrpcMethod::new(
525                        "nominal.comments.v1.CommentsService",
526                        "CreateComment",
527                    ),
528                );
529            self.inner.unary(req, path, codec).await
530        }
531        pub async fn edit_comment(
532            &mut self,
533            request: impl tonic::IntoRequest<super::EditCommentRequestWrapper>,
534        ) -> std::result::Result<
535            tonic::Response<super::EditCommentResponse>,
536            tonic::Status,
537        > {
538            self.inner
539                .ready()
540                .await
541                .map_err(|e| {
542                    tonic::Status::unknown(
543                        format!("Service was not ready: {}", e.into()),
544                    )
545                })?;
546            let codec = tonic::codec::ProstCodec::default();
547            let path = http::uri::PathAndQuery::from_static(
548                "/nominal.comments.v1.CommentsService/EditComment",
549            );
550            let mut req = request.into_request();
551            req.extensions_mut()
552                .insert(
553                    GrpcMethod::new("nominal.comments.v1.CommentsService", "EditComment"),
554                );
555            self.inner.unary(req, path, codec).await
556        }
557        pub async fn delete_comment(
558            &mut self,
559            request: impl tonic::IntoRequest<super::DeleteCommentRequest>,
560        ) -> std::result::Result<
561            tonic::Response<super::DeleteCommentResponse>,
562            tonic::Status,
563        > {
564            self.inner
565                .ready()
566                .await
567                .map_err(|e| {
568                    tonic::Status::unknown(
569                        format!("Service was not ready: {}", e.into()),
570                    )
571                })?;
572            let codec = tonic::codec::ProstCodec::default();
573            let path = http::uri::PathAndQuery::from_static(
574                "/nominal.comments.v1.CommentsService/DeleteComment",
575            );
576            let mut req = request.into_request();
577            req.extensions_mut()
578                .insert(
579                    GrpcMethod::new(
580                        "nominal.comments.v1.CommentsService",
581                        "DeleteComment",
582                    ),
583                );
584            self.inner.unary(req, path, codec).await
585        }
586        pub async fn pin_comment(
587            &mut self,
588            request: impl tonic::IntoRequest<super::PinCommentRequest>,
589        ) -> std::result::Result<
590            tonic::Response<super::PinCommentResponse>,
591            tonic::Status,
592        > {
593            self.inner
594                .ready()
595                .await
596                .map_err(|e| {
597                    tonic::Status::unknown(
598                        format!("Service was not ready: {}", e.into()),
599                    )
600                })?;
601            let codec = tonic::codec::ProstCodec::default();
602            let path = http::uri::PathAndQuery::from_static(
603                "/nominal.comments.v1.CommentsService/PinComment",
604            );
605            let mut req = request.into_request();
606            req.extensions_mut()
607                .insert(
608                    GrpcMethod::new("nominal.comments.v1.CommentsService", "PinComment"),
609                );
610            self.inner.unary(req, path, codec).await
611        }
612        pub async fn unpin_comment(
613            &mut self,
614            request: impl tonic::IntoRequest<super::UnpinCommentRequest>,
615        ) -> std::result::Result<
616            tonic::Response<super::UnpinCommentResponse>,
617            tonic::Status,
618        > {
619            self.inner
620                .ready()
621                .await
622                .map_err(|e| {
623                    tonic::Status::unknown(
624                        format!("Service was not ready: {}", e.into()),
625                    )
626                })?;
627            let codec = tonic::codec::ProstCodec::default();
628            let path = http::uri::PathAndQuery::from_static(
629                "/nominal.comments.v1.CommentsService/UnpinComment",
630            );
631            let mut req = request.into_request();
632            req.extensions_mut()
633                .insert(
634                    GrpcMethod::new(
635                        "nominal.comments.v1.CommentsService",
636                        "UnpinComment",
637                    ),
638                );
639            self.inner.unary(req, path, codec).await
640        }
641        pub async fn add_reaction(
642            &mut self,
643            request: impl tonic::IntoRequest<super::AddReactionRequest>,
644        ) -> std::result::Result<
645            tonic::Response<super::AddReactionResponse>,
646            tonic::Status,
647        > {
648            self.inner
649                .ready()
650                .await
651                .map_err(|e| {
652                    tonic::Status::unknown(
653                        format!("Service was not ready: {}", e.into()),
654                    )
655                })?;
656            let codec = tonic::codec::ProstCodec::default();
657            let path = http::uri::PathAndQuery::from_static(
658                "/nominal.comments.v1.CommentsService/AddReaction",
659            );
660            let mut req = request.into_request();
661            req.extensions_mut()
662                .insert(
663                    GrpcMethod::new("nominal.comments.v1.CommentsService", "AddReaction"),
664                );
665            self.inner.unary(req, path, codec).await
666        }
667        pub async fn remove_reaction(
668            &mut self,
669            request: impl tonic::IntoRequest<super::RemoveReactionRequest>,
670        ) -> std::result::Result<
671            tonic::Response<super::RemoveReactionResponse>,
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.comments.v1.CommentsService/RemoveReaction",
685            );
686            let mut req = request.into_request();
687            req.extensions_mut()
688                .insert(
689                    GrpcMethod::new(
690                        "nominal.comments.v1.CommentsService",
691                        "RemoveReaction",
692                    ),
693                );
694            self.inner.unary(req, path, codec).await
695        }
696    }
697}