summaryrefslogtreecommitdiffhomepage
path: root/mullvad-ios
diff options
context:
space:
mode:
authormojganii <mojgan.jelodar@codic.se>2025-03-20 15:54:50 +0100
committermojganii <mojgan.jelodar@codic.se>2025-04-15 15:38:45 +0200
commitf8aeeb42fa5cc7f1cc428bb4b34cb8d5de09bb51 (patch)
tree7c6c740793dc53b39ae916d5f688a81e94218c6f /mullvad-ios
parent59f4f47a1ed3e89d6273ba1cb8a9749ef45e49b9 (diff)
downloadmullvadvpn-f8aeeb42fa5cc7f1cc428bb4b34cb8d5de09bb51.tar.xz
mullvadvpn-f8aeeb42fa5cc7f1cc428bb4b34cb8d5de09bb51.zip
Call sendProblemReport from Rust in Swift
Diffstat (limited to 'mullvad-ios')
-rw-r--r--mullvad-ios/src/api_client/mod.rs2
-rw-r--r--mullvad-ios/src/api_client/response.rs1
-rw-r--r--mullvad-ios/src/api_client/send_problem_report.rs30
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
+}