| 355 | } |
| 356 | |
| 357 | async fn update_http_integration( |
| 358 | &self, |
| 359 | request: Request<api::UpdateHttpIntegrationRequest>, |
| 360 | ) -> Result<Response<()>, Status> { |
| 361 | let req_int = match &request.get_ref().integration { |
| 362 | Some(v) => v, |
| 363 | None => { |
| 364 | return Err(Status::invalid_argument("integration is missing")); |
| 365 | } |
| 366 | }; |
| 367 | let app_id = Uuid::from_str(&req_int.application_id).map_err(|e| e.status())?; |
| 368 | |
| 369 | self.validator |
| 370 | .validate( |
| 371 | request.extensions(), |
| 372 | validator::ValidateApplicationAccess::new(validator::Flag::Update, app_id), |
| 373 | ) |
| 374 | .await?; |
| 375 | |
| 376 | let _ = application::update_integration(application::Integration { |
| 377 | application_id: app_id.into(), |
| 378 | kind: application::IntegrationKind::Http, |
| 379 | configuration: application::IntegrationConfiguration::Http( |
| 380 | application::HttpConfiguration { |
| 381 | headers: req_int.headers.clone(), |
| 382 | json: match req_int.encoding() { |
| 383 | api::Encoding::Protobuf => false, |
| 384 | api::Encoding::Json => true, |
| 385 | }, |
| 386 | event_endpoint_url: req_int.event_endpoint_url.clone(), |
| 387 | }, |
| 388 | ), |
| 389 | ..Default::default() |
| 390 | }) |
| 391 | .await |
| 392 | .map_err(|e| e.status())?; |
| 393 | |
| 394 | let mut resp = Response::new(()); |
| 395 | resp.metadata_mut().insert( |
| 396 | "x-log-application_id", |
| 397 | req_int.application_id.parse().unwrap(), |
| 398 | ); |
| 399 | |
| 400 | Ok(resp) |
| 401 | } |
| 402 | |
| 403 | async fn delete_http_integration( |
| 404 | &self, |