Skip to content
This repository was archived by the owner on Sep 15, 2025. It is now read-only.

Commit d1c738c

Browse files
committed
Extract logic to compute REST path with version
1 parent 281cf4b commit d1c738c

File tree

2 files changed

+39
-25
lines changed

2 files changed

+39
-25
lines changed

Sources/BasicBlogAPIObjc/ServiceRemoteWordPressComREST.h

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,4 +49,12 @@ NS_SWIFT_NAME(path(forEndpoint:withVersion:));
4949

5050
@end
5151

52+
@interface WordPressComRESTVersionedPathBuilder: NSObject
53+
54+
+ (NSString *)pathForEndpoint:(NSString *)endpoint
55+
withVersion:(WordPressComRESTAPIVersion)apiVersion
56+
NS_SWIFT_NAME(path(forEndpoint:withVersion:));
57+
58+
@end
59+
5260
NS_ASSUME_NONNULL_END
Lines changed: 31 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,6 @@
11
#import "ServiceRemoteWordPressComREST.h"
22
#import "WPKit-Swift.h"
33

4-
static NSString* const ServiceRemoteWordPressComRESTApiVersionStringInvalid = @"invalid_api_version";
5-
static NSString* const ServiceRemoteWordPressComRESTApiVersionString_1_0 = @"rest/v1";
6-
static NSString* const ServiceRemoteWordPressComRESTApiVersionString_1_1 = @"rest/v1.1";
7-
static NSString* const ServiceRemoteWordPressComRESTApiVersionString_1_2 = @"rest/v1.2";
8-
static NSString* const ServiceRemoteWordPressComRESTApiVersionString_1_3 = @"rest/v1.3";
9-
static NSString* const ServiceRemoteWordPressComRESTApiVersionString_2_0 = @"wpcom/v2";
10-
114
@implementation ServiceRemoteWordPressComREST
125

136
- (instancetype)initWithWordPressComRestApi:(WordPressComRestApi *)wordPressComRestApi {
@@ -22,13 +15,39 @@ - (instancetype)initWithWordPressComRestApi:(WordPressComRestApi *)wordPressComR
2215
return self;
2316
}
2417

18+
#pragma mark - Request URL construction
19+
20+
- (NSString *)pathForEndpoint:(NSString *)resourceUrl
21+
withVersion:(WordPressComRESTAPIVersion)apiVersion
22+
{
23+
NSParameterAssert([resourceUrl isKindOfClass:[NSString class]]);
24+
25+
return [WordPressComRESTVersionedPathBuilder pathForEndpoint:resourceUrl
26+
withVersion:apiVersion];
27+
}
28+
29+
@end
30+
31+
static NSString* const ServiceRemoteWordPressComRESTApiVersionStringInvalid = @"invalid_api_version";
32+
static NSString* const ServiceRemoteWordPressComRESTApiVersionString_1_0 = @"rest/v1";
33+
static NSString* const ServiceRemoteWordPressComRESTApiVersionString_1_1 = @"rest/v1.1";
34+
static NSString* const ServiceRemoteWordPressComRESTApiVersionString_1_2 = @"rest/v1.2";
35+
static NSString* const ServiceRemoteWordPressComRESTApiVersionString_1_3 = @"rest/v1.3";
36+
static NSString* const ServiceRemoteWordPressComRESTApiVersionString_2_0 = @"wpcom/v2";
37+
38+
@implementation WordPressComRESTVersionedPathBuilder
2539

26-
#pragma mark - API Version
40+
+ (NSString *)pathForEndpoint:(NSString *)endpoint withVersion:(WordPressComRESTAPIVersion)apiVersion
41+
{
42+
NSString *apiVersionString = [self apiVersionStringWithEnumValue:apiVersion];
2743

28-
- (NSString *)apiVersionStringWithEnumValue:(WordPressComRESTAPIVersion)apiVersion
44+
return [NSString stringWithFormat:@"%@/%@", apiVersionString, endpoint];
45+
}
46+
47+
+ (NSString *)apiVersionStringWithEnumValue:(WordPressComRESTAPIVersion)apiVersion
2948
{
3049
NSString *result = nil;
31-
50+
3251
switch (apiVersion) {
3352
case WordPressComRESTAPIVersion_1_0:
3453
result = ServiceRemoteWordPressComRESTApiVersionString_1_0;
@@ -37,7 +56,7 @@ - (NSString *)apiVersionStringWithEnumValue:(WordPressComRESTAPIVersion)apiVersi
3756
case WordPressComRESTAPIVersion_1_1:
3857
result = ServiceRemoteWordPressComRESTApiVersionString_1_1;
3958
break;
40-
59+
4160
case WordPressComRESTAPIVersion_1_2:
4261
result = ServiceRemoteWordPressComRESTApiVersionString_1_2;
4362
break;
@@ -55,20 +74,7 @@ - (NSString *)apiVersionStringWithEnumValue:(WordPressComRESTAPIVersion)apiVersi
5574
result = ServiceRemoteWordPressComRESTApiVersionStringInvalid;
5675
break;
5776
}
58-
59-
return result;
60-
}
61-
62-
#pragma mark - Request URL construction
6377

64-
- (NSString *)pathForEndpoint:(NSString *)resourceUrl
65-
withVersion:(WordPressComRESTAPIVersion)apiVersion
66-
{
67-
NSParameterAssert([resourceUrl isKindOfClass:[NSString class]]);
68-
69-
NSString *apiVersionString = [self apiVersionStringWithEnumValue:apiVersion];
70-
71-
return [NSString stringWithFormat:@"%@/%@", apiVersionString, resourceUrl];
78+
return result;
7279
}
73-
7480
@end

0 commit comments

Comments
 (0)