summaryrefslogtreecommitdiffhomepage
path: root/ios/MullvadREST/MullvadAPI
diff options
context:
space:
mode:
Diffstat (limited to 'ios/MullvadREST/MullvadAPI')
-rw-r--r--ios/MullvadREST/MullvadAPI/APIRequest/APIRequest.swift5
-rw-r--r--ios/MullvadREST/MullvadAPI/MullvadApiRequestFactory.swift28
2 files changed, 33 insertions, 0 deletions
diff --git a/ios/MullvadREST/MullvadAPI/APIRequest/APIRequest.swift b/ios/MullvadREST/MullvadAPI/APIRequest/APIRequest.swift
index 68e7e41663..7810230464 100644
--- a/ios/MullvadREST/MullvadAPI/APIRequest/APIRequest.swift
+++ b/ios/MullvadREST/MullvadAPI/APIRequest/APIRequest.swift
@@ -9,6 +9,8 @@
public enum APIRequest: Codable, Sendable {
case getAddressList(_ retryStrategy: REST.RetryStrategy)
case getRelayList(_ retryStrategy: REST.RetryStrategy, etag: String?)
+ case sendProblemReport(_ retryStrategy: REST.RetryStrategy, problemReportRequest: REST.ProblemReportRequest)
+
case createAccount(_ retryStrategy: REST.RetryStrategy)
case getAccount(_ retryStrategy: REST.RetryStrategy, accountNumber: String)
case deleteAccount(_ retryStrategy: REST.RetryStrategy, accountNumber: String)
@@ -19,6 +21,8 @@ public enum APIRequest: Codable, Sendable {
"get-address-list"
case .getRelayList:
"get-relay-list"
+ case .sendProblemReport:
+ "send-problem-report"
case .createAccount:
"create-account"
case .getAccount:
@@ -33,6 +37,7 @@ public enum APIRequest: Codable, Sendable {
case
let .getAddressList(strategy),
let .getRelayList(strategy, _),
+ let .sendProblemReport(strategy, _),
let .createAccount(strategy),
let .getAccount(strategy, _),
let .deleteAccount(strategy, _):
diff --git a/ios/MullvadREST/MullvadAPI/MullvadApiRequestFactory.swift b/ios/MullvadREST/MullvadAPI/MullvadApiRequestFactory.swift
index 298d3ac31f..970f70ef76 100644
--- a/ios/MullvadREST/MullvadAPI/MullvadApiRequestFactory.swift
+++ b/ios/MullvadREST/MullvadAPI/MullvadApiRequestFactory.swift
@@ -39,6 +39,13 @@ public struct MullvadApiRequestFactory: Sendable {
retryStrategy.toRustStrategy(),
etag
))
+ case let .sendProblemReport(retryStrategy, problemReportRequest):
+ MullvadApiCancellable(handle: mullvad_api_send_problem_report(
+ apiContext.context,
+ rawCompletionPointer,
+ retryStrategy.toRustStrategy(),
+ problemReportRequest.toRust()
+ ))
case let .getAccount(retryStrategy, accountNumber: accountNumber):
MullvadApiCancellable(handle: mullvad_api_get_account(
apiContext.context,
@@ -67,3 +74,24 @@ public struct MullvadApiRequestFactory: Sendable {
extension REST {
public typealias MullvadApiRequestHandler = (((MullvadApiResponse) throws -> Void)?) -> MullvadApiCancellable
}
+
+private extension REST.ProblemReportRequest {
+ func toRust() -> UnsafePointer<SwiftProblemReportRequest> {
+ let structPointer = UnsafeMutablePointer<SwiftProblemReportRequest>.allocate(capacity: 1)
+
+ let addressPointer = address.toUnsafePointer()
+ let messagePointer = message.toUnsafePointer()
+ let logPointer = log.toUnsafePointer()
+
+ structPointer.initialize(to: SwiftProblemReportRequest(
+ address: addressPointer,
+ address_len: UInt(address.utf8.count),
+ message: messagePointer,
+ message_len: UInt(message.utf8.count),
+ log: logPointer,
+ log_len: UInt(log.utf8.count)
+ ))
+
+ return UnsafePointer(structPointer)
+ }
+}