diff options
| author | mojganii <mojgan.jelodar@codic.se> | 2025-04-09 17:00:15 +0200 |
|---|---|---|
| committer | mojganii <mojgan.jelodar@codic.se> | 2025-04-15 15:38:45 +0200 |
| commit | 9eab3722f672e8073218c9ce81999945ef095794 (patch) | |
| tree | eace99e5a5e6206923714cfcef89698089309791 /ios/MullvadRustRuntime/RustProblemReportRequest.swift | |
| parent | d7dcd81cc2c9238cb21d5036ee3dc4baadd2d02b (diff) | |
| download | mullvadvpn-9eab3722f672e8073218c9ce81999945ef095794.tar.xz mullvadvpn-9eab3722f672e8073218c9ce81999945ef095794.zip | |
Improve sendProblemReport based on feedbacks
Diffstat (limited to 'ios/MullvadRustRuntime/RustProblemReportRequest.swift')
| -rw-r--r-- | ios/MullvadRustRuntime/RustProblemReportRequest.swift | 48 |
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() + } +} |
