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

Method add_device

chirpstack/src/api/relay.rs:68–100  ·  view source on GitHub ↗
(
        &self,
        request: Request<api::AddRelayDeviceRequest>,
    )

Source from the content-addressed store, hash-verified

66 }
67
68 async fn add_device(
69 &self,
70 request: Request<api::AddRelayDeviceRequest>,
71 ) -> Result<Response<()>, Status> {
72 let req = request.get_ref();
73 let relay_dev_eui = EUI64::from_str(&req.relay_dev_eui).map_err(|e| e.status())?;
74 let device_dev_eui = EUI64::from_str(&req.device_dev_eui).map_err(|e| e.status())?;
75
76 self.validator
77 .validate(
78 request.extensions(),
79 validator::ValidateDeviceAccess::new(validator::Flag::Update, relay_dev_eui),
80 )
81 .await?;
82 self.validator
83 .validate(
84 request.extensions(),
85 validator::ValidateDeviceAccess::new(validator::Flag::Update, device_dev_eui),
86 )
87 .await?;
88
89 relay::add_device(relay_dev_eui, device_dev_eui)
90 .await
91 .map_err(|e| e.status())?;
92
93 let mut resp = Response::new(());
94 resp.metadata_mut()
95 .insert("x-log-relay_dev_eui", req.relay_dev_eui.parse().unwrap());
96 resp.metadata_mut()
97 .insert("x-log-device_dev_eui", req.device_dev_eui.parse().unwrap());
98
99 Ok(resp)
100 }
101
102 async fn remove_device(
103 &self,

Callers 1

test_relayFunction · 0.45

Calls 5

statusMethod · 0.80
insertMethod · 0.80
unwrapMethod · 0.80
add_deviceFunction · 0.50
validateMethod · 0.45

Tested by 1

test_relayFunction · 0.36