| 743 | } |
| 744 | |
| 745 | async fn create_my_devices_integration( |
| 746 | &self, |
| 747 | request: Request<api::CreateMyDevicesIntegrationRequest>, |
| 748 | ) -> Result<Response<()>, Status> { |
| 749 | let req_int = match &request.get_ref().integration { |
| 750 | Some(v) => v, |
| 751 | None => { |
| 752 | return Err(Status::invalid_argument("integration is missing")); |
| 753 | } |
| 754 | }; |
| 755 | let app_id = Uuid::from_str(&req_int.application_id).map_err(|e| e.status())?; |
| 756 | |
| 757 | self.validator |
| 758 | .validate( |
| 759 | request.extensions(), |
| 760 | validator::ValidateApplicationAccess::new(validator::Flag::Update, app_id), |
| 761 | ) |
| 762 | .await?; |
| 763 | |
| 764 | let _ = application::create_integration(application::Integration { |
| 765 | application_id: app_id.into(), |
| 766 | kind: application::IntegrationKind::MyDevices, |
| 767 | configuration: application::IntegrationConfiguration::MyDevices( |
| 768 | application::MyDevicesConfiguration { |
| 769 | endpoint: req_int.endpoint.clone(), |
| 770 | }, |
| 771 | ), |
| 772 | ..Default::default() |
| 773 | }) |
| 774 | .await |
| 775 | .map_err(|e| e.status())?; |
| 776 | |
| 777 | let mut resp = Response::new(()); |
| 778 | resp.metadata_mut().insert( |
| 779 | "x-log-application_id", |
| 780 | req_int.application_id.parse().unwrap(), |
| 781 | ); |
| 782 | |
| 783 | Ok(resp) |
| 784 | } |
| 785 | |
| 786 | async fn get_my_devices_integration( |
| 787 | &self, |