| 172 | } |
| 173 | |
| 174 | async fn delete( |
| 175 | &self, |
| 176 | request: Request<api::DeleteGatewayRequest>, |
| 177 | ) -> Result<Response<()>, Status> { |
| 178 | let req = request.get_ref(); |
| 179 | let gw_id = EUI64::from_str(&req.gateway_id).map_err(|e| e.status())?; |
| 180 | |
| 181 | self.validator |
| 182 | .validate( |
| 183 | request.extensions(), |
| 184 | validator::ValidateGatewayAccess::new(validator::Flag::Delete, gw_id), |
| 185 | ) |
| 186 | .await?; |
| 187 | |
| 188 | gateway::delete(&gw_id).await.map_err(|e| e.status())?; |
| 189 | |
| 190 | let mut resp = Response::new(()); |
| 191 | resp.metadata_mut() |
| 192 | .insert("x-log-gateway_id", req.gateway_id.parse().unwrap()); |
| 193 | |
| 194 | Ok(resp) |
| 195 | } |
| 196 | |
| 197 | async fn list( |
| 198 | &self, |