diff options
| author | mojganii <mojgan.jelodar@codic.se> | 2025-03-20 15:54:50 +0100 |
|---|---|---|
| committer | mojganii <mojgan.jelodar@codic.se> | 2025-04-15 15:38:45 +0200 |
| commit | f8aeeb42fa5cc7f1cc428bb4b34cb8d5de09bb51 (patch) | |
| tree | 7c6c740793dc53b39ae916d5f688a81e94218c6f /mullvad-ios/src | |
| parent | 59f4f47a1ed3e89d6273ba1cb8a9749ef45e49b9 (diff) | |
| download | mullvadvpn-f8aeeb42fa5cc7f1cc428bb4b34cb8d5de09bb51.tar.xz mullvadvpn-f8aeeb42fa5cc7f1cc428bb4b34cb8d5de09bb51.zip | |
Call sendProblemReport from Rust in Swift
Diffstat (limited to 'mullvad-ios/src')
| -rw-r--r-- | mullvad-ios/src/api_client/mod.rs | 2 | ||||
| -rw-r--r-- | mullvad-ios/src/api_client/response.rs | 1 | ||||
| -rw-r--r-- | mullvad-ios/src/api_client/send_problem_report.rs | 30 |
3 files changed, 23 insertions, 10 deletions
diff --git a/mullvad-ios/src/api_client/mod.rs b/mullvad-ios/src/api_client/mod.rs index 234724530e..1018ef4b95 100644 --- a/mullvad-ios/src/api_client/mod.rs +++ b/mullvad-ios/src/api_client/mod.rs @@ -15,7 +15,7 @@ mod cancellation; mod completion; mod response; mod retry_strategy; -mod send_problem_report; +mod send_problem_report; #[repr(C)] pub struct SwiftApiContext(*const ApiContext); diff --git a/mullvad-ios/src/api_client/response.rs b/mullvad-ios/src/api_client/response.rs index 90f1552ffd..3b017e37c6 100644 --- a/mullvad-ios/src/api_client/response.rs +++ b/mullvad-ios/src/api_client/response.rs @@ -8,7 +8,6 @@ use mullvad_api::{ RelayListProxy, StatusCode, }; - #[repr(C)] pub struct SwiftMullvadApiResponse { body: *mut u8, diff --git a/mullvad-ios/src/api_client/send_problem_report.rs b/mullvad-ios/src/api_client/send_problem_report.rs index f96f8926d2..1d2547298f 100644 --- a/mullvad-ios/src/api_client/send_problem_report.rs +++ b/mullvad-ios/src/api_client/send_problem_report.rs @@ -13,7 +13,7 @@ use super::{ }; use mullvad_api::rest::Error; -use std::{collections::BTreeMap}; +use std::collections::BTreeMap; use std::slice; use tokio::task::JoinHandle; @@ -35,10 +35,15 @@ pub unsafe extern "C" fn mullvad_api_send_problem_report( let api_context = api_context.into_rust_context(); let retry_strategy = unsafe { retry_strategy.into_rust() }; - let problem_report_request = match unsafe { ProblemReportRequest::from_swift_parameters(request) } { + let problem_report_request = match unsafe { + ProblemReportRequest::from_swift_parameters(request) + } { Some(req) => req, None => { - let err = Error::ApiError(rest::StatusCode::BAD_REQUEST, "Failed to send problem report: invalid address, message, or log data.".to_string()); + let err = Error::ApiError( + rest::StatusCode::BAD_REQUEST, + "Failed to send problem report: invalid address, message, or log data.".to_string(), + ); log::error!("{err:?}"); completion.finish(SwiftMullvadApiResponse::rest_error(err)); return SwiftCancelHandle::empty(); @@ -72,7 +77,14 @@ async fn mullvad_api_send_problem_report_inner( let api = ProblemReportProxy::new(rest_client); let empty_metadata: BTreeMap<String, String> = BTreeMap::new(); - let future_factory = || api.porblem_report_response(&problem_report_request.address, &problem_report_request.message, &(String::from_utf8_lossy(&problem_report_request.log)), &empty_metadata); + let future_factory = || { + api.porblem_report_response( + &problem_report_request.address, + &problem_report_request.message, + &(String::from_utf8_lossy(&problem_report_request.log)), + &empty_metadata, + ) + }; let should_retry = |result: &Result<_, rest::Error>| match result { Err(err) => err.is_network_error(), @@ -81,7 +93,6 @@ async fn mullvad_api_send_problem_report_inner( let response = retry_future(future_factory, should_retry, retry_strategy.delays()).await?; SwiftMullvadApiResponse::with_body(response).await - } #[repr(C)] @@ -100,7 +111,6 @@ struct ProblemReportRequest { log: Vec<u8>, } - unsafe impl Send for SwiftProblemReportRequest {} impl ProblemReportRequest { @@ -119,6 +129,10 @@ impl ProblemReportRequest { let message = String::from_utf8(message_slice.to_vec()).ok()?; let log = log_slice.to_vec(); - Some(Self { address, message, log }) + Some(Self { + address, + message, + log, + }) } -}
\ No newline at end of file +} |
