Skip to content

Commit 6ef1b05

Browse files
authored
Merge pull request #8649 from woocommerce/feat/8648-ipp-migration
2 parents 94e5e5c + 9efcea3 commit 6ef1b05

File tree

13 files changed

+280
-18
lines changed

13 files changed

+280
-18
lines changed

Networking/Networking.xcodeproj/project.pbxproj

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -717,6 +717,7 @@
717717
DE50296328C609DE00551736 /* jetpack-user-not-connected.json in Resources */ = {isa = PBXBuildFile; fileRef = DE50296228C609DE00551736 /* jetpack-user-not-connected.json */; };
718718
DE50296528C60A8000551736 /* JetpackUserMapperTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = DE50296428C60A8000551736 /* JetpackUserMapperTests.swift */; };
719719
DE5CA111288A3E080077BEF9 /* product-malformed-variations-and-image-alt.json in Resources */ = {isa = PBXBuildFile; fileRef = DE5CA110288A3E080077BEF9 /* product-malformed-variations-and-image-alt.json */; };
720+
DE66C5572976913C00DAA978 /* wcpay-charge-card-present-without-data.json in Resources */ = {isa = PBXBuildFile; fileRef = DE66C5562976913C00DAA978 /* wcpay-charge-card-present-without-data.json */; };
720721
DE66C5532976508300DAA978 /* CookieNonceAuthenticator.swift in Sources */ = {isa = PBXBuildFile; fileRef = DE66C5522976508300DAA978 /* CookieNonceAuthenticator.swift */; };
721722
DE6F308727966FEF004E1C9A /* CouponReportListMapperTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = DE6F308627966FEF004E1C9A /* CouponReportListMapperTests.swift */; };
722723
DE74F29A27E08F5A0002FE59 /* SiteSettingMapper.swift in Sources */ = {isa = PBXBuildFile; fileRef = DE74F29927E08F5A0002FE59 /* SiteSettingMapper.swift */; };
@@ -1555,6 +1556,7 @@
15551556
DE50296228C609DE00551736 /* jetpack-user-not-connected.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = "jetpack-user-not-connected.json"; sourceTree = "<group>"; };
15561557
DE50296428C60A8000551736 /* JetpackUserMapperTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = JetpackUserMapperTests.swift; sourceTree = "<group>"; };
15571558
DE5CA110288A3E080077BEF9 /* product-malformed-variations-and-image-alt.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = "product-malformed-variations-and-image-alt.json"; sourceTree = "<group>"; };
1559+
DE66C5562976913C00DAA978 /* wcpay-charge-card-present-without-data.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = "wcpay-charge-card-present-without-data.json"; sourceTree = "<group>"; };
15581560
DE66C5522976508300DAA978 /* CookieNonceAuthenticator.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CookieNonceAuthenticator.swift; sourceTree = "<group>"; };
15591561
DE6F308627966FEF004E1C9A /* CouponReportListMapperTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CouponReportListMapperTests.swift; sourceTree = "<group>"; };
15601562
DE74F29927E08F5A0002FE59 /* SiteSettingMapper.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SiteSettingMapper.swift; sourceTree = "<group>"; };
@@ -2185,6 +2187,7 @@
21852187
B559EBA820A0B5B100836CD4 /* Responses */ = {
21862188
isa = PBXGroup;
21872189
children = (
2190+
DE66C5562976913C00DAA978 /* wcpay-charge-card-present-without-data.json */,
21882191
DE4F2A432975684900B0701C /* site-api-without-data.json */,
21892192
DE4F2A3D29750EF400B0701C /* inbox-note-list-without-data.json */,
21902193
DE4F2A3E29750EF400B0701C /* inbox-note-without-data.json */,
@@ -3079,6 +3082,7 @@
30793082
31A451CC27863A2E00FE81AA /* stripe-account-rejected-fraud.json in Resources */,
30803083
31A451D827863A2E00FE81AA /* stripe-account-restricted-overdue.json in Resources */,
30813084
D865CE69278CA245002C8520 /* stripe-payment-intent-unknown-status.json in Resources */,
3085+
DE66C5572976913C00DAA978 /* wcpay-charge-card-present-without-data.json in Resources */,
30823086
DE42F9652967F34400D514C2 /* refund-single-without-data.json in Resources */,
30833087
0205021C27C86B9700FB1C6B /* inbox-note-without-isRead.json in Resources */,
30843088
24F98C622502EFF600F49B68 /* feature-flags-load-all.json in Resources */,

Networking/Networking/Mapper/ReaderConnectionTokenMapper.swift

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,11 @@ struct ReaderConnectionTokenMapper: Mapper {
77
func map(response: Data) throws -> ReaderConnectionToken {
88
let decoder = JSONDecoder()
99

10-
return try decoder.decode(ReaderConnectionTokenEnvelope.self, from: response).token
10+
do {
11+
return try decoder.decode(ReaderConnectionTokenEnvelope.self, from: response).token
12+
} catch {
13+
return try decoder.decode(ReaderConnectionToken.self, from: response)
14+
}
1115
}
1216
}
1317

Networking/Networking/Mapper/RemotePaymentIntentMapper.swift

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,11 @@ struct RemotePaymentIntentMapper: Mapper {
99
func map(response: Data) throws -> RemotePaymentIntent {
1010
let decoder = JSONDecoder()
1111

12-
return try decoder.decode(WCPayPaymentIntentEnvelope.self, from: response).paymentIntent
12+
do {
13+
return try decoder.decode(WCPayPaymentIntentEnvelope.self, from: response).paymentIntent
14+
} catch {
15+
return try decoder.decode(RemotePaymentIntent.self, from: response)
16+
}
1317
}
1418
}
1519

Networking/Networking/Mapper/RemoteReaderLocationMapper.swift

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,11 @@ struct RemoteReaderLocationMapper: Mapper {
99
func map(response: Data) throws -> RemoteReaderLocation {
1010
let decoder = JSONDecoder()
1111

12-
return try decoder.decode(RemoteReaderLocationEnvelope.self, from: response).location
12+
do {
13+
return try decoder.decode(RemoteReaderLocationEnvelope.self, from: response).location
14+
} catch {
15+
return try decoder.decode(RemoteReaderLocation.self, from: response)
16+
}
1317
}
1418
}
1519

Networking/Networking/Mapper/StripeAccountMapper.swift

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,11 @@ struct StripeAccountMapper: Mapper {
1414
/// can cross that bridge when we need those decoded.
1515
decoder.dateDecodingStrategy = .secondsSince1970
1616

17-
return try decoder.decode(StripeAccountEnvelope.self, from: response).account
17+
do {
18+
return try decoder.decode(StripeAccountEnvelope.self, from: response).account
19+
} catch {
20+
return try decoder.decode(StripeAccount.self, from: response)
21+
}
1822
}
1923
}
2024

Networking/Networking/Mapper/WCPayAccountMapper.swift

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,9 +18,15 @@ struct WCPayAccountMapper: Mapper {
1818
/// indicating that the plugin was active but the merchant had not on-boarded (and therefore has no account.)
1919
if let _ = try? decoder.decode(WCPayNullAccountEnvelope.self, from: response) {
2020
return WCPayAccount.noAccount
21+
} else if let _ = try? decoder.decode([String].self, from: response) {
22+
return WCPayAccount.noAccount
2123
}
2224

23-
return try decoder.decode(WCPayAccountEnvelope.self, from: response).account
25+
do {
26+
return try decoder.decode(WCPayAccountEnvelope.self, from: response).account
27+
} catch {
28+
return try decoder.decode(WCPayAccount.self, from: response)
29+
}
2430
}
2531
}
2632

Networking/Networking/Mapper/WCPayChargeMapper.swift

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,11 @@ struct WCPayChargeMapper: Mapper {
1616
/// can cross that bridge when we need those decoded.
1717
decoder.dateDecodingStrategy = .secondsSince1970
1818

19-
return try decoder.decode(WCPayChargeEnvelope.self, from: response).charge
19+
do {
20+
return try decoder.decode(WCPayChargeEnvelope.self, from: response).charge
21+
} catch {
22+
return try decoder.decode(WCPayCharge.self, from: response)
23+
}
2024
}
2125
}
2226

Networking/Networking/Model/WordPressSite.swift

Lines changed: 27 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,32 @@ public struct WordPressSite: Decodable, Equatable {
4242
self.gmtOffset = gmtOffset
4343
self.namespaces = namespaces
4444
}
45+
46+
/// Decodable Conformance.
47+
///
48+
public init(from decoder: Decoder) throws {
49+
let container = try decoder.container(keyedBy: CodingKeys.self)
50+
let name = try container.decode(String.self, forKey: .name)
51+
let description = try container.decode(String.self, forKey: .description)
52+
let url = try container.decode(String.self, forKey: .url)
53+
let timezone = try container.decode(String.self, forKey: .timezone)
54+
let gmtOffset: String = try {
55+
do {
56+
return try container.decode(String.self, forKey: .gmtOffset)
57+
} catch {
58+
let double = try container.decode(Double.self, forKey: .gmtOffset)
59+
return double.description
60+
}
61+
}()
62+
let namespaces = try container.decode([String].self, forKey: .namespaces)
63+
64+
self.init(name: name,
65+
description: description,
66+
url: url,
67+
timezone: timezone,
68+
gmtOffset: gmtOffset,
69+
namespaces: namespaces)
70+
}
4571
}
4672

4773
public extension WordPressSite {
@@ -79,7 +105,7 @@ private extension WordPressSite {
79105
}
80106

81107
enum Constants {
82-
static let adminPath = "/wp-admin"
108+
static let adminPath = "/wp-admin/"
83109
static let loginPath = "/wp-login.php"
84110
static let wooNameSpace = "wc/"
85111
}

Networking/Networking/Remote/StripeRemote.swift

Lines changed: 23 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,12 @@ public class StripeRemote: Remote {
1212
completion: @escaping (Result<StripeAccount, Error>) -> Void) {
1313
let parameters = [AccountParameterKeys.fields: AccountParameterValues.fieldValues]
1414

15-
let request = JetpackRequest(wooApiVersion: .mark3, method: .get, siteID: siteID, path: Path.accounts, parameters: parameters)
15+
let request = JetpackRequest(wooApiVersion: .mark3,
16+
method: .get,
17+
siteID: siteID,
18+
path: Path.accounts,
19+
parameters: parameters,
20+
availableAsRESTRequest: true)
1621

1722
let mapper = StripeAccountMapper()
1823

@@ -36,7 +41,12 @@ public class StripeRemote: Remote {
3641
CaptureOrderPaymentKeys.paymentIntentID: paymentIntentID
3742
]
3843

39-
let request = JetpackRequest(wooApiVersion: .mark3, method: .post, siteID: siteID, path: path, parameters: parameters)
44+
let request = JetpackRequest(wooApiVersion: .mark3,
45+
method: .post,
46+
siteID: siteID,
47+
path: path,
48+
parameters: parameters,
49+
availableAsRESTRequest: true)
4050

4151
let mapper = RemotePaymentIntentMapper()
4252

@@ -53,7 +63,11 @@ extension StripeRemote {
5363
/// - completion: Closure to be executed upon completion.
5464
public func loadConnectionToken(for siteID: Int64,
5565
completion: @escaping(Result<ReaderConnectionToken, Error>) -> Void) {
56-
let request = JetpackRequest(wooApiVersion: .mark3, method: .post, siteID: siteID, path: Path.connectionTokens)
66+
let request = JetpackRequest(wooApiVersion: .mark3,
67+
method: .post,
68+
siteID: siteID,
69+
path: Path.connectionTokens,
70+
availableAsRESTRequest: true)
5771

5872
let mapper = ReaderConnectionTokenMapper()
5973

@@ -68,7 +82,12 @@ extension StripeRemote {
6882
///
6983
public func loadDefaultReaderLocation(for siteID: Int64,
7084
onCompletion: @escaping (Result<RemoteReaderLocation, Error>) -> Void) {
71-
let request = JetpackRequest(wooApiVersion: .mark3, method: .get, siteID: siteID, path: Path.locations, parameters: [:])
85+
let request = JetpackRequest(wooApiVersion: .mark3,
86+
method: .get,
87+
siteID: siteID,
88+
path: Path.locations,
89+
parameters: [:],
90+
availableAsRESTRequest: true)
7291

7392
let mapper = RemoteReaderLocationMapper()
7493

Networking/Networking/Remote/WCPayRemote.swift

Lines changed: 29 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,12 @@ public class WCPayRemote: Remote {
1212
completion: @escaping (Result<WCPayAccount, Error>) -> Void) {
1313
let parameters = [AccountParameterKeys.fields: AccountParameterValues.fieldValues]
1414

15-
let request = JetpackRequest(wooApiVersion: .mark3, method: .get, siteID: siteID, path: Path.accounts, parameters: parameters)
15+
let request = JetpackRequest(wooApiVersion: .mark3,
16+
method: .get,
17+
siteID: siteID,
18+
path: Path.accounts,
19+
parameters: parameters,
20+
availableAsRESTRequest: true)
1621

1722
let mapper = WCPayAccountMapper()
1823

@@ -34,7 +39,12 @@ public class WCPayRemote: Remote {
3439
CaptureOrderPaymentKeys.paymentIntentID: paymentIntentID
3540
]
3641

37-
let request = JetpackRequest(wooApiVersion: .mark3, method: .post, siteID: siteID, path: path, parameters: parameters)
42+
let request = JetpackRequest(wooApiVersion: .mark3,
43+
method: .post,
44+
siteID: siteID,
45+
path: path,
46+
parameters: parameters,
47+
availableAsRESTRequest: true)
3848

3949
let mapper = RemotePaymentIntentMapper()
4050

@@ -52,7 +62,12 @@ public class WCPayRemote: Remote {
5262
completion: @escaping (Result<WCPayCharge, Error>) -> Void) {
5363
let path = "\(Path.charges)/\(chargeID)"
5464

55-
let request = JetpackRequest(wooApiVersion: .mark3, method: .get, siteID: siteID, path: path, parameters: [:])
65+
let request = JetpackRequest(wooApiVersion: .mark3,
66+
method: .get,
67+
siteID: siteID,
68+
path: path,
69+
parameters: [:],
70+
availableAsRESTRequest: true)
5671

5772
let mapper = WCPayChargeMapper(siteID: siteID)
5873

@@ -69,7 +84,11 @@ extension WCPayRemote {
6984
/// - completion: Closure to be executed upon completion.
7085
public func loadConnectionToken(for siteID: Int64,
7186
completion: @escaping(Result<ReaderConnectionToken, Error>) -> Void) {
72-
let request = JetpackRequest(wooApiVersion: .mark3, method: .post, siteID: siteID, path: Path.connectionTokens)
87+
let request = JetpackRequest(wooApiVersion: .mark3,
88+
method: .post,
89+
siteID: siteID,
90+
path: Path.connectionTokens,
91+
availableAsRESTRequest: true)
7392

7493
let mapper = ReaderConnectionTokenMapper()
7594

@@ -84,7 +103,12 @@ extension WCPayRemote {
84103
///
85104
public func loadDefaultReaderLocation(for siteID: Int64,
86105
onCompletion: @escaping (Result<RemoteReaderLocation, Error>) -> Void) {
87-
let request = JetpackRequest(wooApiVersion: .mark3, method: .get, siteID: siteID, path: Path.locations, parameters: [:])
106+
let request = JetpackRequest(wooApiVersion: .mark3,
107+
method: .get,
108+
siteID: siteID,
109+
path: Path.locations,
110+
parameters: [:],
111+
availableAsRESTRequest: true)
88112

89113
let mapper = RemoteReaderLocationMapper()
90114

0 commit comments

Comments
 (0)