@@ -13,17 +13,6 @@ import Operations
13
13
import WireGuardKitTypes
14
14
15
15
public protocol APIQuerying : Sendable {
16
- func mullvadApiGetAddressList(
17
- retryStrategy: REST . RetryStrategy ,
18
- completionHandler: @escaping @Sendable ProxyCompletionHandler < [ AnyIPEndpoint ] >
19
- ) -> Cancellable
20
-
21
- func mullvadApiGetRelayList(
22
- retryStrategy: REST . RetryStrategy ,
23
- etag: String ? ,
24
- completionHandler: @escaping @Sendable ProxyCompletionHandler < REST . ServerRelaysCacheResponse >
25
- ) -> Cancellable
26
-
27
16
func getAddressList(
28
17
retryStrategy: REST . RetryStrategy ,
29
18
completionHandler: @escaping @Sendable ProxyCompletionHandler < [ AnyIPEndpoint ] >
@@ -68,76 +57,6 @@ extension REST {
68
57
)
69
58
}
70
59
71
- public func mullvadApiGetAddressList(
72
- retryStrategy: REST . RetryStrategy ,
73
- completionHandler: @escaping @Sendable ProxyCompletionHandler < [ AnyIPEndpoint ] >
74
- ) -> Cancellable {
75
- let responseHandler = rustResponseHandler (
76
- decoding: [ AnyIPEndpoint ] . self,
77
- with: responseDecoder
78
- )
79
-
80
- return createNetworkOperation (
81
- request: . getAddressList( retryStrategy) ,
82
- responseHandler: responseHandler,
83
- completionHandler: completionHandler
84
- )
85
- }
86
-
87
- public func mullvadApiGetRelayList(
88
- retryStrategy: REST . RetryStrategy ,
89
- etag: String ? ,
90
- completionHandler: @escaping @Sendable ProxyCompletionHandler < REST . ServerRelaysCacheResponse >
91
- ) -> Cancellable {
92
- if var etag {
93
- // Enforce weak validator to account for some backend caching quirks.
94
- if etag. starts ( with: " \" " ) {
95
- etag. insert ( contentsOf: " W/ " , at: etag. startIndex)
96
- }
97
- }
98
-
99
- let responseHandler = rustCustomResponseHandler { [ weak self] ( data, responseEtag) in
100
- // Discarding result since we're only interested in knowing that it's parseable.
101
- let canDecodeResponse = ( try ? self ? . responseDecoder. decode ( REST . ServerRelaysResponse. self, from: data) ) != nil
102
-
103
- return if canDecodeResponse {
104
- if let responseEtag, responseEtag == etag {
105
- REST . ServerRelaysCacheResponse. notModified
106
- } else {
107
- REST . ServerRelaysCacheResponse. newContent ( responseEtag, data)
108
- }
109
- } else {
110
- nil
111
- }
112
- }
113
-
114
- return createNetworkOperation (
115
- request: . getRelayList( retryStrategy, etag: etag) ,
116
- responseHandler: responseHandler,
117
- completionHandler: completionHandler
118
- )
119
- }
120
-
121
- private func createNetworkOperation< Success: Decodable > (
122
- request: APIRequest ,
123
- responseHandler: RustResponseHandler < Success > ,
124
- completionHandler: @escaping @Sendable ProxyCompletionHandler < Success >
125
- ) -> MullvadApiNetworkOperation < Success > {
126
- let networkOperation = MullvadApiNetworkOperation (
127
- name: request. name,
128
- dispatchQueue: dispatchQueue,
129
- request: request,
130
- transportProvider: configuration. apiTransportProvider,
131
- responseDecoder: responseDecoder,
132
- responseHandler: responseHandler,
133
- completionHandler: completionHandler
134
- )
135
-
136
- operationQueue. addOperation ( networkOperation)
137
-
138
- return networkOperation
139
- }
140
-
141
60
public func getAddressList(
142
61
retryStrategy: REST . RetryStrategy ,
143
62
completionHandler: @escaping @Sendable ProxyCompletionHandler < [ AnyIPEndpoint ] >
@@ -366,64 +285,15 @@ extension REST {
366
285
367
286
// MARK: - Response types
368
287
369
- public enum ServerRelaysCacheResponse : Sendable , Decodable {
370
- case notModified
371
- case newContent( _ etag: String ? , _ rawData: Data )
372
- }
373
-
374
288
private struct CreateApplePaymentRequest : Encodable , Sendable {
375
289
let receiptString : Data
376
290
}
377
291
378
- public enum CreateApplePaymentResponse : Sendable {
379
- case noTimeAdded( _ expiry: Date )
380
- case timeAdded( _ timeAdded: Int , _ newExpiry: Date )
381
-
382
- public var newExpiry : Date {
383
- switch self {
384
- case let . noTimeAdded( expiry) , let . timeAdded( _, expiry) :
385
- return expiry
386
- }
387
- }
388
-
389
- public var timeAdded : TimeInterval {
390
- switch self {
391
- case . noTimeAdded:
392
- return 0
393
- case let . timeAdded( timeAdded, _) :
394
- return TimeInterval ( timeAdded)
395
- }
396
- }
397
-
398
- /// Returns a formatted string for the `timeAdded` interval, i.e "30 days"
399
- public var formattedTimeAdded : String ? {
400
- let formatter = DateComponentsFormatter ( )
401
- formatter. allowedUnits = [ . day, . hour]
402
- formatter. unitsStyle = . full
403
-
404
- return formatter. string ( from: self . timeAdded)
405
- }
406
- }
407
-
408
292
private struct CreateApplePaymentRawResponse : Decodable , Sendable {
409
293
let timeAdded : Int
410
294
let newExpiry : Date
411
295
}
412
296
413
- public struct ProblemReportRequest : Encodable , Sendable {
414
- public let address : String
415
- public let message : String
416
- public let log : String
417
- public let metadata : [ String : String ]
418
-
419
- public init ( address: String , message: String , log: String , metadata: [ String : String ] ) {
420
- self . address = address
421
- self . message = message
422
- self . log = log
423
- self . metadata = metadata
424
- }
425
- }
426
-
427
297
private struct SubmitVoucherRequest : Encodable , Sendable {
428
298
let voucherCode : String
429
299
}
0 commit comments