summaryrefslogtreecommitdiffhomepage
path: root/ios/MullvadRustRuntime/RustProblemReportRequest.swift
diff options
context:
space:
mode:
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()
+ }
+}