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

Method create_aws_sns_integration

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

Source from the content-addressed store, hash-verified

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,

Callers 1

test_aws_sns_integrationFunction · 0.80

Calls 7

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

Tested by 1

test_aws_sns_integrationFunction · 0.64