| 1121 | } |
| 1122 | |
| 1123 | async fn update_aws_sns_integration( |
| 1124 | &self, |
| 1125 | request: Request<api::UpdateAwsSnsIntegrationRequest>, |
| 1126 | ) -> Result<Response<()>, Status> { |
| 1127 | let req_int = match &request.get_ref().integration { |
| 1128 | Some(v) => v, |
| 1129 | None => { |
| 1130 | return Err(Status::invalid_argument("integration is missing")); |
| 1131 | } |
| 1132 | }; |
| 1133 | let app_id = Uuid::from_str(&req_int.application_id).map_err(|e| e.status())?; |
| 1134 | |
| 1135 | self.validator |
| 1136 | .validate( |
| 1137 | request.extensions(), |
| 1138 | validator::ValidateApplicationAccess::new(validator::Flag::Update, app_id), |
| 1139 | ) |
| 1140 | .await?; |
| 1141 | |
| 1142 | let _ = application::update_integration(application::Integration { |
| 1143 | application_id: app_id.into(), |
| 1144 | kind: application::IntegrationKind::AwsSns, |
| 1145 | configuration: application::IntegrationConfiguration::AwsSns( |
| 1146 | application::AwsSnsConfiguration { |
| 1147 | encoding: req_int.encoding, |
| 1148 | region: req_int.region.clone(), |
| 1149 | access_key_id: req_int.access_key_id.clone(), |
| 1150 | secret_access_key: req_int.secret_access_key.clone(), |
| 1151 | topic_arn: req_int.topic_arn.clone(), |
| 1152 | }, |
| 1153 | ), |
| 1154 | ..Default::default() |
| 1155 | }) |
| 1156 | .await |
| 1157 | .map_err(|e| e.status())?; |
| 1158 | |
| 1159 | let mut resp = Response::new(()); |
| 1160 | resp.metadata_mut().insert( |
| 1161 | "x-log-application_id", |
| 1162 | req_int.application_id.parse().unwrap(), |
| 1163 | ); |
| 1164 | |
| 1165 | Ok(resp) |
| 1166 | } |
| 1167 | |
| 1168 | async fn delete_aws_sns_integration( |
| 1169 | &self, |