| 598 | } |
| 599 | |
| 600 | async fn create_things_board_integration( |
| 601 | &self, |
| 602 | request: Request<api::CreateThingsBoardIntegrationRequest>, |
| 603 | ) -> Result<Response<()>, Status> { |
| 604 | let req_int = match &request.get_ref().integration { |
| 605 | Some(v) => v, |
| 606 | None => { |
| 607 | return Err(Status::invalid_argument("integration is missing")); |
| 608 | } |
| 609 | }; |
| 610 | let app_id = Uuid::from_str(&req_int.application_id).map_err(|e| e.status())?; |
| 611 | |
| 612 | self.validator |
| 613 | .validate( |
| 614 | request.extensions(), |
| 615 | validator::ValidateApplicationAccess::new(validator::Flag::Update, app_id), |
| 616 | ) |
| 617 | .await?; |
| 618 | |
| 619 | let i = application::Integration { |
| 620 | application_id: app_id.into(), |
| 621 | kind: application::IntegrationKind::ThingsBoard, |
| 622 | configuration: application::IntegrationConfiguration::ThingsBoard( |
| 623 | application::ThingsBoardConfiguration { |
| 624 | server: req_int.server.clone(), |
| 625 | }, |
| 626 | ), |
| 627 | ..Default::default() |
| 628 | }; |
| 629 | |
| 630 | let _ = application::create_integration(i) |
| 631 | .await |
| 632 | .map_err(|e| e.status())?; |
| 633 | |
| 634 | let mut resp = Response::new(()); |
| 635 | resp.metadata_mut().insert( |
| 636 | "x-log-application_id", |
| 637 | req_int.application_id.parse().unwrap(), |
| 638 | ); |
| 639 | |
| 640 | Ok(resp) |
| 641 | } |
| 642 | |
| 643 | async fn get_things_board_integration( |
| 644 | &self, |