| 1038 | } |
| 1039 | |
| 1040 | async fn create_aws_sns_integration( |
| 1041 | &self, |
| 1042 | request: Request<api::CreateAwsSnsIntegrationRequest>, |
| 1043 | ) -> Result<Response<()>, Status> { |
| 1044 | let req_int = match &request.get_ref().integration { |
| 1045 | Some(v) => v, |
| 1046 | None => { |
| 1047 | return Err(Status::invalid_argument("integration is missing")); |
| 1048 | } |
| 1049 | }; |
| 1050 | let app_id = Uuid::from_str(&req_int.application_id).map_err(|e| e.status())?; |
| 1051 | |
| 1052 | self.validator |
| 1053 | .validate( |
| 1054 | request.extensions(), |
| 1055 | validator::ValidateApplicationAccess::new(validator::Flag::Update, app_id), |
| 1056 | ) |
| 1057 | .await?; |
| 1058 | |
| 1059 | let _ = application::create_integration(application::Integration { |
| 1060 | application_id: app_id.into(), |
| 1061 | kind: application::IntegrationKind::AwsSns, |
| 1062 | configuration: application::IntegrationConfiguration::AwsSns( |
| 1063 | application::AwsSnsConfiguration { |
| 1064 | encoding: req_int.encoding, |
| 1065 | region: req_int.region.clone(), |
| 1066 | access_key_id: req_int.access_key_id.clone(), |
| 1067 | secret_access_key: req_int.secret_access_key.clone(), |
| 1068 | topic_arn: req_int.topic_arn.clone(), |
| 1069 | }, |
| 1070 | ), |
| 1071 | ..Default::default() |
| 1072 | }) |
| 1073 | .await |
| 1074 | .map_err(|e| e.status())?; |
| 1075 | |
| 1076 | let mut resp = Response::new(()); |
| 1077 | resp.metadata_mut().insert( |
| 1078 | "x-log-application_id", |
| 1079 | req_int.application_id.parse().unwrap(), |
| 1080 | ); |
| 1081 | |
| 1082 | Ok(resp) |
| 1083 | } |
| 1084 | |
| 1085 | async fn get_aws_sns_integration( |
| 1086 | &self, |