Skip to content
This repository was archived by the owner on Sep 15, 2025. It is now read-only.
Closed
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
4 changes: 2 additions & 2 deletions Podfile.lock
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ PODS:
- OHHTTPStubs/Swift (6.1.0):
- OHHTTPStubs/Default
- UIDeviceIdentifier (1.1.4)
- WordPressKit (2.0.0-beta.1):
- WordPressKit (2.0.0-beta.3):
- Alamofire (~> 4.7.3)
- CocoaLumberjack (= 3.4.2)
- NSObject-SafeExpectations (= 0.0.3)
Expand Down Expand Up @@ -70,7 +70,7 @@ SPEC CHECKSUMS:
OCMock: 43565190abc78977ad44a61c0d20d7f0784d35ab
OHHTTPStubs: 1e21c7d2c084b8153fc53d48400d8919d2d432d0
UIDeviceIdentifier: 8f8a24b257a4d978c8d40ad1e7355b944ffbfa8c
WordPressKit: f54ffbba343061975b72e64e5d49615c28156147
WordPressKit: 7978809060775c2301d1c0f83215b34dc4aaba2e
WordPressShared: a2fc2db66c210a05d317ae9678b5823dd6a4d708
wpxmlrpc: 6ba55c773cfa27083ae4a2173e69b19f46da98e2

Expand Down
2 changes: 1 addition & 1 deletion WordPressKit.podspec
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
Pod::Spec.new do |s|
s.name = "WordPressKit"
s.version = "2.0.0-beta.2"
s.version = "2.0.0-beta.3"
s.summary = "WordPressKit offers a clean and simple WordPress.com and WordPress.org API."

s.description = <<-DESC
Expand Down
10 changes: 5 additions & 5 deletions WordPressKit.xcodeproj/project.pbxproj
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,7 @@
731BA83A21DED358000FDFCD /* site-creation-success.json in Resources */ = {isa = PBXBuildFile; fileRef = 731BA83921DECE93000FDFCD /* site-creation-success.json */; };
7328420421CD786C00126755 /* WordPressComServiceRemote+SiteCreation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7328420321CD786C00126755 /* WordPressComServiceRemote+SiteCreation.swift */; };
7328420621CD798A00126755 /* WordPressComServiceRemoteTests+SiteCreation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7328420521CD798A00126755 /* WordPressComServiceRemoteTests+SiteCreation.swift */; };
7334B2B722035F3200453E4C /* ServiceRemoteRESTTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7334B2B622035F3200453E4C /* ServiceRemoteRESTTests.swift */; };
736C971021E80D48007A4200 /* SiteVerticalsPromptResponseDecodingTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 736C970F21E80D48007A4200 /* SiteVerticalsPromptResponseDecodingTests.swift */; };
73A2F38A21E7F81E00388609 /* WordPressComServiceRemote+SiteVerticalsPrompt.swift in Sources */ = {isa = PBXBuildFile; fileRef = 73A2F38921E7F81E00388609 /* WordPressComServiceRemote+SiteVerticalsPrompt.swift */; };
73A2F38D21E7FC8200388609 /* WordPressComServiceRemoteTests+SiteVerticalsPrompt.swift in Sources */ = {isa = PBXBuildFile; fileRef = 73A2F38C21E7FC8200388609 /* WordPressComServiceRemoteTests+SiteVerticalsPrompt.swift */; };
Expand Down Expand Up @@ -98,7 +99,6 @@
740B23EA1F17FB4200067A2A /* xmlrpc-wp-getpost-success.xml in Resources */ = {isa = PBXBuildFile; fileRef = 740B23E01F17FB4200067A2A /* xmlrpc-wp-getpost-success.xml */; };
740B23ED1F17FB7E00067A2A /* xmlrpc-bad-username-password-error.xml in Resources */ = {isa = PBXBuildFile; fileRef = 740B23EB1F17FB7E00067A2A /* xmlrpc-bad-username-password-error.xml */; };
740B23EE1F17FB7E00067A2A /* xmlrpc-malformed-request-xml-error.xml in Resources */ = {isa = PBXBuildFile; fileRef = 740B23EC1F17FB7E00067A2A /* xmlrpc-malformed-request-xml-error.xml */; };
74155E251EF87DDF00A06AEA /* ServiceRemoteRESTTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 74155E241EF87DDF00A06AEA /* ServiceRemoteRESTTests.m */; };
742362D61F10250600BD0A7F /* MenusServiceRemote.h in Headers */ = {isa = PBXBuildFile; fileRef = 742362D41F10250600BD0A7F /* MenusServiceRemote.h */; settings = {ATTRIBUTES = (Public, ); }; };
742362D71F10250600BD0A7F /* MenusServiceRemote.m in Sources */ = {isa = PBXBuildFile; fileRef = 742362D51F10250600BD0A7F /* MenusServiceRemote.m */; };
742362DE1F1025B400BD0A7F /* RemoteMenu.h in Headers */ = {isa = PBXBuildFile; fileRef = 742362D81F1025B400BD0A7F /* RemoteMenu.h */; settings = {ATTRIBUTES = (Public, ); }; };
Expand Down Expand Up @@ -507,6 +507,7 @@
731BA83921DECE93000FDFCD /* site-creation-success.json */ = {isa = PBXFileReference; lastKnownFileType = text.json; path = "site-creation-success.json"; sourceTree = "<group>"; };
7328420321CD786C00126755 /* WordPressComServiceRemote+SiteCreation.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "WordPressComServiceRemote+SiteCreation.swift"; sourceTree = "<group>"; };
7328420521CD798A00126755 /* WordPressComServiceRemoteTests+SiteCreation.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "WordPressComServiceRemoteTests+SiteCreation.swift"; sourceTree = "<group>"; };
7334B2B622035F3200453E4C /* ServiceRemoteRESTTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ServiceRemoteRESTTests.swift; sourceTree = "<group>"; };
736C970F21E80D48007A4200 /* SiteVerticalsPromptResponseDecodingTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SiteVerticalsPromptResponseDecodingTests.swift; sourceTree = "<group>"; };
73A2F38921E7F81E00388609 /* WordPressComServiceRemote+SiteVerticalsPrompt.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "WordPressComServiceRemote+SiteVerticalsPrompt.swift"; sourceTree = "<group>"; };
73A2F38B21E7FC2A00388609 /* site-verticals-prompt.json */ = {isa = PBXFileReference; lastKnownFileType = text.json; path = "site-verticals-prompt.json"; sourceTree = "<group>"; };
Expand Down Expand Up @@ -559,7 +560,6 @@
740B23E01F17FB4200067A2A /* xmlrpc-wp-getpost-success.xml */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = "xmlrpc-wp-getpost-success.xml"; sourceTree = "<group>"; };
740B23EB1F17FB7E00067A2A /* xmlrpc-bad-username-password-error.xml */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = "xmlrpc-bad-username-password-error.xml"; sourceTree = "<group>"; };
740B23EC1F17FB7E00067A2A /* xmlrpc-malformed-request-xml-error.xml */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = "xmlrpc-malformed-request-xml-error.xml"; sourceTree = "<group>"; };
74155E241EF87DDF00A06AEA /* ServiceRemoteRESTTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ServiceRemoteRESTTests.m; sourceTree = "<group>"; };
742362D41F10250600BD0A7F /* MenusServiceRemote.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MenusServiceRemote.h; sourceTree = "<group>"; };
742362D51F10250600BD0A7F /* MenusServiceRemote.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MenusServiceRemote.m; sourceTree = "<group>"; };
742362D81F1025B400BD0A7F /* RemoteMenu.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RemoteMenu.h; sourceTree = "<group>"; };
Expand Down Expand Up @@ -1128,14 +1128,14 @@
931924231F1662FA0069CBCC /* JSONLoader.swift */,
9F3E0BA920873772009CB5BA /* MockServiceRequest.swift */,
74B335D71F06F1CA0053A184 /* MockWordPressComRestApi.swift */,
74155E241EF87DDF00A06AEA /* ServiceRemoteRESTTests.m */,
93AB06031EE8838400EF8764 /* RemoteTestCase.swift */,
74A923B11F2BE2DF00EC8F92 /* RESTTestable.swift */,
740B23D51F17F7C100067A2A /* XMLRPCTestable.swift */,
7334B2B622035F3200453E4C /* ServiceRemoteRESTTests.swift */,
FFE247A620C891D1002DF3A2 /* WordPressComOAuthTests.swift */,
74B335D91F06F3D60053A184 /* WordPressComRestApiTests.swift */,
73B3DAD521FBB20D00B2CF18 /* WordPressComRestApiTests+Locale.swift */,
74B335DB1F06F4180053A184 /* WordPressOrgXMLRPCApiTests.swift */,
740B23D51F17F7C100067A2A /* XMLRPCTestable.swift */,
93BD273E1EE732CC002BB00B /* Accounts */,
826016FE1F9FD59400533B6C /* Activity */,
74B5F0DF1EF82AAB00B411E7 /* Blog */,
Expand Down Expand Up @@ -2288,11 +2288,11 @@
E1E89C6A1FD6BDB1006E7A33 /* PluginDirectoryTests.swift in Sources */,
9F3E0BAA20873773009CB5BA /* MockServiceRequest.swift in Sources */,
748437EF1F1D4D8B00E8DDAF /* MenusServiceRemoteTests.m in Sources */,
7334B2B722035F3200453E4C /* ServiceRemoteRESTTests.swift in Sources */,
93AC8EDF1ED32FD000900F5A /* StatsStreakItemTests.m in Sources */,
73D5930121E550F500E4CF84 /* SiteVerticalsResponseDecodingTests.swift in Sources */,
74A44DD41F13C6D8006CD8F4 /* RemoteNotificationTests.swift in Sources */,
74A923B21F2BE2DF00EC8F92 /* RESTTestable.swift in Sources */,
74155E251EF87DDF00A06AEA /* ServiceRemoteRESTTests.m in Sources */,
74D67F0A1F15C24C0010C5ED /* PeopleServiceRemoteTests.swift in Sources */,
9F3E0BAE20873836009CB5BA /* ReaderTopicServiceRemoteTest+Subscriptions.swift in Sources */,
7328420621CD798A00126755 /* WordPressComServiceRemoteTests+SiteCreation.swift in Sources */,
Expand Down
4 changes: 4 additions & 0 deletions WordPressKit/ActivityServiceRemote.swift
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@ public class ActivityServiceRemote: ServiceRemoteWordPressComREST {
failure: @escaping (Error) -> Void) {
let endpoint = "sites/\(siteID)/activity"
let path = self.path(forEndpoint: endpoint, withVersion: ._2_0)
let localeKey = self.localeKey(forVersion: ._2_0)
let locale = WordPressComLanguageDatabase().deviceLanguage.slug
let pageNumber = (offset / count + 1)
let parameters: [String: AnyObject] = [
Expand All @@ -36,6 +37,7 @@ public class ActivityServiceRemote: ServiceRemoteWordPressComREST {

wordPressComRestApi.GET(path,
parameters: parameters,
localeKey: localeKey,
success: { response, _ in
do {
let (activities, totalItems) = try self.mapActivitiesResponse(response)
Expand Down Expand Up @@ -64,13 +66,15 @@ public class ActivityServiceRemote: ServiceRemoteWordPressComREST {
failure: @escaping (Error) -> Void) {
let endpoint = "sites/\(siteID)/rewind"
let path = self.path(forEndpoint: endpoint, withVersion: ._2_0)
let localeKey = self.localeKey(forVersion: ._2_0)
let locale = WordPressComLanguageDatabase().deviceLanguage.slug
let parameters: [String: AnyObject] = [
"locale": locale as AnyObject
]

wordPressComRestApi.GET(path,
parameters: parameters,
localeKey: localeKey,
success: { response, _ in
guard let rewindStatus = response as? [String: AnyObject] else {
failure(ResponseError.decodingFailure)
Expand Down
2 changes: 2 additions & 0 deletions WordPressKit/PlanServiceRemote.swift
Original file line number Diff line number Diff line change
Expand Up @@ -19,11 +19,13 @@ public class PlanServiceRemote: ServiceRemoteWordPressComREST {
public func getWpcomPlans(_ success: @escaping (AvailablePlans) -> Void, failure: @escaping (Error) -> Void) {
let endpoint = "plans/mobile"
let path = self.path(forEndpoint: endpoint, withVersion: ._2_0)
let localeKey = self.localeKey(forVersion: ._2_0)
let locale = WordPressComLanguageDatabase().deviceLanguage.slug
let parameters = ["locale": locale]

wordPressComRestApi.GET(path,
parameters: parameters as [String : AnyObject]?,
localeKey: localeKey,
success: {
response, _ in

Expand Down
12 changes: 10 additions & 2 deletions WordPressKit/ServiceRemoteWordPressComREST.h
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
#import <Foundation/Foundation.h>
@import Foundation;

@class WordPressComRestApi;

Expand All @@ -17,7 +17,6 @@ NS_ASSUME_NONNULL_BEGIN
*/
@interface ServiceRemoteWordPressComREST : NSObject


/**
* @brief The API object to use for communications.
*/
Expand Down Expand Up @@ -45,6 +44,15 @@ NS_ASSUME_NONNULL_BEGIN
- (NSString *)pathForEndpoint:(NSString *)endpoint
withVersion:(ServiceRemoteWordPressComRESTApiVersion)apiVersion;

/**
* @brief Returns the locale key corresponding to the specified API version, as this varies.
*
* @param apiVersion The version of the API to use.
*
* @returns The request URL.
*/
- (NSString *)localeKeyForVersion:(ServiceRemoteWordPressComRESTApiVersion)apiVersion;

/**
* @brief An anonoymous API object to use for communications where authentication is not needed.
*
Expand Down
30 changes: 24 additions & 6 deletions WordPressKit/ServiceRemoteWordPressComREST.m
Original file line number Diff line number Diff line change
Expand Up @@ -14,13 +14,16 @@
static NSString* const ServiceRemoteWordPressComRESTApiVersionString_1_3 = @"rest/v1.3";
static NSString* const ServiceRemoteWordPressComRESTApiVersionString_2_0 = @"wpcom/v2";

static NSString* const ServiceRemoteWordPressComRESTLocaleKeyDefault = @"locale";
static NSString* const ServiceRemoteWordPressComRESTLocaleKey_v2_0 = @"_locale";

@interface ServiceRemoteWordPressComREST ()
@end

@implementation ServiceRemoteWordPressComREST

- (instancetype)initWithWordPressComRestApi:(WordPressComRestApi *)wordPressComRestApi {

- (instancetype)initWithWordPressComRestApi:(WordPressComRestApi *)wordPressComRestApi
{
NSParameterAssert([wordPressComRestApi isKindOfClass:[WordPressComRestApi class]]);

self = [super init];
Expand Down Expand Up @@ -79,11 +82,26 @@ - (NSString *)pathForEndpoint:(NSString *)resourceUrl
return [NSString stringWithFormat:@"%@/%@", apiVersionString, resourceUrl];
}

+ (WordPressComRestApi *)anonymousWordPressComRestApiWithUserAgent:(NSString *)userAgent {
- (NSString *)localeKeyForVersion:(ServiceRemoteWordPressComRESTApiVersion)apiVersion
{
NSString *result = nil;

switch (apiVersion) {
case ServiceRemoteWordPressComRESTApiVersion_2_0:
result = ServiceRemoteWordPressComRESTLocaleKey_v2_0;
break;

return [[WordPressComRestApi alloc] initWithOAuthToken:nil
userAgent:userAgent
];
default:
result = ServiceRemoteWordPressComRESTLocaleKeyDefault;
break;
}

return result;
}

+ (WordPressComRestApi *)anonymousWordPressComRestApiWithUserAgent:(NSString *)userAgent
{
return [[WordPressComRestApi alloc] initWithOAuthToken:nil userAgent:userAgent];
}

@end
3 changes: 2 additions & 1 deletion WordPressKit/TimeZoneServiceRemote.swift
Original file line number Diff line number Diff line change
Expand Up @@ -9,9 +9,10 @@ public class TimeZoneServiceRemote: ServiceRemoteWordPressComREST {
public func getTimezones(success: @escaping (([TimeZoneGroup]) -> Void), failure: @escaping ((Error) -> Void)) {
let endpoint = "timezones"
let path = self.path(forEndpoint: endpoint, withVersion: ._2_0)
let localeKey = self.localeKey(forVersion: ._2_0)
let locale = WordPressComLanguageDatabase().deviceLanguage.slug
let parameters: [String: AnyObject] = ["_locale": locale as AnyObject]
wordPressComRestApi.GET(path, parameters: parameters, success: { (response, _) in
wordPressComRestApi.GET(path, parameters: parameters, localeKey: localeKey, success: { (response, _) in
do {
let groups = try self.timezoneGroupsFromResponse(response)
success(groups)
Expand Down
Loading