summaryrefslogtreecommitdiffhomepage
path: root/ios/MullvadRustRuntime/RustProblemReportRequest.swift
diff options
context:
space:
mode:
authormojganii <mojgan.jelodar@codic.se>2025-04-09 17:00:15 +0200
committermojganii <mojgan.jelodar@codic.se>2025-04-15 15:38:45 +0200
commit9eab3722f672e8073218c9ce81999945ef095794 (patch)
treeeace99e5a5e6206923714cfcef89698089309791 /ios/MullvadRustRuntime/RustProblemReportRequest.swift
parentd7dcd81cc2c9238cb21d5036ee3dc4baadd2d02b (diff)
downloadmullvadvpn-9eab3722f672e8073218c9ce81999945ef095794.tar.xz
mullvadvpn-9eab3722f672e8073218c9ce81999945ef095794.zip
Improve sendProblemReport based on feedbacks
Diffstat (limited to 'ios/MullvadRustRuntime/RustProblemReportRequest.swift')
-rw-r--r--ios/MullvadRustRuntime/RustProblemReportRequest.swift48
1 files changed, 48 insertions, 0 deletions
diff --git a/ios/MullvadRustRuntime/RustProblemReportRequest.swift b/ios/MullvadRustRuntime/RustProblemReportRequest.swift
new file mode 100644
index 0000000000..677ced4dfb
--- /dev/null
+++ b/ios/MullvadRustRuntime/RustProblemReportRequest.swift
@@ -0,0 +1,48 @@
+//
+// RustProblemReportRequest.swift
+// MullvadVPN
+//
+// Created by Mojgan on 2025-03-21.
+// Copyright © 2025 Mullvad VPN AB. All rights reserved.
+//
+import MullvadLogging
+import MullvadTypes
+
+final public class RustProblemReportRequest {
+ private let logger = Logger(label: "RustProblemReportRequest")
+ private let addressPointer: UnsafePointer<CChar>?
+ private let messagePointer: UnsafePointer<CChar>?
+ private let logPointer: UnsafePointer<CChar>?
+ private let problemReportMetaData: ProblemReportMetadata
+
+ public init(from request: ProblemReportRequest) {
+ self.problemReportMetaData = swift_problem_report_metadata_new()
+ self.addressPointer = request.address.toCStringPointer()
+ self.messagePointer = request.message.toCStringPointer()
+ self.logPointer = request.log.toCStringPointer()
+
+ for (key, value) in request.metadata {
+ let isAdded = swift_problem_report_metadata_add(problemReportMetaData, key, value)
+ if !isAdded {
+ logger
+ .error("Failed to add metadata. Key: '\(key)' might be invalid or contain unsupported characters.")
+ }
+ }
+ }
+
+ public func toRust() -> SwiftProblemReportRequest {
+ SwiftProblemReportRequest(
+ address: addressPointer,
+ message: messagePointer,
+ log: logPointer,
+ metadata: problemReportMetaData
+ )
+ }
+
+ deinit {
+ swift_problem_report_metadata_free(problemReportMetaData)
+ addressPointer?.deallocate()
+ messagePointer?.deallocate()
+ logPointer?.deallocate()
+ }
+}