Skip to content

Commit 842c9dc

Browse files
committed
Add search parameter to theme retrieval methods
1 parent 244b6c4 commit 842c9dc

File tree

3 files changed

+22
-8
lines changed

3 files changed

+22
-8
lines changed

Sources/WordPressKit/Services/ThemeServiceRemote.h

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,7 @@ typedef void(^ThemeServiceRemoteFailureBlock)(NSError *error);
5858
* @details Includes premium themes even if not purchased. Don't call this method if the list
5959
* you want to retrieve is for a specific blog. Use getThemesForBlogId instead.
6060
*
61+
* @param search Search term for filtering themes. Cannot be nil.
6162
* @param freeOnly Only fetch free themes, if false all WP themes will be returned
6263
* @param page Results page to return.
6364
* @param success The success handler. Can be nil.
@@ -66,6 +67,7 @@ typedef void(^ThemeServiceRemoteFailureBlock)(NSError *error);
6667
* @returns A progress object that can be used to track progress and/or cancel the task
6768
*/
6869
- (NSProgress *)getWPThemesPage:(NSInteger)page
70+
search:(NSString *)search
6971
freeOnly:(BOOL)freeOnly
7072
success:(ThemeServiceRemoteThemesRequestSuccessBlock)success
7173
failure:(ThemeServiceRemoteFailureBlock)failure;
@@ -79,13 +81,15 @@ typedef void(^ThemeServiceRemoteFailureBlock)(NSError *error);
7981
* this method and not getThemes.
8082
*
8183
* @param blogId The ID of the blog to get the themes for. Cannot be nil.
84+
* @param search Search term for filtering themes. Cannot be nil.
8285
* @param page Results page to return.
8386
* @param success The success handler. Can be nil.
8487
* @param failure The failure handler. Can be nil.
8588
*
8689
* @returns A progress object that can be used to track progress and/or cancel the task
8790
*/
8891
- (NSProgress *)getThemesForBlogId:(NSNumber *)blogId
92+
search:(NSString *)search
8993
page:(NSInteger)page
9094
success:(ThemeServiceRemoteThemesRequestSuccessBlock)success
9195
failure:(ThemeServiceRemoteFailureBlock)failure;

Sources/WordPressKit/Services/ThemeServiceRemote.m

Lines changed: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,8 @@
1313
static NSString* const ThemeRequestNumberKey = @"number";
1414
static NSInteger const ThemeRequestNumberValue = 50;
1515
static NSString* const ThemeRequestPageKey = @"page";
16+
static NSString* const ThemeRequestSearchKey = @"search";
17+
static NSString* const ThemeRequestFilterKey = @"filter";
1618

1719
@implementation ThemeServiceRemote
1820

@@ -98,19 +100,22 @@ - (NSProgress *)getThemeId:(NSString*)themeId
98100
}
99101

100102
- (NSProgress *)getWPThemesPage:(NSInteger)page
103+
search:(NSString *)search
101104
freeOnly:(BOOL)freeOnly
102105
success:(ThemeServiceRemoteThemesRequestSuccessBlock)success
103106
failure:(ThemeServiceRemoteFailureBlock)failure
104107
{
105108
NSParameterAssert(page > 0);
109+
NSParameterAssert([search isKindOfClass:[NSString class]]);
106110

107111
NSString *requestUrl = [self pathForEndpoint:@"themes"
108112
withVersion:WordPressComRESTAPIVersion_1_2];
109113

110114
NSDictionary *parameters = @{ThemeRequestTierKey: freeOnly ? ThemeRequestTierFreeValue : ThemeRequestTierAllValue,
111115
ThemeRequestNumberKey: @(ThemeRequestNumberValue),
112116
ThemeRequestPageKey: @(page),
113-
};
117+
ThemeRequestSearchKey: search
118+
};
114119

115120
return [self getThemesWithRequestUrl:requestUrl
116121
page:page
@@ -143,17 +148,20 @@ - (NSProgress *)getThemesPage:(NSInteger)page
143148
}
144149

145150
- (NSProgress *)getThemesForBlogId:(NSNumber *)blogId
146-
page:(NSInteger)page
147-
success:(ThemeServiceRemoteThemesRequestSuccessBlock)success
148-
failure:(ThemeServiceRemoteFailureBlock)failure
151+
search:(NSString *)search
152+
page:(NSInteger)page
153+
success:(ThemeServiceRemoteThemesRequestSuccessBlock)success
154+
failure:(ThemeServiceRemoteFailureBlock)failure
149155
{
150156
NSParameterAssert([blogId isKindOfClass:[NSNumber class]]);
157+
NSParameterAssert([search isKindOfClass:[NSString class]]);
151158
NSParameterAssert(page > 0);
152159

153160
NSProgress *progress = [self getThemesForBlogId:blogId
154161
page:page
155162
apiVersion:WordPressComRESTAPIVersion_1_2
156-
params:@{ThemeRequestTierKey: ThemeRequestTierAllValue}
163+
params:@{ThemeRequestTierKey: ThemeRequestTierAllValue,
164+
ThemeRequestFilterKey: [NSString stringWithFormat:@"subject:%@", search]}
157165
success:success
158166
failure:failure];
159167

Tests/WordPressKitTests/Tests/ThemeServiceRemoteTests.m

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -224,6 +224,7 @@ - (void)testThatGetThemesWorks
224224
}];
225225

226226
XCTAssertNoThrow([service getWPThemesPage:1
227+
search:@""
227228
freeOnly:NO
228229
success:successBlock
229230
failure:nil]);
@@ -268,9 +269,10 @@ - (void)testThatGetThemesForBlogIdWorks
268269
}];
269270

270271
XCTAssertNoThrow([service getThemesForBlogId:blogId
271-
page:1
272-
success:successBlock
273-
failure:nil]);
272+
search:@""
273+
page:1
274+
success:successBlock
275+
failure:nil]);
274276
}
275277

276278
- (void)testThatGetThemesForBlogIdThrowsExceptionWithoutBlogId

0 commit comments

Comments
 (0)