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

Method update

chirpstack/src/api/gateway.rs:127–172  ·  view source on GitHub ↗
(
        &self,
        request: Request<api::UpdateGatewayRequest>,
    )

Source from the content-addressed store, hash-verified

125 }
126
127 async fn update(
128 &self,
129 request: Request<api::UpdateGatewayRequest>,
130 ) -> Result<Response<()>, Status> {
131 let req_gw = match &request.get_ref().gateway {
132 Some(v) => v,
133 None => {
134 return Err(Status::invalid_argument("gateway is missing"));
135 }
136 };
137 let gw_id = EUI64::from_str(&req_gw.gateway_id).map_err(|e| e.status())?;
138
139 self.validator
140 .validate(
141 request.extensions(),
142 validator::ValidateGatewayAccess::new(validator::Flag::Update, gw_id),
143 )
144 .await?;
145
146 let (lat, lon, alt) = match &req_gw.location {
147 Some(v) => (v.latitude, v.longitude, v.altitude as f32),
148 None => (0.0, 0.0, 0.0),
149 };
150
151 // update
152 let _ = gateway::update(gateway::Gateway {
153 gateway_id: gw_id,
154 name: req_gw.name.clone(),
155 description: req_gw.description.clone(),
156 latitude: lat,
157 longitude: lon,
158 altitude: alt,
159 tags: fields::KeyValue::new(req_gw.tags.clone()),
160 stats_interval_secs: req_gw.stats_interval as i32,
161 downlink_priority: req_gw.downlink_priority as i16,
162 ..Default::default()
163 })
164 .await
165 .map_err(|e| e.status())?;
166
167 let mut resp = Response::new(());
168 resp.metadata_mut()
169 .insert("x-log-gateway_id", req_gw.gateway_id.parse().unwrap());
170
171 Ok(resp)
172 }
173
174 async fn delete(
175 &self,

Callers 1

test_gatewayFunction · 0.45

Calls 5

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

Tested by 1

test_gatewayFunction · 0.36