MCPcopy Create free account
hub / github.com/chirpstack/chirpstack / create_things_board_integration

Method create_things_board_integration

chirpstack/src/api/application.rs:600–641  ·  view source on GitHub ↗
(
        &self,
        request: Request<api::CreateThingsBoardIntegrationRequest>,
    )

Source from the content-addressed store, hash-verified

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,

Callers 1

Calls 6

create_integrationFunction · 0.85
statusMethod · 0.80
insertMethod · 0.80
unwrapMethod · 0.80
validateMethod · 0.45
intoMethod · 0.45

Tested by 1