diff options
| author | Jonatan Rhodin <jonatan.rhodin@mullvad.net> | 2025-06-17 16:55:21 +0200 |
|---|---|---|
| committer | Jonatan Rhodin <jonatan.rhodin@mullvad.net> | 2025-06-24 14:22:23 +0200 |
| commit | 14fcbe159ea35ebd4e4d0adebd182e47631335cb (patch) | |
| tree | acc327998e3fa82c06c61c064bf0b370b6adc18b /mullvad-daemon/src/management_interface.rs | |
| parent | 41a021c7d4efdb74b1c71e7567d22ffc930411c4 (diff) | |
| download | mullvadvpn-14fcbe159ea35ebd4e4d0adebd182e47631335cb.tar.xz mullvadvpn-14fcbe159ea35ebd4e4d0adebd182e47631335cb.zip | |
Enable support for creating a custom list with locations
Diffstat (limited to 'mullvad-daemon/src/management_interface.rs')
| -rw-r--r-- | mullvad-daemon/src/management_interface.rs | 18 |
1 files changed, 15 insertions, 3 deletions
diff --git a/mullvad-daemon/src/management_interface.rs b/mullvad-daemon/src/management_interface.rs index 5695683fcf..aef1d17c45 100644 --- a/mullvad-daemon/src/management_interface.rs +++ b/mullvad-daemon/src/management_interface.rs @@ -4,10 +4,12 @@ use futures::{ StreamExt, }; use mullvad_api::{rest::Error as RestError, StatusCode}; +use mullvad_management_interface::types::FromProtobufTypeError; use mullvad_management_interface::{ types::{self, daemon_event, management_service_server::ManagementService}, Code, Request, Response, ServerJoinHandle, Status, }; +use mullvad_types::relay_constraints::GeographicLocationConstraint; use mullvad_types::{ account::AccountNumber, relay_constraints::{ @@ -20,6 +22,7 @@ use mullvad_types::{ version, wireguard::{RotationInterval, RotationIntervalError}, }; +use std::collections::BTreeSet; use std::{ path::Path, str::FromStr, @@ -663,13 +666,22 @@ impl ManagementService for ManagementServiceImpl { // Custom lists // - async fn create_custom_list(&self, request: Request<String>) -> ServiceResult<String> { + async fn create_custom_list( + &self, + request: Request<types::NewCustomList>, + ) -> ServiceResult<String> { log::debug!("create_custom_list"); + let request = request.into_inner(); + let locations = request + .locations + .into_iter() + .map(GeographicLocationConstraint::try_from) + .collect::<Result<BTreeSet<_>, FromProtobufTypeError>>()?; let (tx, rx) = oneshot::channel(); - self.send_command_to_daemon(DaemonCommand::CreateCustomList(tx, request.into_inner()))?; + self.send_command_to_daemon(DaemonCommand::CreateCustomList(tx, request.name, locations))?; self.wait_for_result(rx) .await? - .map(|response| Response::new(response.to_string())) + .map(|id| Response::new(id.to_string())) .map_err(map_daemon_error) } |
