Skip to content

Commit 6fba3a1

Browse files
committed
Move WordPressComRestApiErrorDomain to APIInterface
This DRYs the definition, makes the constant available to both Objective-C and Swift, and removes the need for custom builder and checker. See @crazytonyli's suggestion from #782 (comment)
1 parent 7198442 commit 6fba3a1

File tree

8 files changed

+32
-46
lines changed

8 files changed

+32
-46
lines changed
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
#import <Foundation/Foundation.h>
2+
3+
/// Error domain of `NSError` instances that are converted from `WordPressComRestApiEndpointError`
4+
/// and `WordPressAPIError<WordPressComRestApiEndpointError>` instances.
5+
///
6+
/// This matches the compiler generated value and is used to ensure consistent error domain across error types and SPM or Framework build modes.
7+
///
8+
/// See `extension WordPressComRestApiEndpointError: CustomNSError` in CoreAPI package for context.
9+
static NSString *const _Nonnull WordPressComRestApiErrorDomain = @"WordPressKit.WordPressComRestApiError";

Sources/CoreAPI/WordPressAPIError+NSErrorBridge.swift

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,7 @@
11
import Foundation
2+
#if SWIFT_PACKAGE
3+
import APIInterface
4+
#endif
25

36
/// Custom `NSError` bridge implementation.
47
///
@@ -86,8 +89,7 @@ extension WordPressAPIError: CustomNSError {
8689
/// And in cases where additional user info was provided, they need to be carried over to the `NSError` instances.
8790
extension WordPressComRestApiEndpointError: CustomNSError {
8891

89-
// This value is the same as the `WordPressComRestApiErrorDomain` constant generated by Swift compiler.
90-
public static let errorDomain = "WordPressKit.WordPressComRestApiError"
92+
public static let errorDomain = WordPressComRestApiErrorDomain
9193

9294
public var errorCode: Int {
9395
code.rawValue

Sources/CoreAPI/WordPressComRestApiErrorDomain.swift

Lines changed: 0 additions & 30 deletions
This file was deleted.

Sources/WordPressKit/Services/MediaServiceRemoteREST.m

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -244,8 +244,9 @@ - (NSError *)processMediaUploadErrors:(NSArray *)errorList {
244244
errorMessage = errorInfo[@"message"];
245245
}
246246
NSDictionary *errorDictionary = @{NSLocalizedDescriptionKey: errorMessage};
247-
error = [NSError wordPressComRestApiErrorWithCode:WordPressComRestApiErrorCodeUploadFailed
248-
userInfo:errorDictionary];
247+
error = [[NSError alloc] initWithDomain:WordPressComRestApiErrorDomain
248+
code:WordPressComRestApiErrorCodeUploadFailed
249+
userInfo:errorDictionary];
249250
}
250251
return error;
251252
}
@@ -297,8 +298,9 @@ - (void)deleteMedia:(RemoteMedia *)media
297298
}
298299
} else {
299300
if (failure) {
300-
NSError *error = [NSError wordPressComRestApiErrorWithCode:WordPressComRestApiErrorCodeUnknown
301-
userInfo:nil];
301+
NSError *error = [[NSError alloc] initWithDomain:WordPressComRestApiErrorDomain
302+
code:WordPressComRestApiErrorCodeUnknown
303+
userInfo:nil];
302304
failure(error);
303305
}
304306
}
@@ -369,8 +371,9 @@ -(void)getVideoPressToken:(NSString *)videoPressID
369371
}
370372
} else {
371373
if (failure) {
372-
NSError *error = [NSError wordPressComRestApiErrorWithCode:WordPressComRestApiErrorCodeUnknown
373-
userInfo:nil];
374+
NSError *error = [[NSError alloc] initWithDomain:WordPressComRestApiErrorDomain
375+
code:WordPressComRestApiErrorCodeUnknown
376+
userInfo:nil];
374377
failure(error);
375378
}
376379
}

Sources/WordPressKit/Services/WordPressComServiceRemote.m

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -179,9 +179,9 @@ - (void)createWPComBlogWithUrl:(NSString *)blogUrl
179179
NSMutableDictionary *userInfo = [[NSMutableDictionary alloc] init];
180180
userInfo[WordPressComRestApi.ErrorKeyErrorMessage] = localizedErrorMessage;
181181
userInfo[NSLocalizedDescriptionKey] = localizedErrorMessage;
182-
NSError *errorWithLocalizedMessage = [NSError wordPressComRestApiErrorWithCode:WordPressComRestApiErrorCodeUnknown
183-
userInfo:userInfo];
184-
182+
NSError *errorWithLocalizedMessage = [[NSError alloc] initWithDomain:WordPressComRestApiErrorDomain
183+
code:WordPressComRestApiErrorCodeUnknown
184+
userInfo:userInfo];
185185
failure(errorWithLocalizedMessage);
186186
} else {
187187
success(responseObject);
@@ -228,7 +228,7 @@ - (void)createWPComBlogWithUrl:(NSString *)blogUrl
228228

229229
- (NSError *)errorWithLocalizedMessage:(NSError *)error {
230230
NSError *errorWithLocalizedMessage = error;
231-
if ([error hasWordPressComRestApiErrorDomain] &&
231+
if ([error.domain isEqual:WordPressComRestApiErrorDomain] &&
232232
[error.userInfo objectForKey:WordPressComRestApi.ErrorKeyErrorCode] != nil) {
233233

234234
NSString *localizedErrorMessage = [self errorMessageForError:error];

Sources/WordPressKit/WordPressKit.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ FOUNDATION_EXPORT const unsigned char WordPressKitVersionString[];
1010
#import <WordPressKit/WordPressComRESTAPIInterfacing.h>
1111
#import <WordPressKit/WordPressComRESTAPIVersion.h>
1212
#import <WordPressKit/WordPressComRESTAPIVersionedPathBuilder.h>
13+
#import <WordPressKit/WordPressComRestApiErrorDomain.h>
1314

1415
#import <WordPressKit/ServiceRemoteWordPressComREST.h>
1516
#import <WordPressKit/ServiceRemoteWordPressXMLRPC.h>

Tests/CoreAPITests/WordPressComRestApiTests+Error.swift

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import XCTest
22
#if SWIFT_PACKAGE
3+
import APIInterface
34
@testable import CoreAPI
45
#else
56
@testable import WordPressKit

WordPressKit.xcodeproj/project.pbxproj

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,7 @@
6666
3F3C9E9C289A3E31009A1357 /* TestCollector+Constants.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3F3C9E9B289A3E31009A1357 /* TestCollector+Constants.swift */; };
6767
3F758FD324F6C68200BBA2FC /* AnnouncementServiceRemote.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3F758FD224F6C68200BBA2FC /* AnnouncementServiceRemote.swift */; };
6868
3F8308A729EE683500354497 /* ActivityTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3F8308A629EE683500354497 /* ActivityTests.swift */; };
69+
3FA4258F2BCCFDA6007539BF /* WordPressComRestApiErrorDomain.h in Headers */ = {isa = PBXBuildFile; fileRef = 3FA4258E2BCCFDA6007539BF /* WordPressComRestApiErrorDomain.h */; settings = {ATTRIBUTES = (Public, ); }; };
6970
3FB8642C2888089F003A86BE /* BuildkiteTestCollector in Frameworks */ = {isa = PBXBuildFile; productRef = 3FB8642B2888089F003A86BE /* BuildkiteTestCollector */; };
7071
3FD634E52BC3A55F00CEDF5E /* WordPressOrgXMLRPCValidator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3FD634E32BC3A55F00CEDF5E /* WordPressOrgXMLRPCValidator.swift */; };
7172
3FD634E62BC3A55F00CEDF5E /* Date+WordPressCom.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3FD634E42BC3A55F00CEDF5E /* Date+WordPressCom.swift */; };
@@ -78,7 +79,6 @@
7879
3FD634F82BC3AD6200CEDF5E /* StringEncoding+IANA.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3FD634F12BC3AD6200CEDF5E /* StringEncoding+IANA.swift */; };
7980
3FD634FA2BC3AE6800CEDF5E /* AppTransportSecuritySettingsTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 46ABD0E9262EEE0400C7FF24 /* AppTransportSecuritySettingsTests.swift */; };
8081
3FD634FB2BC3AE6C00CEDF5E /* Bundle+SPMSupport.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3FD634E92BC3A6BA00CEDF5E /* Bundle+SPMSupport.swift */; };
81-
3FD634FF2BC3B3D400CEDF5E /* WordPressComRestApiErrorDomain.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3FD634FE2BC3B3D400CEDF5E /* WordPressComRestApiErrorDomain.swift */; };
8282
3FD635042BC3F05400CEDF5E /* WordPressComRESTAPIVersionedPathBuilder.h in Headers */ = {isa = PBXBuildFile; fileRef = 3FD635032BC3F03200CEDF5E /* WordPressComRESTAPIVersionedPathBuilder.h */; settings = {ATTRIBUTES = (Public, ); }; };
8383
3FD635062BC3F08400CEDF5E /* WordPressComRESTAPIVersionedPathBuilder.m in Sources */ = {isa = PBXBuildFile; fileRef = 3FD635052BC3F08400CEDF5E /* WordPressComRESTAPIVersionedPathBuilder.m */; };
8484
3FE2E94F2BB29A1B002CA2E1 /* FilePart.m in Sources */ = {isa = PBXBuildFile; fileRef = 3FE2E94D2BB29A1B002CA2E1 /* FilePart.m */; };
@@ -814,6 +814,7 @@
814814
3F3C9E9B289A3E31009A1357 /* TestCollector+Constants.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "TestCollector+Constants.swift"; sourceTree = "<group>"; };
815815
3F758FD224F6C68200BBA2FC /* AnnouncementServiceRemote.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AnnouncementServiceRemote.swift; sourceTree = "<group>"; };
816816
3F8308A629EE683500354497 /* ActivityTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ActivityTests.swift; sourceTree = "<group>"; };
817+
3FA4258E2BCCFDA6007539BF /* WordPressComRestApiErrorDomain.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WordPressComRestApiErrorDomain.h; sourceTree = "<group>"; };
817818
3FB8642D288813E9003A86BE /* UnitTests.xctestplan */ = {isa = PBXFileReference; lastKnownFileType = text; path = UnitTests.xctestplan; sourceTree = "<group>"; };
818819
3FD634E32BC3A55F00CEDF5E /* WordPressOrgXMLRPCValidator.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = WordPressOrgXMLRPCValidator.swift; sourceTree = "<group>"; };
819820
3FD634E42BC3A55F00CEDF5E /* Date+WordPressCom.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "Date+WordPressCom.swift"; sourceTree = "<group>"; };
@@ -825,7 +826,6 @@
825826
3FD634EF2BC3AD6200CEDF5E /* AppTransportSecuritySettings.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AppTransportSecuritySettings.swift; sourceTree = "<group>"; };
826827
3FD634F02BC3AD6200CEDF5E /* WebauthChallengeInfo.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = WebauthChallengeInfo.swift; sourceTree = "<group>"; };
827828
3FD634F12BC3AD6200CEDF5E /* StringEncoding+IANA.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "StringEncoding+IANA.swift"; sourceTree = "<group>"; };
828-
3FD634FE2BC3B3D400CEDF5E /* WordPressComRestApiErrorDomain.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WordPressComRestApiErrorDomain.swift; sourceTree = "<group>"; };
829829
3FD635032BC3F03200CEDF5E /* WordPressComRESTAPIVersionedPathBuilder.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = WordPressComRESTAPIVersionedPathBuilder.h; sourceTree = "<group>"; };
830830
3FD635052BC3F08400CEDF5E /* WordPressComRESTAPIVersionedPathBuilder.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = WordPressComRESTAPIVersionedPathBuilder.m; sourceTree = "<group>"; };
831831
3FE2E94D2BB29A1B002CA2E1 /* FilePart.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = FilePart.m; sourceTree = "<group>"; };
@@ -2094,6 +2094,7 @@
20942094
isa = PBXGroup;
20952095
children = (
20962096
3FE2E94E2BB29A1B002CA2E1 /* FilePart.h */,
2097+
3FA4258E2BCCFDA6007539BF /* WordPressComRestApiErrorDomain.h */,
20972098
3FFCC0552BABC78B0051D229 /* WordPressComRESTAPIInterfacing.h */,
20982099
3FE2E9662BBEB8D2002CA2E1 /* WordPressComRESTAPIVersion.h */,
20992100
3FD635032BC3F03200CEDF5E /* WordPressComRESTAPIVersionedPathBuilder.h */,
@@ -2132,7 +2133,6 @@
21322133
3FE2E9792BC3A332002CA2E1 /* WordPressAPIError+NSErrorBridge.swift */,
21332134
93BD27771EE73944002BB00B /* WordPressComOAuthClient.swift */,
21342135
3FE2E97A2BC3A332002CA2E1 /* WordPressComRestApi.swift */,
2135-
3FD634FE2BC3B3D400CEDF5E /* WordPressComRestApiErrorDomain.swift */,
21362136
4A05E7992B2FDC3200C25E3B /* WordPressOrgRestApi.swift */,
21372137
93BD27791EE73944002BB00B /* WordPressOrgXMLRPCApi.swift */,
21382138
3FD634E32BC3A55F00CEDF5E /* WordPressOrgXMLRPCValidator.swift */,
@@ -2678,6 +2678,7 @@
26782678
93BD273C1EE73282002BB00B /* AccountServiceRemoteREST.h in Headers */,
26792679
3FD635042BC3F05400CEDF5E /* WordPressComRESTAPIVersionedPathBuilder.h in Headers */,
26802680
93BD27711EE737A8002BB00B /* ServiceRemoteWordPressXMLRPC.h in Headers */,
2681+
3FA4258F2BCCFDA6007539BF /* WordPressComRestApiErrorDomain.h in Headers */,
26812682
3FE2E9672BBEB8D2002CA2E1 /* WordPressComRESTAPIVersion.h in Headers */,
26822683
93BD276F1EE737A8002BB00B /* ServiceRemoteWordPressComREST.h in Headers */,
26832684
93BD273B1EE73282002BB00B /* AccountServiceRemote.h in Headers */,
@@ -3443,7 +3444,6 @@
34433444
9FCDD09720A5EF75004F0BF7 /* ReaderTopicServiceError.swift in Sources */,
34443445
74A44DD11F13C64B006CD8F4 /* RemoteNotificationSettings.swift in Sources */,
34453446
FEF7419D28085D89002C4203 /* RemoteBloggingPrompt.swift in Sources */,
3446-
3FD634FF2BC3B3D400CEDF5E /* WordPressComRestApiErrorDomain.swift in Sources */,
34473447
74DA56331F06EAF000FE9BF4 /* MediaServiceRemoteREST.m in Sources */,
34483448
17CD0CC320C58A0D000D9620 /* ReaderSiteSearchServiceRemote.swift in Sources */,
34493449
74DA563B1F06EB3000FE9BF4 /* RemoteMedia.m in Sources */,

0 commit comments

Comments
 (0)