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}
294impl CommentsError {
295 pub fn as_str_name(&self) -> &'static str {
300 match self {
301 Self::CommentNotFound => "COMMENTS_ERROR_COMMENT_NOT_FOUND",
302 Self::ContentTooLong => "COMMENTS_ERROR_CONTENT_TOO_LONG",
303 Self::EmptyCommentContent => "COMMENTS_ERROR_EMPTY_COMMENT_CONTENT",
304 Self::InvalidAttachment => "COMMENTS_ERROR_INVALID_ATTACHMENT",
305 Self::MaxNestingDepthExceeded => "COMMENTS_ERROR_MAX_NESTING_DEPTH_EXCEEDED",
306 Self::Unauthorized => "COMMENTS_ERROR_UNAUTHORIZED",
307 }
308 }
309 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
311 match value {
312 "COMMENTS_ERROR_COMMENT_NOT_FOUND" => Some(Self::CommentNotFound),
313 "COMMENTS_ERROR_CONTENT_TOO_LONG" => Some(Self::ContentTooLong),
314 "COMMENTS_ERROR_EMPTY_COMMENT_CONTENT" => Some(Self::EmptyCommentContent),
315 "COMMENTS_ERROR_INVALID_ATTACHMENT" => Some(Self::InvalidAttachment),
316 "COMMENTS_ERROR_MAX_NESTING_DEPTH_EXCEEDED" => {
317 Some(Self::MaxNestingDepthExceeded)
318 }
319 "COMMENTS_ERROR_UNAUTHORIZED" => Some(Self::Unauthorized),
320 _ => None,
321 }
322 }
323}
324pub mod comments_service_client {
326 #![allow(
327 unused_variables,
328 dead_code,
329 missing_docs,
330 clippy::wildcard_imports,
331 clippy::let_unit_value,
332 )]
333 use tonic::codegen::*;
334 use tonic::codegen::http::Uri;
335 #[derive(Debug, Clone)]
336 pub struct CommentsServiceClient<T> {
337 inner: tonic::client::Grpc<T>,
338 }
339 impl CommentsServiceClient<tonic::transport::Channel> {
340 pub async fn connect<D>(dst: D) -> Result<Self, tonic::transport::Error>
342 where
343 D: TryInto<tonic::transport::Endpoint>,
344 D::Error: Into<StdError>,
345 {
346 let conn = tonic::transport::Endpoint::new(dst)?.connect().await?;
347 Ok(Self::new(conn))
348 }
349 }
350 impl<T> CommentsServiceClient<T>
351 where
352 T: tonic::client::GrpcService<tonic::body::Body>,
353 T::Error: Into<StdError>,
354 T::ResponseBody: Body<Data = Bytes> + std::marker::Send + 'static,
355 <T::ResponseBody as Body>::Error: Into<StdError> + std::marker::Send,
356 {
357 pub fn new(inner: T) -> Self {
358 let inner = tonic::client::Grpc::new(inner);
359 Self { inner }
360 }
361 pub fn with_origin(inner: T, origin: Uri) -> Self {
362 let inner = tonic::client::Grpc::with_origin(inner, origin);
363 Self { inner }
364 }
365 pub fn with_interceptor<F>(
366 inner: T,
367 interceptor: F,
368 ) -> CommentsServiceClient<InterceptedService<T, F>>
369 where
370 F: tonic::service::Interceptor,
371 T::ResponseBody: Default,
372 T: tonic::codegen::Service<
373 http::Request<tonic::body::Body>,
374 Response = http::Response<
375 <T as tonic::client::GrpcService<tonic::body::Body>>::ResponseBody,
376 >,
377 >,
378 <T as tonic::codegen::Service<
379 http::Request<tonic::body::Body>,
380 >>::Error: Into<StdError> + std::marker::Send + std::marker::Sync,
381 {
382 CommentsServiceClient::new(InterceptedService::new(inner, interceptor))
383 }
384 #[must_use]
389 pub fn send_compressed(mut self, encoding: CompressionEncoding) -> Self {
390 self.inner = self.inner.send_compressed(encoding);
391 self
392 }
393 #[must_use]
395 pub fn accept_compressed(mut self, encoding: CompressionEncoding) -> Self {
396 self.inner = self.inner.accept_compressed(encoding);
397 self
398 }
399 #[must_use]
403 pub fn max_decoding_message_size(mut self, limit: usize) -> Self {
404 self.inner = self.inner.max_decoding_message_size(limit);
405 self
406 }
407 #[must_use]
411 pub fn max_encoding_message_size(mut self, limit: usize) -> Self {
412 self.inner = self.inner.max_encoding_message_size(limit);
413 self
414 }
415 pub async fn get_conversation(
416 &mut self,
417 request: impl tonic::IntoRequest<super::GetConversationRequest>,
418 ) -> std::result::Result<
419 tonic::Response<super::GetConversationResponse>,
420 tonic::Status,
421 > {
422 self.inner
423 .ready()
424 .await
425 .map_err(|e| {
426 tonic::Status::unknown(
427 format!("Service was not ready: {}", e.into()),
428 )
429 })?;
430 let codec = tonic::codec::ProstCodec::default();
431 let path = http::uri::PathAndQuery::from_static(
432 "/nominal.comments.v1.CommentsService/GetConversation",
433 );
434 let mut req = request.into_request();
435 req.extensions_mut()
436 .insert(
437 GrpcMethod::new(
438 "nominal.comments.v1.CommentsService",
439 "GetConversation",
440 ),
441 );
442 self.inner.unary(req, path, codec).await
443 }
444 pub async fn get_conversation_count(
445 &mut self,
446 request: impl tonic::IntoRequest<super::GetConversationCountRequest>,
447 ) -> std::result::Result<
448 tonic::Response<super::GetConversationCountResponse>,
449 tonic::Status,
450 > {
451 self.inner
452 .ready()
453 .await
454 .map_err(|e| {
455 tonic::Status::unknown(
456 format!("Service was not ready: {}", e.into()),
457 )
458 })?;
459 let codec = tonic::codec::ProstCodec::default();
460 let path = http::uri::PathAndQuery::from_static(
461 "/nominal.comments.v1.CommentsService/GetConversationCount",
462 );
463 let mut req = request.into_request();
464 req.extensions_mut()
465 .insert(
466 GrpcMethod::new(
467 "nominal.comments.v1.CommentsService",
468 "GetConversationCount",
469 ),
470 );
471 self.inner.unary(req, path, codec).await
472 }
473 pub async fn get_comment(
474 &mut self,
475 request: impl tonic::IntoRequest<super::GetCommentRequest>,
476 ) -> std::result::Result<
477 tonic::Response<super::GetCommentResponse>,
478 tonic::Status,
479 > {
480 self.inner
481 .ready()
482 .await
483 .map_err(|e| {
484 tonic::Status::unknown(
485 format!("Service was not ready: {}", e.into()),
486 )
487 })?;
488 let codec = tonic::codec::ProstCodec::default();
489 let path = http::uri::PathAndQuery::from_static(
490 "/nominal.comments.v1.CommentsService/GetComment",
491 );
492 let mut req = request.into_request();
493 req.extensions_mut()
494 .insert(
495 GrpcMethod::new("nominal.comments.v1.CommentsService", "GetComment"),
496 );
497 self.inner.unary(req, path, codec).await
498 }
499 pub async fn create_comment(
500 &mut self,
501 request: impl tonic::IntoRequest<super::CreateCommentRequest>,
502 ) -> std::result::Result<
503 tonic::Response<super::CreateCommentResponse>,
504 tonic::Status,
505 > {
506 self.inner
507 .ready()
508 .await
509 .map_err(|e| {
510 tonic::Status::unknown(
511 format!("Service was not ready: {}", e.into()),
512 )
513 })?;
514 let codec = tonic::codec::ProstCodec::default();
515 let path = http::uri::PathAndQuery::from_static(
516 "/nominal.comments.v1.CommentsService/CreateComment",
517 );
518 let mut req = request.into_request();
519 req.extensions_mut()
520 .insert(
521 GrpcMethod::new(
522 "nominal.comments.v1.CommentsService",
523 "CreateComment",
524 ),
525 );
526 self.inner.unary(req, path, codec).await
527 }
528 pub async fn edit_comment(
529 &mut self,
530 request: impl tonic::IntoRequest<super::EditCommentRequestWrapper>,
531 ) -> std::result::Result<
532 tonic::Response<super::EditCommentResponse>,
533 tonic::Status,
534 > {
535 self.inner
536 .ready()
537 .await
538 .map_err(|e| {
539 tonic::Status::unknown(
540 format!("Service was not ready: {}", e.into()),
541 )
542 })?;
543 let codec = tonic::codec::ProstCodec::default();
544 let path = http::uri::PathAndQuery::from_static(
545 "/nominal.comments.v1.CommentsService/EditComment",
546 );
547 let mut req = request.into_request();
548 req.extensions_mut()
549 .insert(
550 GrpcMethod::new("nominal.comments.v1.CommentsService", "EditComment"),
551 );
552 self.inner.unary(req, path, codec).await
553 }
554 pub async fn delete_comment(
555 &mut self,
556 request: impl tonic::IntoRequest<super::DeleteCommentRequest>,
557 ) -> std::result::Result<
558 tonic::Response<super::DeleteCommentResponse>,
559 tonic::Status,
560 > {
561 self.inner
562 .ready()
563 .await
564 .map_err(|e| {
565 tonic::Status::unknown(
566 format!("Service was not ready: {}", e.into()),
567 )
568 })?;
569 let codec = tonic::codec::ProstCodec::default();
570 let path = http::uri::PathAndQuery::from_static(
571 "/nominal.comments.v1.CommentsService/DeleteComment",
572 );
573 let mut req = request.into_request();
574 req.extensions_mut()
575 .insert(
576 GrpcMethod::new(
577 "nominal.comments.v1.CommentsService",
578 "DeleteComment",
579 ),
580 );
581 self.inner.unary(req, path, codec).await
582 }
583 pub async fn pin_comment(
584 &mut self,
585 request: impl tonic::IntoRequest<super::PinCommentRequest>,
586 ) -> std::result::Result<
587 tonic::Response<super::PinCommentResponse>,
588 tonic::Status,
589 > {
590 self.inner
591 .ready()
592 .await
593 .map_err(|e| {
594 tonic::Status::unknown(
595 format!("Service was not ready: {}", e.into()),
596 )
597 })?;
598 let codec = tonic::codec::ProstCodec::default();
599 let path = http::uri::PathAndQuery::from_static(
600 "/nominal.comments.v1.CommentsService/PinComment",
601 );
602 let mut req = request.into_request();
603 req.extensions_mut()
604 .insert(
605 GrpcMethod::new("nominal.comments.v1.CommentsService", "PinComment"),
606 );
607 self.inner.unary(req, path, codec).await
608 }
609 pub async fn unpin_comment(
610 &mut self,
611 request: impl tonic::IntoRequest<super::UnpinCommentRequest>,
612 ) -> std::result::Result<
613 tonic::Response<super::UnpinCommentResponse>,
614 tonic::Status,
615 > {
616 self.inner
617 .ready()
618 .await
619 .map_err(|e| {
620 tonic::Status::unknown(
621 format!("Service was not ready: {}", e.into()),
622 )
623 })?;
624 let codec = tonic::codec::ProstCodec::default();
625 let path = http::uri::PathAndQuery::from_static(
626 "/nominal.comments.v1.CommentsService/UnpinComment",
627 );
628 let mut req = request.into_request();
629 req.extensions_mut()
630 .insert(
631 GrpcMethod::new(
632 "nominal.comments.v1.CommentsService",
633 "UnpinComment",
634 ),
635 );
636 self.inner.unary(req, path, codec).await
637 }
638 pub async fn add_reaction(
639 &mut self,
640 request: impl tonic::IntoRequest<super::AddReactionRequest>,
641 ) -> std::result::Result<
642 tonic::Response<super::AddReactionResponse>,
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.comments.v1.CommentsService/AddReaction",
656 );
657 let mut req = request.into_request();
658 req.extensions_mut()
659 .insert(
660 GrpcMethod::new("nominal.comments.v1.CommentsService", "AddReaction"),
661 );
662 self.inner.unary(req, path, codec).await
663 }
664 pub async fn remove_reaction(
665 &mut self,
666 request: impl tonic::IntoRequest<super::RemoveReactionRequest>,
667 ) -> std::result::Result<
668 tonic::Response<super::RemoveReactionResponse>,
669 tonic::Status,
670 > {
671 self.inner
672 .ready()
673 .await
674 .map_err(|e| {
675 tonic::Status::unknown(
676 format!("Service was not ready: {}", e.into()),
677 )
678 })?;
679 let codec = tonic::codec::ProstCodec::default();
680 let path = http::uri::PathAndQuery::from_static(
681 "/nominal.comments.v1.CommentsService/RemoveReaction",
682 );
683 let mut req = request.into_request();
684 req.extensions_mut()
685 .insert(
686 GrpcMethod::new(
687 "nominal.comments.v1.CommentsService",
688 "RemoveReaction",
689 ),
690 );
691 self.inner.unary(req, path, codec).await
692 }
693 }
694}