Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
24 changes: 12 additions & 12 deletions Networking/Networking.xcodeproj/project.pbxproj
Original file line number Diff line number Diff line change
Expand Up @@ -754,7 +754,7 @@
DEF13C5E296686AB0024A02B /* orders-load-all-without-data.json in Resources */ = {isa = PBXBuildFile; fileRef = DEF13C5D296686AB0024A02B /* orders-load-all-without-data.json */; };
DEF13C6029668C420024A02B /* order-without-data.json in Resources */ = {isa = PBXBuildFile; fileRef = DEF13C5F29668C420024A02B /* order-without-data.json */; };
DEFBA74E29485A7600C35BA9 /* RESTRequest.swift in Sources */ = {isa = PBXBuildFile; fileRef = DEFBA74D29485A7600C35BA9 /* RESTRequest.swift */; };
DEFBA7542949CE6600C35BA9 /* ApplicationPasswordRequestProcessor.swift in Sources */ = {isa = PBXBuildFile; fileRef = DEFBA7532949CE6600C35BA9 /* ApplicationPasswordRequestProcessor.swift */; };
DEFBA7542949CE6600C35BA9 /* RequestProcessor.swift in Sources */ = {isa = PBXBuildFile; fileRef = DEFBA7532949CE6600C35BA9 /* RequestProcessor.swift */; };
DEFBA7562949D17400C35BA9 /* DefaultRequestAuthenticatorTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = DEFBA7552949D17300C35BA9 /* DefaultRequestAuthenticatorTests.swift */; };
E12552C526385B05001CEE70 /* ShippingLabelAddressValidationSuccess.swift in Sources */ = {isa = PBXBuildFile; fileRef = E12552C426385B05001CEE70 /* ShippingLabelAddressValidationSuccess.swift */; };
E137619929151C7400FD098F /* error-wp-rest-forbidden.json in Resources */ = {isa = PBXBuildFile; fileRef = E137619829151C7400FD098F /* error-wp-rest-forbidden.json */; };
Expand All @@ -781,13 +781,13 @@
EE6FDCFC2966A70400E1CECF /* product-without-data.json in Resources */ = {isa = PBXBuildFile; fileRef = EE6FDCFB2966A70400E1CECF /* product-without-data.json */; };
EE71CC3D2951A8EA0074D908 /* ApplicationPasswordStorage.swift in Sources */ = {isa = PBXBuildFile; fileRef = EE71CC3C2951A8EA0074D908 /* ApplicationPasswordStorage.swift */; };
EE71CC412951CE700074D908 /* generate-application-password-using-wporg-creds-success.json in Resources */ = {isa = PBXBuildFile; fileRef = EE71CC402951CE700074D908 /* generate-application-password-using-wporg-creds-success.json */; };
EE76762F2962B85E000066FA /* ApplicationPasswordRequestProcessorTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = EE76762E2962B85E000066FA /* ApplicationPasswordRequestProcessorTests.swift */; };
EE76762F2962B85E000066FA /* RequestProcessorTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = EE76762E2962B85E000066FA /* RequestProcessorTests.swift */; };
EE80A24729547F8B003591E4 /* coupons-all-without-data.json in Resources */ = {isa = PBXBuildFile; fileRef = EE80A24529547F8B003591E4 /* coupons-all-without-data.json */; };
EE80A24829547F8B003591E4 /* coupon-without-data.json in Resources */ = {isa = PBXBuildFile; fileRef = EE80A24629547F8B003591E4 /* coupon-without-data.json */; };
EE80A25029556FBD003591E4 /* coupon-reports-without-data.json in Resources */ = {isa = PBXBuildFile; fileRef = EE80A24F29556FBD003591E4 /* coupon-reports-without-data.json */; };
EE8A86F1286C5226003E8AA4 /* media-update-product-id-in-wordpress-site.json in Resources */ = {isa = PBXBuildFile; fileRef = EE8A86F0286C5226003E8AA4 /* media-update-product-id-in-wordpress-site.json */; };
EE8DE432294B17CD005054E7 /* DefaultApplicationPasswordUseCaseTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = EE8DE431294B17CD005054E7 /* DefaultApplicationPasswordUseCaseTests.swift */; };
EE99814E295AA7430074AE68 /* ApplicationPasswordAuthenticator.swift in Sources */ = {isa = PBXBuildFile; fileRef = EE99814D295AA7430074AE68 /* ApplicationPasswordAuthenticator.swift */; };
EE99814E295AA7430074AE68 /* RequestAuthenticator.swift in Sources */ = {isa = PBXBuildFile; fileRef = EE99814D295AA7430074AE68 /* RequestAuthenticator.swift */; };
EE998150295AACE10074AE68 /* RequestConverter.swift in Sources */ = {isa = PBXBuildFile; fileRef = EE99814F295AACE10074AE68 /* RequestConverter.swift */; };
EEA6583E2966B41E00112DF0 /* products-load-all-without-data.json in Resources */ = {isa = PBXBuildFile; fileRef = EEA6583D2966B41E00112DF0 /* products-load-all-without-data.json */; };
EEA658402966C05D00112DF0 /* product-search-sku-without-data.json in Resources */ = {isa = PBXBuildFile; fileRef = EEA6583F2966C05D00112DF0 /* product-search-sku-without-data.json */; };
Expand Down Expand Up @@ -1585,7 +1585,7 @@
DEF13C5D296686AB0024A02B /* orders-load-all-without-data.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = "orders-load-all-without-data.json"; sourceTree = "<group>"; };
DEF13C5F29668C420024A02B /* order-without-data.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = "order-without-data.json"; sourceTree = "<group>"; };
DEFBA74D29485A7600C35BA9 /* RESTRequest.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RESTRequest.swift; sourceTree = "<group>"; };
DEFBA7532949CE6600C35BA9 /* ApplicationPasswordRequestProcessor.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ApplicationPasswordRequestProcessor.swift; sourceTree = "<group>"; };
DEFBA7532949CE6600C35BA9 /* RequestProcessor.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RequestProcessor.swift; sourceTree = "<group>"; };
DEFBA7552949D17300C35BA9 /* DefaultRequestAuthenticatorTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DefaultRequestAuthenticatorTests.swift; sourceTree = "<group>"; };
E12552C426385B05001CEE70 /* ShippingLabelAddressValidationSuccess.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ShippingLabelAddressValidationSuccess.swift; sourceTree = "<group>"; };
E137619829151C7400FD098F /* error-wp-rest-forbidden.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = "error-wp-rest-forbidden.json"; sourceTree = "<group>"; };
Expand All @@ -1612,13 +1612,13 @@
EE6FDCFB2966A70400E1CECF /* product-without-data.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = "product-without-data.json"; sourceTree = "<group>"; };
EE71CC3C2951A8EA0074D908 /* ApplicationPasswordStorage.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ApplicationPasswordStorage.swift; sourceTree = "<group>"; };
EE71CC402951CE700074D908 /* generate-application-password-using-wporg-creds-success.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = "generate-application-password-using-wporg-creds-success.json"; sourceTree = "<group>"; };
EE76762E2962B85E000066FA /* ApplicationPasswordRequestProcessorTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ApplicationPasswordRequestProcessorTests.swift; sourceTree = "<group>"; };
EE76762E2962B85E000066FA /* RequestProcessorTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RequestProcessorTests.swift; sourceTree = "<group>"; };
EE80A24529547F8B003591E4 /* coupons-all-without-data.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = "coupons-all-without-data.json"; sourceTree = "<group>"; };
EE80A24629547F8B003591E4 /* coupon-without-data.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = "coupon-without-data.json"; sourceTree = "<group>"; };
EE80A24F29556FBD003591E4 /* coupon-reports-without-data.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = "coupon-reports-without-data.json"; sourceTree = "<group>"; };
EE8A86F0286C5226003E8AA4 /* media-update-product-id-in-wordpress-site.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = "media-update-product-id-in-wordpress-site.json"; sourceTree = "<group>"; };
EE8DE431294B17CD005054E7 /* DefaultApplicationPasswordUseCaseTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DefaultApplicationPasswordUseCaseTests.swift; sourceTree = "<group>"; };
EE99814D295AA7430074AE68 /* ApplicationPasswordAuthenticator.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ApplicationPasswordAuthenticator.swift; sourceTree = "<group>"; };
EE99814D295AA7430074AE68 /* RequestAuthenticator.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RequestAuthenticator.swift; sourceTree = "<group>"; };
EE99814F295AACE10074AE68 /* RequestConverter.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RequestConverter.swift; sourceTree = "<group>"; };
EEA6583D2966B41E00112DF0 /* products-load-all-without-data.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = "products-load-all-without-data.json"; sourceTree = "<group>"; };
EEA6583F2966C05D00112DF0 /* product-search-sku-without-data.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = "product-search-sku-without-data.json"; sourceTree = "<group>"; };
Expand Down Expand Up @@ -2794,10 +2794,10 @@
EE54C899294777D000A9BF61 /* ApplicationPassword */ = {
isa = PBXGroup;
children = (
DEFBA7532949CE6600C35BA9 /* ApplicationPasswordRequestProcessor.swift */,
DEFBA7532949CE6600C35BA9 /* RequestProcessor.swift */,
EE54C89E2947782E00A9BF61 /* ApplicationPasswordUseCase.swift */,
EE71CC3C2951A8EA0074D908 /* ApplicationPasswordStorage.swift */,
EE99814D295AA7430074AE68 /* ApplicationPasswordAuthenticator.swift */,
EE99814D295AA7430074AE68 /* RequestAuthenticator.swift */,
EE99814F295AACE10074AE68 /* RequestConverter.swift */,
);
path = ApplicationPassword;
Expand Down Expand Up @@ -2844,7 +2844,7 @@
isa = PBXGroup;
children = (
EE8DE431294B17CD005054E7 /* DefaultApplicationPasswordUseCaseTests.swift */,
EE76762E2962B85E000066FA /* ApplicationPasswordRequestProcessorTests.swift */,
EE76762E2962B85E000066FA /* RequestProcessorTests.swift */,
);
path = ApplicationPassword;
sourceTree = "<group>";
Expand Down Expand Up @@ -3345,7 +3345,7 @@
457A574025D1817E000797AD /* ShippingLabelAddressVerification.swift in Sources */,
74ABA1D1213F22CA00FFAD30 /* TopEarnersStatsRemote.swift in Sources */,
DEC51AF127699E7A009F3DF4 /* SystemStatus+Page.swift in Sources */,
EE99814E295AA7430074AE68 /* ApplicationPasswordAuthenticator.swift in Sources */,
EE99814E295AA7430074AE68 /* RequestAuthenticator.swift in Sources */,
025CA2C0238EB8CB00B05C81 /* ProductShippingClass.swift in Sources */,
02C1CEF424C6A02B00703EBA /* ProductVariationMapper.swift in Sources */,
3105470C262E27F000C5C02B /* WCPayPaymentIntentStatusEnum.swift in Sources */,
Expand Down Expand Up @@ -3377,7 +3377,7 @@
020D07B823D852BB00FD9580 /* Media.swift in Sources */,
B5BB1D0C20A2050300112D92 /* DateFormatter+Woo.swift in Sources */,
743E84EE2217244C00FAC9D7 /* ShipmentTrackingListMapper.swift in Sources */,
DEFBA7542949CE6600C35BA9 /* ApplicationPasswordRequestProcessor.swift in Sources */,
DEFBA7542949CE6600C35BA9 /* RequestProcessor.swift in Sources */,
451A97E5260B631E0059D135 /* ShippingLabelPredefinedPackage.swift in Sources */,
BAB373722795A1FB00837B4A /* OrderTaxLine.swift in Sources */,
EE54C89F2947782E00A9BF61 /* ApplicationPasswordUseCase.swift in Sources */,
Expand Down Expand Up @@ -3769,7 +3769,7 @@
D800DA0A25EFEB9C001E13CE /* WCPayRemoteTests.swift in Sources */,
E13BAD5328F8625600217769 /* InAppPurchasesRemoteTests.swift in Sources */,
CC851D1425E52AB500249E9C /* Decimal+ExtensionsTests.swift in Sources */,
EE76762F2962B85E000066FA /* ApplicationPasswordRequestProcessorTests.swift in Sources */,
EE76762F2962B85E000066FA /* RequestProcessorTests.swift in Sources */,
B554FA8B2180B1D500C54DFF /* NotificationsRemoteTests.swift in Sources */,
B518662A20A09C6F00037A38 /* OrdersRemoteTests.swift in Sources */,
02EF166E292F0C5800D90AD6 /* PaymentRemoteTests.swift in Sources */,
Expand Down
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
enum ApplicationPasswordAuthenticatorError: Error {
enum RequestAuthenticatorError: Error {
case applicationPasswordUseCaseNotAvailable
case applicationPasswordNotAvailable
}

protocol ApplicationPasswordAuthenticator {
protocol RequestAuthenticator {
/// Credentials to authenticate the URLRequest
///
var credentials: Credentials? { get }
Expand All @@ -26,7 +26,7 @@ protocol ApplicationPasswordAuthenticator {

/// Authenticates request
///
public struct DefaultApplicationPasswordAuthenticator: ApplicationPasswordAuthenticator {
public struct DefaultRequestAuthenticator: RequestAuthenticator {
/// Credentials to authenticate the URLRequest
///
let credentials: Credentials?
Expand Down Expand Up @@ -71,7 +71,7 @@ public struct DefaultApplicationPasswordAuthenticator: ApplicationPasswordAuthen
///
func generateApplicationPassword() async throws {
guard let applicationPasswordUseCase else {
throw ApplicationPasswordAuthenticatorError.applicationPasswordUseCaseNotAvailable
throw RequestAuthenticatorError.applicationPasswordUseCaseNotAvailable
}
let _ = try await applicationPasswordUseCase.generateNewPassword()
return
Expand All @@ -84,7 +84,7 @@ public struct DefaultApplicationPasswordAuthenticator: ApplicationPasswordAuthen
}
}

private extension DefaultApplicationPasswordAuthenticator {
private extension DefaultRequestAuthenticator {
/// To check whether the given URLRequest is a REST API request
///
func isRestAPIRequest(_ urlRequest: URLRequest) -> Bool {
Expand All @@ -110,7 +110,7 @@ private extension DefaultApplicationPasswordAuthenticator {
///
func authenticateUsingApplicationPasswordIfPossible(_ urlRequest: URLRequest) throws -> URLRequest {
guard let applicationPassword = applicationPasswordUseCase?.applicationPassword else {
throw ApplicationPasswordAuthenticatorError.applicationPasswordNotAvailable
throw RequestAuthenticatorError.applicationPasswordNotAvailable
}

return AuthenticatedRESTRequest(applicationPassword: applicationPassword, request: urlRequest).asURLRequest()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,29 +3,29 @@ import Foundation

/// Authenticates and retries requests
///
final class ApplicationPasswordRequestProcessor {
final class RequestProcessor {
private var requestsToRetry = [RequestRetryCompletion]()

private var isAuthenticating = false

private let requestAuthenticator: ApplicationPasswordAuthenticator
private let requestAuthenticator: RequestAuthenticator

init(requestAuthenticator: ApplicationPasswordAuthenticator) {
init(requestAuthenticator: RequestAuthenticator) {
self.requestAuthenticator = requestAuthenticator
}
}

// MARK: Request Authentication
//
extension ApplicationPasswordRequestProcessor: RequestAdapter {
extension RequestProcessor: RequestAdapter {
func adapt(_ urlRequest: URLRequest) throws -> URLRequest {
return try requestAuthenticator.authenticate(urlRequest)
}
}

// MARK: Retrying Request
//
extension ApplicationPasswordRequestProcessor: RequestRetrier {
extension RequestProcessor: RequestRetrier {
func should(_ manager: Alamofire.SessionManager,
retry request: Alamofire.Request,
with error: Error,
Expand All @@ -48,7 +48,7 @@ extension ApplicationPasswordRequestProcessor: RequestRetrier {

// MARK: Helpers
//
private extension ApplicationPasswordRequestProcessor {
private extension RequestProcessor {
func generateApplicationPassword() {
Task(priority: .medium) {
isAuthenticating = true
Expand All @@ -66,7 +66,7 @@ private extension ApplicationPasswordRequestProcessor {

func shouldRetry(_ error: Error) -> Bool {
// Need to generate application password
if .applicationPasswordNotAvailable == error as? ApplicationPasswordAuthenticatorError {
if .applicationPasswordNotAvailable == error as? RequestAuthenticatorError {
return true
}

Expand Down
4 changes: 2 additions & 2 deletions Networking/Networking/Network/AlamofireNetwork.swift
Original file line number Diff line number Diff line change
Expand Up @@ -28,15 +28,15 @@ public class AlamofireNetwork: Network {

/// Authenticator to update requests authorization header if possible.
///
private let requestAuthenticator: ApplicationPasswordRequestProcessor
private let requestAuthenticator: RequestProcessor

public var session: URLSession { SessionManager.default.session }

/// Public Initializer
///
public required init(credentials: Credentials?) {
self.requestConverter = RequestConverter(credentials: credentials)
self.requestAuthenticator = ApplicationPasswordRequestProcessor(requestAuthenticator: DefaultApplicationPasswordAuthenticator(credentials: credentials))
self.requestAuthenticator = RequestProcessor(requestAuthenticator: DefaultRequestAuthenticator(credentials: credentials))
}

/// Executes the specified Network Request. Upon completion, the payload will be sent back to the caller as a Data instance.
Expand Down
Loading