1use google_cloud_gax::conn::Channel;
2use google_cloud_gax::create_request;
3use google_cloud_gax::grpc::{Code, Status};
4use google_cloud_gax::retry::{invoke_fn, RetrySetting};
5use google_cloud_googleapis::devtools::artifact_registry::v1::artifact_registry_client::ArtifactRegistryClient;
6use google_cloud_googleapis::devtools::artifact_registry::v1::{
7 CreateRepositoryRequest, CreateTagRequest, DeletePackageRequest, DeleteRepositoryRequest, DeleteTagRequest,
8 DeleteVersionRequest, DockerImage, File, GetDockerImageRequest, GetFileRequest, GetMavenArtifactRequest,
9 GetNpmPackageRequest, GetPackageRequest, GetProjectSettingsRequest, GetPythonPackageRequest, GetRepositoryRequest,
10 GetTagRequest, GetVersionRequest, ImportAptArtifactsRequest, ImportAptArtifactsResponse, ImportYumArtifactsRequest,
11 ListDockerImagesRequest, ListDockerImagesResponse, ListFilesRequest, ListFilesResponse, ListMavenArtifactsRequest,
12 ListMavenArtifactsResponse, ListNpmPackagesRequest, ListNpmPackagesResponse, ListPackagesRequest,
13 ListPackagesResponse, ListPythonPackagesRequest, ListPythonPackagesResponse, ListRepositoriesRequest,
14 ListRepositoriesResponse, ListTagsRequest, ListTagsResponse, ListVersionsRequest, ListVersionsResponse,
15 MavenArtifact, NpmPackage, Package, ProjectSettings, PythonPackage, Repository, Tag, UpdateProjectSettingsRequest,
16 UpdateRepositoryRequest, UpdateTagRequest, Version, YumArtifact,
17};
18use google_cloud_googleapis::iam::v1::{GetIamPolicyRequest, Policy, SetIamPolicyRequest, TestIamPermissionsRequest};
19use google_cloud_longrunning::autogen::operations_client::OperationsClient;
20use google_cloud_longrunning::longrunning::Operation;
21use std::time::Duration;
22
23fn default_setting() -> RetrySetting {
24 RetrySetting {
25 from_millis: 50,
26 max_delay: Some(Duration::from_secs(60)),
27 factor: 1u64,
28 take: 20,
29 codes: vec![Code::Unavailable, Code::Unknown],
30 }
31}
32
33#[derive(Clone)]
34pub struct Client {
35 inner: ArtifactRegistryClient<Channel>,
36 lro_client: OperationsClient,
37}
38
39impl Client {
40 pub fn new(inner: ArtifactRegistryClient<Channel>, lro_client: OperationsClient) -> Self {
41 Self {
42 inner: inner.max_decoding_message_size(i32::MAX as usize),
43 lro_client,
44 }
45 }
46
47 #[cfg_attr(feature = "trace", tracing::instrument(skip_all))]
54 pub async fn get_project_settings(
55 &mut self,
56 req: GetProjectSettingsRequest,
57 retry: Option<RetrySetting>,
58 ) -> Result<ProjectSettings, Status> {
59 let setting = retry.unwrap_or_else(default_setting);
60
61 invoke_fn(
62 Some(setting),
63 |client| async {
64 let request = create_request(format!("name={}", req.name), req.clone());
65 client
66 .get_project_settings(request)
67 .await
68 .map(|s| s.into_inner())
69 .map_err(|e| (e, client))
70 },
71 &mut self.inner,
72 )
73 .await
74 }
75
76 #[cfg_attr(feature = "trace", tracing::instrument(skip_all))]
83 pub async fn update_project_settings(
84 &mut self,
85 req: UpdateProjectSettingsRequest,
86 retry: Option<RetrySetting>,
87 ) -> Result<ProjectSettings, Status> {
88 let setting = retry.unwrap_or_else(default_setting);
89 let project_settings_name = match req.project_settings {
90 None => "".to_string(),
91 Some(ref s) => s.name.to_string(),
92 };
93
94 invoke_fn(
95 Some(setting),
96 |client| async {
97 let request = create_request(format!("project_settings.name={}", project_settings_name), req.clone());
98 client
99 .update_project_settings(request)
100 .await
101 .map(|s| s.into_inner())
102 .map_err(|e| (e, client))
103 },
104 &mut self.inner,
105 )
106 .await
107 }
108
109 #[cfg_attr(feature = "trace", tracing::instrument(skip_all))]
114 pub async fn create_repository(
115 &mut self,
116 req: CreateRepositoryRequest,
117 retry: Option<RetrySetting>,
118 ) -> Result<Operation<Repository>, Status> {
119 let setting = retry.unwrap_or_else(default_setting);
120
121 invoke_fn(
122 Some(setting),
123 |client| async {
124 let request = create_request(format!("parent={}", req.parent), req.clone());
125 client.create_repository(request).await.map_err(|e| (e, client))
126 },
127 &mut self.inner,
128 )
129 .await
130 .map(|d| Operation::new(self.lro_client.clone(), d.into_inner()))
131 }
132
133 #[cfg_attr(feature = "trace", tracing::instrument(skip_all))]
138 pub async fn get_repository(
139 &mut self,
140 req: GetRepositoryRequest,
141 retry: Option<RetrySetting>,
142 ) -> Result<Repository, Status> {
143 let setting = retry.unwrap_or_else(default_setting);
144
145 invoke_fn(
146 Some(setting),
147 |client| async {
148 let request = create_request(format!("repository.name={}", req.name), req.clone());
149 client
150 .get_repository(request)
151 .await
152 .map(|r| r.into_inner())
153 .map_err(|e| (e, client))
154 },
155 &mut self.inner,
156 )
157 .await
158 }
159
160 #[cfg_attr(feature = "trace", tracing::instrument(skip_all))]
165 pub async fn list_repositories(
166 &mut self,
167 req: ListRepositoriesRequest,
168 retry: Option<RetrySetting>,
169 ) -> Result<ListRepositoriesResponse, Status> {
170 let setting = retry.unwrap_or_else(default_setting);
171
172 invoke_fn(
173 Some(setting),
174 |client| async {
175 let request = create_request(format!("parent={}", req.parent), req.clone());
176 client
177 .list_repositories(request)
178 .await
179 .map(|r| r.into_inner())
180 .map_err(|e| (e, client))
181 },
182 &mut self.inner,
183 )
184 .await
185 }
186
187 #[cfg_attr(feature = "trace", tracing::instrument(skip_all))]
192 pub async fn update_repository(
193 &mut self,
194 req: UpdateRepositoryRequest,
195 retry: Option<RetrySetting>,
196 ) -> Result<Repository, Status> {
197 let setting = retry.unwrap_or_else(default_setting);
198 let repository_name = match req.repository {
199 None => "".to_string(),
200 Some(ref r) => r.name.to_string(),
201 };
202
203 invoke_fn(
204 Some(setting),
205 |client| async {
206 let request = create_request(format!("repository.name={}", repository_name), req.clone());
207 client
208 .update_repository(request)
209 .await
210 .map(|r| r.into_inner())
211 .map_err(|e| (e, client))
212 },
213 &mut self.inner,
214 )
215 .await
216 }
217
218 #[cfg_attr(feature = "trace", tracing::instrument(skip_all))]
223 pub async fn delete_repository(
224 &mut self,
225 req: DeleteRepositoryRequest,
226 retry: Option<RetrySetting>,
227 ) -> Result<(), Status> {
228 let setting = retry.unwrap_or_else(default_setting);
229
230 invoke_fn(
231 Some(setting),
232 |client| async {
233 let request = create_request(format!("name={}", req.name), req.clone());
234 client
235 .delete_repository(request)
236 .await
237 .map(|_r| ())
238 .map_err(|e| (e, client))
239 },
240 &mut self.inner,
241 )
242 .await
243 }
244
245 #[cfg_attr(feature = "trace", tracing::instrument(skip_all))]
250 pub async fn get_iam_policy(
251 &mut self,
252 req: GetIamPolicyRequest,
253 retry: Option<RetrySetting>,
254 ) -> Result<Policy, Status> {
255 let setting = retry.unwrap_or_else(default_setting);
256
257 invoke_fn(
258 Some(setting),
259 |client| async {
260 let request = create_request(format!("resource={}", req.resource), req.clone());
261 client
262 .get_iam_policy(request)
263 .await
264 .map(|p| p.into_inner())
265 .map_err(|e| (e, client))
266 },
267 &mut self.inner,
268 )
269 .await
270 }
271
272 #[cfg_attr(feature = "trace", tracing::instrument(skip_all))]
277 pub async fn set_iam_policy(
278 &mut self,
279 req: SetIamPolicyRequest,
280 retry: Option<RetrySetting>,
281 ) -> Result<Policy, Status> {
282 let setting = retry.unwrap_or_else(default_setting);
283
284 invoke_fn(
285 Some(setting),
286 |client| async {
287 let request = create_request(format!("resource={}", req.resource), req.clone());
288 client
289 .set_iam_policy(request)
290 .await
291 .map(|p| p.into_inner())
292 .map_err(|e| (e, client))
293 },
294 &mut self.inner,
295 )
296 .await
297 }
298
299 #[cfg_attr(feature = "trace", tracing::instrument(skip_all))]
304 pub async fn test_iam_permissions(
305 &mut self,
306 req: TestIamPermissionsRequest,
307 retry: Option<RetrySetting>,
308 ) -> Result<Vec<String>, Status> {
309 let setting = retry.unwrap_or_else(default_setting);
310
311 invoke_fn(
312 Some(setting),
313 |client| async {
314 let request = create_request(format!("resource={}", req.resource), req.clone());
315 client
316 .test_iam_permissions(request)
317 .await
318 .map(|s| s.into_inner().permissions)
319 .map_err(|e| (e, client))
320 },
321 &mut self.inner,
322 )
323 .await
324 }
325
326 #[cfg_attr(feature = "trace", tracing::instrument(skip_all))]
331 pub async fn list_docker_images(
332 &mut self,
333 req: ListDockerImagesRequest,
334 retry: Option<RetrySetting>,
335 ) -> Result<ListDockerImagesResponse, Status> {
336 let setting = retry.unwrap_or_else(default_setting);
337
338 invoke_fn(
339 Some(setting),
340 |client| async {
341 let request = create_request(format!("parent={}", req.parent), req.clone());
342 client
343 .list_docker_images(request)
344 .await
345 .map(|r| r.into_inner())
346 .map_err(|e| (e, client))
347 },
348 &mut self.inner,
349 )
350 .await
351 }
352
353 #[cfg_attr(feature = "trace", tracing::instrument(skip_all))]
358 pub async fn get_docker_image(
359 &mut self,
360 req: GetDockerImageRequest,
361 retry: Option<RetrySetting>,
362 ) -> Result<DockerImage, Status> {
363 let setting = retry.unwrap_or_else(default_setting);
364
365 invoke_fn(
366 Some(setting),
367 |client| async {
368 let request = create_request(format!("name={}", req.name), req.clone());
369 client
370 .get_docker_image(request)
371 .await
372 .map(|r| r.into_inner())
373 .map_err(|e| (e, client))
374 },
375 &mut self.inner,
376 )
377 .await
378 }
379
380 #[cfg_attr(feature = "trace", tracing::instrument(skip_all))]
385 pub async fn import_apt_artifacts(
386 &mut self,
387 req: ImportAptArtifactsRequest,
388 retry: Option<RetrySetting>,
389 ) -> Result<Operation<ImportAptArtifactsResponse>, Status> {
390 let setting = retry.unwrap_or_else(default_setting);
391
392 invoke_fn(
393 Some(setting),
394 |client| async {
395 let request = create_request(format!("parent={}", req.parent), req.clone());
396 client.import_apt_artifacts(request).await.map_err(|e| (e, client))
397 },
398 &mut self.inner,
399 )
400 .await
401 .map(|d| Operation::new(self.lro_client.clone(), d.into_inner()))
402 }
403
404 #[cfg_attr(feature = "trace", tracing::instrument(skip_all))]
409 pub async fn get_file(&mut self, req: GetFileRequest, retry: Option<RetrySetting>) -> Result<File, Status> {
410 let setting = retry.unwrap_or_else(default_setting);
411
412 invoke_fn(
413 Some(setting),
414 |client| async {
415 let request = create_request(format!("name={}", req.name), req.clone());
416 client
417 .get_file(request)
418 .await
419 .map(|d| d.into_inner())
420 .map_err(|e| (e, client))
421 },
422 &mut self.inner,
423 )
424 .await
425 }
426
427 #[cfg_attr(feature = "trace", tracing::instrument(skip_all))]
432 pub async fn list_files(
433 &mut self,
434 req: ListFilesRequest,
435 retry: Option<RetrySetting>,
436 ) -> Result<ListFilesResponse, Status> {
437 let setting = retry.unwrap_or_else(default_setting);
438
439 invoke_fn(
440 Some(setting),
441 |client| async {
442 let request = create_request(format!("parent={}", req.parent), req.clone());
443 client
444 .list_files(request)
445 .await
446 .map(|d| d.into_inner())
447 .map_err(|e| (e, client))
448 },
449 &mut self.inner,
450 )
451 .await
452 }
453
454 #[cfg_attr(feature = "trace", tracing::instrument(skip_all))]
459 pub async fn get_maven_artifact(
460 &mut self,
461 req: GetMavenArtifactRequest,
462 retry: Option<RetrySetting>,
463 ) -> Result<MavenArtifact, Status> {
464 let setting = retry.unwrap_or_else(default_setting);
465
466 invoke_fn(
467 Some(setting),
468 |client| async {
469 let request = create_request(format!("name={}", req.name), req.clone());
470 client
471 .get_maven_artifact(request)
472 .await
473 .map(|d| d.into_inner())
474 .map_err(|e| (e, client))
475 },
476 &mut self.inner,
477 )
478 .await
479 }
480
481 #[cfg_attr(feature = "trace", tracing::instrument(skip_all))]
486 pub async fn list_maven_artifacts(
487 &mut self,
488 req: ListMavenArtifactsRequest,
489 retry: Option<RetrySetting>,
490 ) -> Result<ListMavenArtifactsResponse, Status> {
491 let setting = retry.unwrap_or_else(default_setting);
492
493 invoke_fn(
494 Some(setting),
495 |client| async {
496 let request = create_request(format!("parent={}", req.parent), req.clone());
497 client
498 .list_maven_artifacts(request)
499 .await
500 .map(|d| d.into_inner())
501 .map_err(|e| (e, client))
502 },
503 &mut self.inner,
504 )
505 .await
506 }
507
508 #[cfg_attr(feature = "trace", tracing::instrument(skip_all))]
513 pub async fn get_npm_package(
514 &mut self,
515 req: GetNpmPackageRequest,
516 retry: Option<RetrySetting>,
517 ) -> Result<NpmPackage, Status> {
518 let setting = retry.unwrap_or_else(default_setting);
519
520 invoke_fn(
521 Some(setting),
522 |client| async {
523 let request = create_request(format!("name={}", req.name), req.clone());
524 client
525 .get_npm_package(request)
526 .await
527 .map(|d| d.into_inner())
528 .map_err(|e| (e, client))
529 },
530 &mut self.inner,
531 )
532 .await
533 }
534
535 #[cfg_attr(feature = "trace", tracing::instrument(skip_all))]
540 pub async fn list_npm_packages(
541 &mut self,
542 req: ListNpmPackagesRequest,
543 retry: Option<RetrySetting>,
544 ) -> Result<ListNpmPackagesResponse, Status> {
545 let setting = retry.unwrap_or_else(default_setting);
546
547 invoke_fn(
548 Some(setting),
549 |client| async {
550 let request = create_request(format!("parent={}", req.parent), req.clone());
551 client
552 .list_npm_packages(request)
553 .await
554 .map(|d| d.into_inner())
555 .map_err(|e| (e, client))
556 },
557 &mut self.inner,
558 )
559 .await
560 }
561
562 #[cfg_attr(feature = "trace", tracing::instrument(skip_all))]
567 pub async fn delete_package(
568 &mut self,
569 req: DeletePackageRequest,
570 retry: Option<RetrySetting>,
571 ) -> Result<(), Status> {
572 let setting = retry.unwrap_or_else(default_setting);
573
574 invoke_fn(
575 Some(setting),
576 |client| async {
577 let request = create_request(format!("name={}", req.name), req.clone());
578 client
579 .delete_package(request)
580 .await
581 .map(|_o| ())
582 .map_err(|e| (e, client))
583 },
584 &mut self.inner,
585 )
586 .await
587 }
588
589 #[cfg_attr(feature = "trace", tracing::instrument(skip_all))]
594 pub async fn get_package(
595 &mut self,
596 req: GetPackageRequest,
597 retry: Option<RetrySetting>,
598 ) -> Result<Package, Status> {
599 let setting = retry.unwrap_or_else(default_setting);
600
601 invoke_fn(
602 Some(setting),
603 |client| async {
604 let request = create_request(format!("name={}", req.name), req.clone());
605 client
606 .get_package(request)
607 .await
608 .map(|o| o.into_inner())
609 .map_err(|e| (e, client))
610 },
611 &mut self.inner,
612 )
613 .await
614 }
615
616 #[cfg_attr(feature = "trace", tracing::instrument(skip_all))]
621 pub async fn list_packages(
622 &mut self,
623 req: ListPackagesRequest,
624 retry: Option<RetrySetting>,
625 ) -> Result<ListPackagesResponse, Status> {
626 let setting = retry.unwrap_or_else(default_setting);
627
628 invoke_fn(
629 Some(setting),
630 |client| async {
631 let request = create_request(format!("parent={}", req.parent), req.clone());
632 client
633 .list_packages(request)
634 .await
635 .map(|r| r.into_inner())
636 .map_err(|e| (e, client))
637 },
638 &mut self.inner,
639 )
640 .await
641 }
642
643 #[cfg_attr(feature = "trace", tracing::instrument(skip_all))]
648 pub async fn create_package_tag(
649 &mut self,
650 req: CreateTagRequest,
651 retry: Option<RetrySetting>,
652 ) -> Result<Tag, Status> {
653 let setting = retry.unwrap_or_else(default_setting);
654
655 invoke_fn(
656 Some(setting),
657 |client| async {
658 let request = create_request(format!("parent={}", req.parent), req.clone());
659 client
660 .create_tag(request)
661 .await
662 .map(|o| o.into_inner())
663 .map_err(|e| (e, client))
664 },
665 &mut self.inner,
666 )
667 .await
668 }
669
670 #[cfg_attr(feature = "trace", tracing::instrument(skip_all))]
675 pub async fn get_package_tag(&mut self, req: GetTagRequest, retry: Option<RetrySetting>) -> Result<Tag, Status> {
676 let setting = retry.unwrap_or_else(default_setting);
677
678 invoke_fn(
679 Some(setting),
680 |client| async {
681 let request = create_request(format!("name={}", req.name), req.clone());
682 client
683 .get_tag(request)
684 .await
685 .map(|o| o.into_inner())
686 .map_err(|e| (e, client))
687 },
688 &mut self.inner,
689 )
690 .await
691 }
692
693 #[cfg_attr(feature = "trace", tracing::instrument(skip_all))]
698 pub async fn delete_package_tag(
699 &mut self,
700 req: DeleteTagRequest,
701 retry: Option<RetrySetting>,
702 ) -> Result<(), Status> {
703 let setting = retry.unwrap_or_else(default_setting);
704
705 invoke_fn(
706 Some(setting),
707 |client| async {
708 let request = create_request(format!("name={}", req.name), req.clone());
709 client
710 .delete_tag(request)
711 .await
712 .map(|o| o.into_inner())
713 .map_err(|e| (e, client))
714 },
715 &mut self.inner,
716 )
717 .await
718 }
719
720 #[cfg_attr(feature = "trace", tracing::instrument(skip_all))]
725 pub async fn list_package_tags(
726 &mut self,
727 req: ListTagsRequest,
728 retry: Option<RetrySetting>,
729 ) -> Result<ListTagsResponse, Status> {
730 let setting = retry.unwrap_or_else(default_setting);
731
732 invoke_fn(
733 Some(setting),
734 |client| async {
735 let request = create_request(format!("parent={}", req.parent), req.clone());
736 client
737 .list_tags(request)
738 .await
739 .map(|o| o.into_inner())
740 .map_err(|e| (e, client))
741 },
742 &mut self.inner,
743 )
744 .await
745 }
746
747 #[cfg_attr(feature = "trace", tracing::instrument(skip_all))]
752 pub async fn update_package_tag(
753 &mut self,
754 req: UpdateTagRequest,
755 retry: Option<RetrySetting>,
756 ) -> Result<Tag, Status> {
757 let setting = retry.unwrap_or_else(default_setting);
758 let tag_name = match req.tag {
759 None => "".to_string(),
760 Some(ref t) => t.name.to_string(),
761 };
762
763 invoke_fn(
764 Some(setting),
765 |client| async {
766 let request = create_request(format!("tag.name={}", tag_name), req.clone());
767 client
768 .update_tag(request)
769 .await
770 .map(|o| o.into_inner())
771 .map_err(|e| (e, client))
772 },
773 &mut self.inner,
774 )
775 .await
776 }
777
778 #[cfg_attr(feature = "trace", tracing::instrument(skip_all))]
783 pub async fn delete_package_version(
784 &mut self,
785 req: DeleteVersionRequest,
786 retry: Option<RetrySetting>,
787 ) -> Result<(), Status> {
788 let setting = retry.unwrap_or_else(default_setting);
789
790 invoke_fn(
791 Some(setting),
792 |client| async {
793 let request = create_request(format!("name={}", req.name), req.clone());
794 client
795 .delete_version(request)
796 .await
797 .map(|_o| ())
798 .map_err(|e| (e, client))
799 },
800 &mut self.inner,
801 )
802 .await
803 }
804
805 #[cfg_attr(feature = "trace", tracing::instrument(skip_all))]
810 pub async fn get_package_version(
811 &mut self,
812 req: GetVersionRequest,
813 retry: Option<RetrySetting>,
814 ) -> Result<Version, Status> {
815 let setting = retry.unwrap_or_else(default_setting);
816
817 invoke_fn(
818 Some(setting),
819 |client| async {
820 let request = create_request(format!("name={}", req.name), req.clone());
821 client
822 .get_version(request)
823 .await
824 .map(|r| r.into_inner())
825 .map_err(|e| (e, client))
826 },
827 &mut self.inner,
828 )
829 .await
830 }
831
832 #[cfg_attr(feature = "trace", tracing::instrument(skip_all))]
837 pub async fn list_package_versions(
838 &mut self,
839 req: ListVersionsRequest,
840 retry: Option<RetrySetting>,
841 ) -> Result<ListVersionsResponse, Status> {
842 let setting = retry.unwrap_or_else(default_setting);
843
844 invoke_fn(
845 Some(setting),
846 |client| async {
847 let request = create_request(format!("parent={}", req.parent), req.clone());
848 client
849 .list_versions(request)
850 .await
851 .map(|r| r.into_inner())
852 .map_err(|e| (e, client))
853 },
854 &mut self.inner,
855 )
856 .await
857 }
858
859 #[cfg_attr(feature = "trace", tracing::instrument(skip_all))]
864 pub async fn list_python_packages(
865 &mut self,
866 req: ListPythonPackagesRequest,
867 retry: Option<RetrySetting>,
868 ) -> Result<ListPythonPackagesResponse, Status> {
869 let setting = retry.unwrap_or_else(default_setting);
870
871 invoke_fn(
872 Some(setting),
873 |client| async {
874 let request = create_request(format!("parent={}", req.parent), req.clone());
875 client
876 .list_python_packages(request)
877 .await
878 .map(|r| r.into_inner())
879 .map_err(|e| (e, client))
880 },
881 &mut self.inner,
882 )
883 .await
884 }
885
886 #[cfg_attr(feature = "trace", tracing::instrument(skip_all))]
891 pub async fn get_python_package(
892 &mut self,
893 req: GetPythonPackageRequest,
894 retry: Option<RetrySetting>,
895 ) -> Result<PythonPackage, Status> {
896 let setting = retry.unwrap_or_else(default_setting);
897
898 invoke_fn(
899 Some(setting),
900 |client| async {
901 let request = create_request(format!("name={}", req.name), req.clone());
902 client
903 .get_python_package(request)
904 .await
905 .map(|r| r.into_inner())
906 .map_err(|e| (e, client))
907 },
908 &mut self.inner,
909 )
910 .await
911 }
912
913 #[cfg_attr(feature = "trace", tracing::instrument(skip_all))]
918 pub async fn import_yum_artifacts(
919 &mut self,
920 req: ImportYumArtifactsRequest,
921 retry: Option<RetrySetting>,
922 ) -> Result<Operation<YumArtifact>, Status> {
923 let setting = retry.unwrap_or_else(default_setting);
924 invoke_fn(
925 Some(setting),
926 |client| async {
927 let request = create_request(format!("parent={}", req.parent), req.clone());
928 client.import_yum_artifacts(request).await.map_err(|e| (e, client))
929 },
930 &mut self.inner,
931 )
932 .await
933 .map(|d| Operation::new(self.lro_client.clone(), d.into_inner()))
934 }
935}