Skip to content

Commit 527eded

Browse files
Merge branch 'trunk' into feat/8679-replace-rest-api-feature-flag-with-ab-test
2 parents 0a14a3b + 73eff71 commit 527eded

File tree

38 files changed

+1050
-69
lines changed

38 files changed

+1050
-69
lines changed

Networking/Networking.xcodeproj/project.pbxproj

Lines changed: 52 additions & 0 deletions
Large diffs are not rendered by default.

Networking/Networking/Mapper/NewShipmentTrackingMapper.swift

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,12 @@ struct NewShipmentTrackingMapper: Mapper {
2222
.siteID: siteID,
2323
.orderID: orderID
2424
]
25-
return try decoder.decode(NewShipmentTrackingMapperEnvelope.self, from: response).shipmentTracking
25+
26+
do {
27+
return try decoder.decode(NewShipmentTrackingMapperEnvelope.self, from: response).shipmentTracking
28+
} catch {
29+
return try decoder.decode(ShipmentTracking.self, from: response)
30+
}
2631
}
2732
}
2833

Networking/Networking/Mapper/ProductShippingClassListMapper.swift

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,11 @@ struct ProductShippingClassListMapper: Mapper {
1717
.siteID: siteID
1818
]
1919

20-
return try decoder.decode(ProductShippingClassListEnvelope.self, from: response).data
20+
do {
21+
return try decoder.decode(ProductShippingClassListEnvelope.self, from: response).data
22+
} catch {
23+
return try decoder.decode([ProductShippingClass].self, from: response)
24+
}
2125
}
2226
}
2327

Networking/Networking/Mapper/ProductShippingClassMapper.swift

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,11 @@ struct ProductShippingClassMapper: Mapper {
1717
.siteID: siteID
1818
]
1919

20-
return try decoder.decode(ProductShippingClassEnvelope.self, from: response).productShippingClass
20+
do {
21+
return try decoder.decode(ProductShippingClassEnvelope.self, from: response).productShippingClass
22+
} catch {
23+
return try decoder.decode(ProductShippingClass.self, from: response)
24+
}
2125
}
2226
}
2327

Networking/Networking/Mapper/ProductTagListMapper.swift

Lines changed: 20 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,11 @@ struct ProductTagListMapper: Mapper {
2121

2222
switch responseType {
2323
case .load:
24-
return try decoder.decode(ProductTagListEnvelope.self, from: response).tags
24+
do {
25+
return try decoder.decode(ProductTagListEnvelope.self, from: response).tags
26+
} catch {
27+
return try decoder.decode([ProductTag].self, from: response)
28+
}
2529
case .create:
2630
return try decoder.decode(ProductTagListBatchCreateEnvelope.self, from: response).tags
2731
case .delete:
@@ -59,10 +63,16 @@ private struct ProductTagListBatchCreateEnvelope: Decodable {
5963

6064
init(from decoder: Decoder) throws {
6165
let container = try? decoder.container(keyedBy: CodingKeys.self)
62-
let nestedContainer = try? container?.nestedContainer(keyedBy: CodingKeys.self, forKey: .data)
6366

64-
let productTagsCreated: [ProductTagFromBatchCreation]? = nestedContainer?.failsafeDecodeIfPresent(Array<ProductTagFromBatchCreation>.self,
65-
forKey: .create)
67+
let productTagsCreated: [ProductTagFromBatchCreation]?
68+
do {
69+
let nestedContainer = try container?.nestedContainer(keyedBy: CodingKeys.self, forKey: .data)
70+
productTagsCreated = nestedContainer?.failsafeDecodeIfPresent(Array<ProductTagFromBatchCreation>.self,
71+
forKey: .create)
72+
} catch {
73+
productTagsCreated = container?.failsafeDecodeIfPresent(Array<ProductTagFromBatchCreation>.self,
74+
forKey: .create)
75+
}
6676
tags = productTagsCreated?
6777
.filter { $0.error == nil }
6878
.compactMap { (tagCreated) -> ProductTag? in
@@ -88,9 +98,12 @@ private struct ProductTagListBatchDeleteEnvelope: Decodable {
8898

8999
init(from decoder: Decoder) throws {
90100
let container = try? decoder.container(keyedBy: CodingKeys.self)
91-
let nestedContainer = try? container?.nestedContainer(keyedBy: CodingKeys.self, forKey: .data)
92-
93-
tags = nestedContainer?.failsafeDecodeIfPresent(Array<ProductTag>.self, forKey: .delete) ?? []
101+
do {
102+
let nestedContainer = try container?.nestedContainer(keyedBy: CodingKeys.self, forKey: .data)
103+
tags = nestedContainer?.failsafeDecodeIfPresent(Array<ProductTag>.self, forKey: .delete) ?? []
104+
} catch {
105+
tags = container?.failsafeDecodeIfPresent(Array<ProductTag>.self, forKey: .delete) ?? []
106+
}
94107
}
95108

96109
private enum CodingKeys: String, CodingKey {

Networking/Networking/Mapper/ShipmentTrackingListMapper.swift

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,11 @@ struct ShipmentTrackingListMapper: Mapper {
2727
.orderID: orderID
2828
]
2929

30-
return try decoder.decode(ShipmentTrackingListEnvelope.self, from: response).shipmentTrackings
30+
do {
31+
return try decoder.decode(ShipmentTrackingListEnvelope.self, from: response).shipmentTrackings
32+
} catch {
33+
return try decoder.decode([ShipmentTracking].self, from: response)
34+
}
3135
}
3236
}
3337

Networking/Networking/Mapper/ShipmentTrackingProviderListMapper.swift

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,13 @@ struct ShipmentTrackingProviderListMapper: Mapper {
1111

1212
func map(response: Data) throws -> [ShipmentTrackingProviderGroup] {
1313
let decoder = JSONDecoder()
14-
let rawDictionary = try? decoder.decode(ShipmentTrackingProviderListEnvelope.self, from: response).rawData
15-
return rawDictionary?.map({ ShipmentTrackingProviderGroup(name: $0.key, siteID: siteID, dictionary: $0.value) }) ?? []
14+
let rawDictionary: ShipmentTrackingProviderListEnvelope.RawData
15+
do {
16+
rawDictionary = try decoder.decode(ShipmentTrackingProviderListEnvelope.self, from: response).rawData
17+
} catch {
18+
rawDictionary = try decoder.decode(ShipmentTrackingProviderListEnvelope.RawData.self, from: response)
19+
}
20+
return rawDictionary.map({ ShipmentTrackingProviderGroup(name: $0.key, siteID: siteID, dictionary: $0.value) })
1621
}
1722
}
1823

@@ -21,7 +26,9 @@ struct ShipmentTrackingProviderListMapper: Mapper {
2126
/// the providers within a `data` key.
2227
///
2328
private struct ShipmentTrackingProviderListEnvelope: Decodable {
24-
let rawData: [String: [String: String]]
29+
typealias RawData = [String: [String: String]]
30+
31+
let rawData: RawData
2532

2633
private enum CodingKeys: String, CodingKey {
2734
case rawData = "data"

Networking/Networking/Mapper/TaxClassListMapper.swift

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,11 @@ struct TaxClassListMapper: Mapper {
1818
.siteID: siteID
1919
]
2020

21-
return try decoder.decode(TaxClassListEnvelope.self, from: response).taxClasses
21+
do {
22+
return try decoder.decode(TaxClassListEnvelope.self, from: response).taxClasses
23+
} catch {
24+
return try decoder.decode([TaxClass].self, from: response)
25+
}
2226
}
2327
}
2428

Networking/Networking/Remote/ProductShippingClassRemote.swift

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,12 @@ public class ProductShippingClassRemote: Remote {
2626
]
2727

2828
let path = "\(Path.models)"
29-
let request = JetpackRequest(wooApiVersion: .mark3, method: .get, siteID: siteID, path: path, parameters: parameters)
29+
let request = JetpackRequest(wooApiVersion: .mark3,
30+
method: .get,
31+
siteID: siteID,
32+
path: path,
33+
parameters: parameters,
34+
availableAsRESTRequest: true)
3035
let mapper = ProductShippingClassListMapper(siteID: siteID)
3136
enqueue(request, mapper: mapper, completion: completion)
3237
}
@@ -41,7 +46,12 @@ public class ProductShippingClassRemote: Remote {
4146
///
4247
public func loadOne(for siteID: Int64, remoteID: Int64, completion: @escaping (ProductShippingClass?, Error?) -> Void) {
4348
let path = "\(Path.models)/\(remoteID)"
44-
let request = JetpackRequest(wooApiVersion: .mark3, method: .get, siteID: siteID, path: path, parameters: nil)
49+
let request = JetpackRequest(wooApiVersion: .mark3,
50+
method: .get,
51+
siteID: siteID,
52+
path: path,
53+
parameters: nil,
54+
availableAsRESTRequest: true)
4555
let mapper = ProductShippingClassMapper(siteID: siteID)
4656

4757
enqueue(request, mapper: mapper, completion: completion)

Networking/Networking/Remote/ProductTagsRemote.swift

Lines changed: 18 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,12 @@ public final class ProductTagsRemote: Remote {
2525
]
2626

2727
let path = Path.tags
28-
let request = JetpackRequest(wooApiVersion: .mark3, method: .get, siteID: siteID, path: path, parameters: parameters)
28+
let request = JetpackRequest(wooApiVersion: .mark3,
29+
method: .get,
30+
siteID: siteID,
31+
path: path,
32+
parameters: parameters,
33+
availableAsRESTRequest: true)
2934
let mapper = ProductTagListMapper(siteID: siteID, responseType: .load)
3035

3136
enqueue(request, mapper: mapper, completion: completion)
@@ -47,7 +52,12 @@ public final class ProductTagsRemote: Remote {
4752
]
4853

4954
let path = Path.tagsBatch
50-
let request = JetpackRequest(wooApiVersion: .mark3, method: .post, siteID: siteID, path: path, parameters: parameters)
55+
let request = JetpackRequest(wooApiVersion: .mark3,
56+
method: .post,
57+
siteID: siteID,
58+
path: path,
59+
parameters: parameters,
60+
availableAsRESTRequest: true)
5161
let mapper = ProductTagListMapper(siteID: siteID, responseType: .create)
5262

5363
enqueue(request, mapper: mapper, completion: completion)
@@ -69,7 +79,12 @@ public final class ProductTagsRemote: Remote {
6979
]
7080

7181
let path = Path.tagsBatch
72-
let request = JetpackRequest(wooApiVersion: .mark3, method: .post, siteID: siteID, path: path, parameters: parameters)
82+
let request = JetpackRequest(wooApiVersion: .mark3,
83+
method: .post,
84+
siteID: siteID,
85+
path: path,
86+
parameters: parameters,
87+
availableAsRESTRequest: true)
7388
let mapper = ProductTagListMapper(siteID: siteID, responseType: .delete)
7489

7590
enqueue(request, mapper: mapper, completion: completion)

0 commit comments

Comments
 (0)