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

Method list_devices

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

Source from the content-addressed store, hash-verified

134 }
135
136 async fn list_devices(
137 &self,
138 request: Request<api::ListRelayDevicesRequest>,
139 ) -> Result<Response<api::ListRelayDevicesResponse>, Status> {
140 let req = request.get_ref();
141 let relay_dev_eui = EUI64::from_str(&req.relay_dev_eui).map_err(|e| e.status())?;
142
143 self.validator
144 .validate(
145 request.extensions(),
146 validator::ValidateDeviceAccess::new(validator::Flag::Read, relay_dev_eui),
147 )
148 .await?;
149
150 let filters = relay::DeviceFilters {
151 relay_dev_eui: Some(relay_dev_eui),
152 };
153
154 let count = relay::get_device_count(&filters)
155 .await
156 .map_err(|e| e.status())?;
157 let items = relay::list_devices(req.limit as i64, req.offset as i64, &filters)
158 .await
159 .map_err(|e| e.status())?;
160
161 let mut resp = Response::new(api::ListRelayDevicesResponse {
162 total_count: count as u32,
163 result: items
164 .iter()
165 .map(|d| api::RelayDeviceListItem {
166 dev_eui: d.dev_eui.to_string(),
167 name: d.name.clone(),
168 created_at: Some(helpers::datetime_to_prost_timestamp(&d.created_at)),
169 })
170 .collect(),
171 });
172
173 resp.metadata_mut()
174 .insert("x-log-relay_dev_eui", req.relay_dev_eui.parse().unwrap());
175 Ok(resp)
176 }
177}
178
179#[cfg(test)]

Callers 1

test_relayFunction · 0.45

Calls 9

statusMethod · 0.80
iterMethod · 0.80
to_stringMethod · 0.80
insertMethod · 0.80
unwrapMethod · 0.80
get_device_countFunction · 0.50
list_devicesFunction · 0.50
validateMethod · 0.45

Tested by 1

test_relayFunction · 0.36