1#[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}
40pub 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 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 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 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 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 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 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}
327pub 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 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 #[must_use]
392 pub fn send_compressed(mut self, encoding: CompressionEncoding) -> Self {
393 self.inner = self.inner.send_compressed(encoding);
394 self
395 }
396 #[must_use]
398 pub fn accept_compressed(mut self, encoding: CompressionEncoding) -> Self {
399 self.inner = self.inner.accept_compressed(encoding);
400 self
401 }
402 #[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 #[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}