diff --git a/Package.swift b/Package.swift index 7eb2b940..27c25f6e 100644 --- a/Package.swift +++ b/Package.swift @@ -1,4 +1,4 @@ -// swift-tools-version: 5.10 +// swift-tools-version: 6.1 import PackageDescription @@ -8,11 +8,41 @@ let package = Package( products: [ .library(name: "WordPressKit", targets: ["WordPressKit"]), ], + dependencies: [ + .package(url: "https://github.com/wordpress-mobile/NSObject-SafeExpectations", from: "0.0.6"), + .package(url: "https://github.com/wordpress-mobile/wpxmlrpc", from: "0.9.0"), + ], targets: [ - .binaryTarget( + .target( + name: "WordPressKitObjCUtils", + ), + .target( + name: "WordPressKitModels", + dependencies: [ + "NSObject-SafeExpectations", + "WordPressKitObjCUtils", + ] + ), + .target( + name: "WordPressKitObjC", + dependencies: [ + "NSObject-SafeExpectations", + "wpxmlrpc", + "WordPressKitModels", + "WordPressKitObjCUtils", + ], + publicHeadersPath: "include" + ), + .target( name: "WordPressKit", - url: "https://github.com/user-attachments/files/21582269/WordPressKit.zip", - checksum: "cbfe79d7a4244302d308027ff329f1ccdfd1c604d990871359764eca567ea86f" + dependencies: [ + "WordPressKitObjC", + "WordPressKitModels", + "WordPressKitObjCUtils", + "NSObject-SafeExpectations", + "wpxmlrpc", + ], + swiftSettings: [.swiftLanguageMode(.v5)] ), ] ) diff --git a/Sources/WordPressKit/Services/AccountServiceRemoteREST+SocialService.swift b/Sources/WordPressKit/AccountServiceRemoteREST+SocialService.swift similarity index 100% rename from Sources/WordPressKit/Services/AccountServiceRemoteREST+SocialService.swift rename to Sources/WordPressKit/AccountServiceRemoteREST+SocialService.swift diff --git a/Sources/WordPressKit/Models/AccountSettings.swift b/Sources/WordPressKit/AccountSettings.swift similarity index 100% rename from Sources/WordPressKit/Models/AccountSettings.swift rename to Sources/WordPressKit/AccountSettings.swift diff --git a/Sources/WordPressKit/Services/AccountSettingsRemote.swift b/Sources/WordPressKit/AccountSettingsRemote.swift similarity index 99% rename from Sources/WordPressKit/Services/AccountSettingsRemote.swift rename to Sources/WordPressKit/AccountSettingsRemote.swift index 7ed7751b..37dafc15 100644 --- a/Sources/WordPressKit/Services/AccountSettingsRemote.swift +++ b/Sources/WordPressKit/AccountSettingsRemote.swift @@ -1,4 +1,5 @@ import Foundation +import WordPressKitObjC public class AccountSettingsRemote: ServiceRemoteWordPressComREST { @objc public static let remotes = NSMapTable(keyOptions: NSPointerFunctions.Options(), valueOptions: NSPointerFunctions.Options.weakMemory) diff --git a/Sources/WordPressKit/Models/Activity.swift b/Sources/WordPressKit/Activity.swift similarity index 99% rename from Sources/WordPressKit/Models/Activity.swift rename to Sources/WordPressKit/Activity.swift index 66bb996b..55851f23 100644 --- a/Sources/WordPressKit/Models/Activity.swift +++ b/Sources/WordPressKit/Activity.swift @@ -1,4 +1,5 @@ import Foundation +import WordPressKitModels public struct Activity: Decodable { diff --git a/Sources/WordPressKit/Services/ActivityServiceRemote.swift b/Sources/WordPressKit/ActivityServiceRemote.swift similarity index 99% rename from Sources/WordPressKit/Services/ActivityServiceRemote.swift rename to Sources/WordPressKit/ActivityServiceRemote.swift index 56a57cd1..72b7bf01 100644 --- a/Sources/WordPressKit/Services/ActivityServiceRemote.swift +++ b/Sources/WordPressKit/ActivityServiceRemote.swift @@ -1,4 +1,5 @@ import Foundation +import WordPressKitObjC open class ActivityServiceRemote: ServiceRemoteWordPressComREST { diff --git a/Sources/WordPressKit/Services/ActivityServiceRemote_ApiVersion1_0.swift b/Sources/WordPressKit/ActivityServiceRemote_ApiVersion1_0.swift similarity index 97% rename from Sources/WordPressKit/Services/ActivityServiceRemote_ApiVersion1_0.swift rename to Sources/WordPressKit/ActivityServiceRemote_ApiVersion1_0.swift index 2aa4ac2b..dead1e5f 100644 --- a/Sources/WordPressKit/Services/ActivityServiceRemote_ApiVersion1_0.swift +++ b/Sources/WordPressKit/ActivityServiceRemote_ApiVersion1_0.swift @@ -1,3 +1,6 @@ +import Foundation +import WordPressKitObjC + @objc public class ActivityServiceRemote_ApiVersion1_0: ServiceRemoteWordPressComREST { public enum ResponseError: Error { diff --git a/Sources/WordPressKit/Services/AnnouncementServiceRemote.swift b/Sources/WordPressKit/AnnouncementServiceRemote.swift similarity index 99% rename from Sources/WordPressKit/Services/AnnouncementServiceRemote.swift rename to Sources/WordPressKit/AnnouncementServiceRemote.swift index fe5e24f2..1afc2cbd 100644 --- a/Sources/WordPressKit/Services/AnnouncementServiceRemote.swift +++ b/Sources/WordPressKit/AnnouncementServiceRemote.swift @@ -1,4 +1,5 @@ import Foundation +import WordPressKitObjC /// Retrieves feature announcements from the related endpoint open class AnnouncementServiceRemote: ServiceRemoteWordPressComREST { diff --git a/Sources/CoreAPI/AppTransportSecuritySettings.swift b/Sources/WordPressKit/AppTransportSecuritySettings.swift similarity index 100% rename from Sources/CoreAPI/AppTransportSecuritySettings.swift rename to Sources/WordPressKit/AppTransportSecuritySettings.swift diff --git a/Sources/WordPressKit/Services/AtomicAuthenticationServiceRemote.swift b/Sources/WordPressKit/AtomicAuthenticationServiceRemote.swift similarity index 99% rename from Sources/WordPressKit/Services/AtomicAuthenticationServiceRemote.swift rename to Sources/WordPressKit/AtomicAuthenticationServiceRemote.swift index 2b7d62ac..23fc6b86 100644 --- a/Sources/WordPressKit/Services/AtomicAuthenticationServiceRemote.swift +++ b/Sources/WordPressKit/AtomicAuthenticationServiceRemote.swift @@ -1,4 +1,5 @@ import Foundation +import WordPressKitObjC public class AtomicAuthenticationServiceRemote: ServiceRemoteWordPressComREST { diff --git a/Sources/WordPressKit/Models/Atomic/AtomicLogs.swift b/Sources/WordPressKit/AtomicLogs.swift similarity index 100% rename from Sources/WordPressKit/Models/Atomic/AtomicLogs.swift rename to Sources/WordPressKit/AtomicLogs.swift diff --git a/Sources/WordPressKit/Services/AtomicSiteServiceRemote.swift b/Sources/WordPressKit/AtomicSiteServiceRemote.swift similarity index 99% rename from Sources/WordPressKit/Services/AtomicSiteServiceRemote.swift rename to Sources/WordPressKit/AtomicSiteServiceRemote.swift index c6eecfdf..a574c86e 100644 --- a/Sources/WordPressKit/Services/AtomicSiteServiceRemote.swift +++ b/Sources/WordPressKit/AtomicSiteServiceRemote.swift @@ -1,4 +1,5 @@ import Foundation +import WordPressKitObjC public final class AtomicSiteServiceRemote: ServiceRemoteWordPressComREST { /// - parameter scrollID: Pass the scroll ID from the previous response to diff --git a/Sources/WordPressKit/Services/AutomatedTransferService.swift b/Sources/WordPressKit/AutomatedTransferService.swift similarity index 99% rename from Sources/WordPressKit/Services/AutomatedTransferService.swift rename to Sources/WordPressKit/AutomatedTransferService.swift index 13b87ad6..362648b7 100644 --- a/Sources/WordPressKit/Services/AutomatedTransferService.swift +++ b/Sources/WordPressKit/AutomatedTransferService.swift @@ -1,4 +1,5 @@ import Foundation +import WordPressKitObjC /// Class encapsualting all requests related to performing Automated Transfer operations. public class AutomatedTransferService: ServiceRemoteWordPressComREST { diff --git a/Sources/WordPressKit/Models/AutomatedTransferStatus.swift b/Sources/WordPressKit/AutomatedTransferStatus.swift similarity index 100% rename from Sources/WordPressKit/Models/AutomatedTransferStatus.swift rename to Sources/WordPressKit/AutomatedTransferStatus.swift diff --git a/Sources/WordPressKit/Models/Blaze/BlazeCampaign.swift b/Sources/WordPressKit/BlazeCampaign.swift similarity index 100% rename from Sources/WordPressKit/Models/Blaze/BlazeCampaign.swift rename to Sources/WordPressKit/BlazeCampaign.swift diff --git a/Sources/WordPressKit/Models/Blaze/BlazeCampaignsSearchResponse.swift b/Sources/WordPressKit/BlazeCampaignsSearchResponse.swift similarity index 100% rename from Sources/WordPressKit/Models/Blaze/BlazeCampaignsSearchResponse.swift rename to Sources/WordPressKit/BlazeCampaignsSearchResponse.swift diff --git a/Sources/WordPressKit/Services/BlazeServiceRemote.swift b/Sources/WordPressKit/BlazeServiceRemote.swift similarity index 97% rename from Sources/WordPressKit/Services/BlazeServiceRemote.swift rename to Sources/WordPressKit/BlazeServiceRemote.swift index 5ed721f1..ef98d156 100644 --- a/Sources/WordPressKit/Services/BlazeServiceRemote.swift +++ b/Sources/WordPressKit/BlazeServiceRemote.swift @@ -1,4 +1,5 @@ import Foundation +import WordPressKitObjC open class BlazeServiceRemote: ServiceRemoteWordPressComREST { diff --git a/Sources/WordPressKit/Services/BlockEditorSettingsServiceRemote.swift b/Sources/WordPressKit/BlockEditorSettingsServiceRemote.swift similarity index 100% rename from Sources/WordPressKit/Services/BlockEditorSettingsServiceRemote.swift rename to Sources/WordPressKit/BlockEditorSettingsServiceRemote.swift diff --git a/Sources/WordPressKit/Services/BlogJetpackSettingsServiceRemote.swift b/Sources/WordPressKit/BlogJetpackSettingsServiceRemote.swift similarity index 99% rename from Sources/WordPressKit/Services/BlogJetpackSettingsServiceRemote.swift rename to Sources/WordPressKit/BlogJetpackSettingsServiceRemote.swift index b18c84c7..af6aa811 100644 --- a/Sources/WordPressKit/Services/BlogJetpackSettingsServiceRemote.swift +++ b/Sources/WordPressKit/BlogJetpackSettingsServiceRemote.swift @@ -1,4 +1,5 @@ import Foundation +import WordPressKitObjC public class BlogJetpackSettingsServiceRemote: ServiceRemoteWordPressComREST { diff --git a/Sources/WordPressKit/Services/BloggingPromptsServiceRemote.swift b/Sources/WordPressKit/BloggingPromptsServiceRemote.swift similarity index 99% rename from Sources/WordPressKit/Services/BloggingPromptsServiceRemote.swift rename to Sources/WordPressKit/BloggingPromptsServiceRemote.swift index af39889b..f61667bd 100644 --- a/Sources/WordPressKit/Services/BloggingPromptsServiceRemote.swift +++ b/Sources/WordPressKit/BloggingPromptsServiceRemote.swift @@ -1,3 +1,6 @@ +import Foundation +import WordPressKitObjC + /// Encapsulates logic to fetch blogging prompts from the remote endpoint. /// open class BloggingPromptsServiceRemote: ServiceRemoteWordPressComREST { diff --git a/Sources/WordPressKit/Utility/ChecksumUtil.swift b/Sources/WordPressKit/ChecksumUtil.swift similarity index 100% rename from Sources/WordPressKit/Utility/ChecksumUtil.swift rename to Sources/WordPressKit/ChecksumUtil.swift diff --git a/Sources/WordPressKit/Services/CommentServiceRemoteREST+ApiV2.swift b/Sources/WordPressKit/CommentServiceRemoteREST+ApiV2.swift similarity index 99% rename from Sources/WordPressKit/Services/CommentServiceRemoteREST+ApiV2.swift rename to Sources/WordPressKit/CommentServiceRemoteREST+ApiV2.swift index d6204448..38a77725 100644 --- a/Sources/WordPressKit/Services/CommentServiceRemoteREST+ApiV2.swift +++ b/Sources/WordPressKit/CommentServiceRemoteREST+ApiV2.swift @@ -1,3 +1,4 @@ +import Foundation public extension CommentServiceRemoteREST { /// Lists the available keys for the request parameter. enum RequestKeys: String { diff --git a/Sources/WordPressKit/Services/DashboardServiceRemote.swift b/Sources/WordPressKit/DashboardServiceRemote.swift similarity index 98% rename from Sources/WordPressKit/Services/DashboardServiceRemote.swift rename to Sources/WordPressKit/DashboardServiceRemote.swift index 983ff6f5..55fbe6bc 100644 --- a/Sources/WordPressKit/Services/DashboardServiceRemote.swift +++ b/Sources/WordPressKit/DashboardServiceRemote.swift @@ -1,4 +1,5 @@ import Foundation +import WordPressKitObjC open class DashboardServiceRemote: ServiceRemoteWordPressComREST { open func fetch( diff --git a/Sources/WordPressKit/Models/Extensions/Date+endOfDay.swift b/Sources/WordPressKit/Date+endOfDay.swift similarity index 100% rename from Sources/WordPressKit/Models/Extensions/Date+endOfDay.swift rename to Sources/WordPressKit/Date+endOfDay.swift diff --git a/Sources/WordPressKit/Models/Extensions/Decodable+Dictionary.swift b/Sources/WordPressKit/Decodable+Dictionary.swift similarity index 99% rename from Sources/WordPressKit/Models/Extensions/Decodable+Dictionary.swift rename to Sources/WordPressKit/Decodable+Dictionary.swift index 8559f959..4a5b1ee6 100644 --- a/Sources/WordPressKit/Models/Extensions/Decodable+Dictionary.swift +++ b/Sources/WordPressKit/Decodable+Dictionary.swift @@ -1,3 +1,4 @@ +import Foundation struct JSONCodingKeys: CodingKey { var stringValue: String diff --git a/Sources/WordPressShared/Dictionary+Helpers.swift b/Sources/WordPressKit/Dictionary+Helpers.swift similarity index 100% rename from Sources/WordPressShared/Dictionary+Helpers.swift rename to Sources/WordPressKit/Dictionary+Helpers.swift diff --git a/Sources/WordPressKit/Models/DomainContactInformation.swift b/Sources/WordPressKit/DomainContactInformation.swift similarity index 100% rename from Sources/WordPressKit/Models/DomainContactInformation.swift rename to Sources/WordPressKit/DomainContactInformation.swift diff --git a/Sources/WordPressKit/Services/Domains/DomainsServiceRemote+AllDomains.swift b/Sources/WordPressKit/DomainsServiceRemote+AllDomains.swift similarity index 100% rename from Sources/WordPressKit/Services/Domains/DomainsServiceRemote+AllDomains.swift rename to Sources/WordPressKit/DomainsServiceRemote+AllDomains.swift diff --git a/Sources/WordPressKit/Services/Domains/DomainsServiceRemote.swift b/Sources/WordPressKit/DomainsServiceRemote.swift similarity index 99% rename from Sources/WordPressKit/Services/Domains/DomainsServiceRemote.swift rename to Sources/WordPressKit/DomainsServiceRemote.swift index 51b57386..154b6f69 100644 --- a/Sources/WordPressKit/Services/Domains/DomainsServiceRemote.swift +++ b/Sources/WordPressKit/DomainsServiceRemote.swift @@ -1,4 +1,5 @@ import Foundation +import WordPressKitObjC /// Allows the construction of a request for domain suggestions. /// diff --git a/Sources/WordPressKit/Services/EditorServiceRemote.swift b/Sources/WordPressKit/EditorServiceRemote.swift similarity index 99% rename from Sources/WordPressKit/Services/EditorServiceRemote.swift rename to Sources/WordPressKit/EditorServiceRemote.swift index c6a7bf4d..02967957 100644 --- a/Sources/WordPressKit/Services/EditorServiceRemote.swift +++ b/Sources/WordPressKit/EditorServiceRemote.swift @@ -1,4 +1,5 @@ import Foundation +import WordPressKitObjC public class EditorServiceRemote: ServiceRemoteWordPressComREST { public func postDesignateMobileEditor(_ siteID: Int, editor: EditorSettings.Mobile, success: @escaping (EditorSettings) -> Void, failure: @escaping (Error) -> Void) { diff --git a/Sources/WordPressKit/Models/EditorSettings.swift b/Sources/WordPressKit/EditorSettings.swift similarity index 98% rename from Sources/WordPressKit/Models/EditorSettings.swift rename to Sources/WordPressKit/EditorSettings.swift index 2b54e5b3..d5b39b5d 100644 --- a/Sources/WordPressKit/Models/EditorSettings.swift +++ b/Sources/WordPressKit/EditorSettings.swift @@ -1,3 +1,4 @@ +import Foundation private struct RemoteEditorSettings: Codable { let editorMobile: String let editorWeb: String diff --git a/Sources/CoreAPI/Either.swift b/Sources/WordPressKit/Either.swift similarity index 100% rename from Sources/CoreAPI/Either.swift rename to Sources/WordPressKit/Either.swift diff --git a/Sources/WordPressKit/Models/Extensions/Enum+UnknownCaseRepresentable.swift b/Sources/WordPressKit/Enum+UnknownCaseRepresentable.swift similarity index 96% rename from Sources/WordPressKit/Models/Extensions/Enum+UnknownCaseRepresentable.swift rename to Sources/WordPressKit/Enum+UnknownCaseRepresentable.swift index 1e36a9a6..9cc5abb6 100644 --- a/Sources/WordPressKit/Models/Extensions/Enum+UnknownCaseRepresentable.swift +++ b/Sources/WordPressKit/Enum+UnknownCaseRepresentable.swift @@ -1,3 +1,4 @@ +import Foundation /// Allows automatic defaulting to `unknown` for any Enum that conforms to `UnknownCaseRepresentable` /// Credits: https://www.latenightswift.com/2019/02/04/unknown-enum-cases/ protocol UnknownCaseRepresentable: RawRepresentable, CaseIterable where RawValue: Equatable { diff --git a/Sources/WordPressKit/Exports.swift b/Sources/WordPressKit/Exports.swift new file mode 100644 index 00000000..96fc9d92 --- /dev/null +++ b/Sources/WordPressKit/Exports.swift @@ -0,0 +1,15 @@ +@_exported import WordPressKitModels +@_exported import WordPressKitObjC +@_exported import WordPressKitObjCUtils + +extension ServiceRemoteWordPressComREST { + public var wordPressComRestApi: WordPressComRestApi { + self.wordPressComRESTAPI as! WordPressComRestApi + } +} + +extension ServiceRemoteWordPressXMLRPC { + public var xmlrpcApi: WordPressOrgXMLRPCApi { + self.api as! WordPressOrgXMLRPCApi + } +} diff --git a/Sources/WordPressKit/Models/FeatureFlag.swift b/Sources/WordPressKit/FeatureFlag.swift similarity index 100% rename from Sources/WordPressKit/Models/FeatureFlag.swift rename to Sources/WordPressKit/FeatureFlag.swift diff --git a/Sources/WordPressKit/Services/FeatureFlagRemote.swift b/Sources/WordPressKit/FeatureFlagRemote.swift similarity index 98% rename from Sources/WordPressKit/Services/FeatureFlagRemote.swift rename to Sources/WordPressKit/FeatureFlagRemote.swift index 205e8b05..b59c7024 100644 --- a/Sources/WordPressKit/Services/FeatureFlagRemote.swift +++ b/Sources/WordPressKit/FeatureFlagRemote.swift @@ -1,4 +1,6 @@ +import Foundation import UIKit +import WordPressKitObjC open class FeatureFlagRemote: ServiceRemoteWordPressComREST { diff --git a/Sources/WordPressKit/Services/GravatarServiceRemote.swift b/Sources/WordPressKit/GravatarServiceRemote.swift similarity index 100% rename from Sources/WordPressKit/Services/GravatarServiceRemote.swift rename to Sources/WordPressKit/GravatarServiceRemote.swift diff --git a/Sources/CoreAPI/HTTPAuthenticationAlertController.swift b/Sources/WordPressKit/HTTPAuthenticationAlertController.swift similarity index 100% rename from Sources/CoreAPI/HTTPAuthenticationAlertController.swift rename to Sources/WordPressKit/HTTPAuthenticationAlertController.swift diff --git a/Sources/CoreAPI/HTTPClient.swift b/Sources/WordPressKit/HTTPClient.swift similarity index 100% rename from Sources/CoreAPI/HTTPClient.swift rename to Sources/WordPressKit/HTTPClient.swift diff --git a/Sources/WordPressKit/Utility/HTTPProtocolHelpers.swift b/Sources/WordPressKit/HTTPProtocolHelpers.swift similarity index 100% rename from Sources/WordPressKit/Utility/HTTPProtocolHelpers.swift rename to Sources/WordPressKit/HTTPProtocolHelpers.swift diff --git a/Sources/CoreAPI/HTTPRequestBuilder.swift b/Sources/WordPressKit/HTTPRequestBuilder.swift similarity index 99% rename from Sources/CoreAPI/HTTPRequestBuilder.swift rename to Sources/WordPressKit/HTTPRequestBuilder.swift index c230b7ef..87146358 100644 --- a/Sources/CoreAPI/HTTPRequestBuilder.swift +++ b/Sources/WordPressKit/HTTPRequestBuilder.swift @@ -1,5 +1,5 @@ import Foundation -@_implementationOnly import wpxmlrpc +import wpxmlrpc /// A builder type that appends HTTP request data to a URL. /// diff --git a/Sources/WordPressKit/Services/HomepageSettingsServiceRemote.swift b/Sources/WordPressKit/HomepageSettingsServiceRemote.swift similarity index 98% rename from Sources/WordPressKit/Services/HomepageSettingsServiceRemote.swift rename to Sources/WordPressKit/HomepageSettingsServiceRemote.swift index 5c22783f..5f9f43b0 100644 --- a/Sources/WordPressKit/Services/HomepageSettingsServiceRemote.swift +++ b/Sources/WordPressKit/HomepageSettingsServiceRemote.swift @@ -1,4 +1,5 @@ import Foundation +import WordPressKitObjC public class HomepageSettingsServiceRemote: ServiceRemoteWordPressComREST { diff --git a/Sources/WordPressKit/Services/IPLocationRemote.swift b/Sources/WordPressKit/IPLocationRemote.swift similarity index 100% rename from Sources/WordPressKit/Services/IPLocationRemote.swift rename to Sources/WordPressKit/IPLocationRemote.swift diff --git a/Sources/WordPressKit/Info.plist b/Sources/WordPressKit/Info.plist deleted file mode 100644 index ec0cc7b0..00000000 --- a/Sources/WordPressKit/Info.plist +++ /dev/null @@ -1,24 +0,0 @@ - - - - - CFBundleDevelopmentRegion - en - CFBundleExecutable - $(EXECUTABLE_NAME) - CFBundleIdentifier - $(PRODUCT_BUNDLE_IDENTIFIER) - CFBundleInfoDictionaryVersion - 6.0 - CFBundleName - $(PRODUCT_NAME) - CFBundlePackageType - FMWK - CFBundleShortVersionString - $(MARKETING_VERSION) - CFBundleVersion - $(CURRENT_PROJECT_VERSION) - NSPrincipalClass - - - diff --git a/Sources/WordPressKit/Services/JSONDecoderExtension.swift b/Sources/WordPressKit/JSONDecoderExtension.swift similarity index 100% rename from Sources/WordPressKit/Services/JSONDecoderExtension.swift rename to Sources/WordPressKit/JSONDecoderExtension.swift diff --git a/Sources/WordPressKit/Services/JetpackAIServiceRemote.swift b/Sources/WordPressKit/JetpackAIServiceRemote.swift similarity index 100% rename from Sources/WordPressKit/Services/JetpackAIServiceRemote.swift rename to Sources/WordPressKit/JetpackAIServiceRemote.swift diff --git a/Sources/WordPressKit/Models/Assistant/JetpackAssistantFeatureDetails.swift b/Sources/WordPressKit/JetpackAssistantFeatureDetails.swift similarity index 100% rename from Sources/WordPressKit/Models/Assistant/JetpackAssistantFeatureDetails.swift rename to Sources/WordPressKit/JetpackAssistantFeatureDetails.swift diff --git a/Sources/WordPressKit/Models/JetpackBackup.swift b/Sources/WordPressKit/JetpackBackup.swift similarity index 100% rename from Sources/WordPressKit/Models/JetpackBackup.swift rename to Sources/WordPressKit/JetpackBackup.swift diff --git a/Sources/WordPressKit/Services/JetpackBackupServiceRemote.swift b/Sources/WordPressKit/JetpackBackupServiceRemote.swift similarity index 99% rename from Sources/WordPressKit/Services/JetpackBackupServiceRemote.swift rename to Sources/WordPressKit/JetpackBackupServiceRemote.swift index 3e613897..656ad86f 100644 --- a/Sources/WordPressKit/Services/JetpackBackupServiceRemote.swift +++ b/Sources/WordPressKit/JetpackBackupServiceRemote.swift @@ -1,4 +1,5 @@ import Foundation +import WordPressKitObjC open class JetpackBackupServiceRemote: ServiceRemoteWordPressComREST { diff --git a/Sources/WordPressKit/Services/JetpackCapabilitiesServiceRemote.swift b/Sources/WordPressKit/JetpackCapabilitiesServiceRemote.swift similarity index 98% rename from Sources/WordPressKit/Services/JetpackCapabilitiesServiceRemote.swift rename to Sources/WordPressKit/JetpackCapabilitiesServiceRemote.swift index aad2c331..a2ef3bcf 100644 --- a/Sources/WordPressKit/Services/JetpackCapabilitiesServiceRemote.swift +++ b/Sources/WordPressKit/JetpackCapabilitiesServiceRemote.swift @@ -1,4 +1,5 @@ import Foundation +import WordPressKitObjC /// A service that returns the Jetpack Capabilities for a set of blogs open class JetpackCapabilitiesServiceRemote: ServiceRemoteWordPressComREST { diff --git a/Sources/WordPressKit/Models/Jetpack Scan/JetpackCredentials.swift b/Sources/WordPressKit/JetpackCredentials.swift similarity index 100% rename from Sources/WordPressKit/Models/Jetpack Scan/JetpackCredentials.swift rename to Sources/WordPressKit/JetpackCredentials.swift diff --git a/Sources/WordPressKit/Services/Plugin Management/JetpackPluginManagementClient.swift b/Sources/WordPressKit/JetpackPluginManagementClient.swift similarity index 99% rename from Sources/WordPressKit/Services/Plugin Management/JetpackPluginManagementClient.swift rename to Sources/WordPressKit/JetpackPluginManagementClient.swift index a0749eab..6d78facd 100644 --- a/Sources/WordPressKit/Services/Plugin Management/JetpackPluginManagementClient.swift +++ b/Sources/WordPressKit/JetpackPluginManagementClient.swift @@ -1,3 +1,4 @@ +import Foundation public class JetpackPluginManagementClient: PluginManagementClient { private let siteID: Int private let remote: PluginServiceRemote diff --git a/Sources/WordPressKit/Services/JetpackProxyServiceRemote.swift b/Sources/WordPressKit/JetpackProxyServiceRemote.swift similarity index 98% rename from Sources/WordPressKit/Services/JetpackProxyServiceRemote.swift rename to Sources/WordPressKit/JetpackProxyServiceRemote.swift index 1a8c57ca..6c621eea 100644 --- a/Sources/WordPressKit/Services/JetpackProxyServiceRemote.swift +++ b/Sources/WordPressKit/JetpackProxyServiceRemote.swift @@ -1,3 +1,6 @@ +import Foundation +import WordPressKitObjC + /// Encapsulates Jetpack Proxy requests. public class JetpackProxyServiceRemote: ServiceRemoteWordPressComREST { diff --git a/Sources/WordPressKit/Models/JetpackRestoreTypes.swift b/Sources/WordPressKit/JetpackRestoreTypes.swift similarity index 100% rename from Sources/WordPressKit/Models/JetpackRestoreTypes.swift rename to Sources/WordPressKit/JetpackRestoreTypes.swift diff --git a/Sources/WordPressKit/Models/Jetpack Scan/JetpackScan.swift b/Sources/WordPressKit/JetpackScan.swift similarity index 100% rename from Sources/WordPressKit/Models/Jetpack Scan/JetpackScan.swift rename to Sources/WordPressKit/JetpackScan.swift diff --git a/Sources/WordPressKit/Models/Jetpack Scan/JetpackScanHistory.swift b/Sources/WordPressKit/JetpackScanHistory.swift similarity index 100% rename from Sources/WordPressKit/Models/Jetpack Scan/JetpackScanHistory.swift rename to Sources/WordPressKit/JetpackScanHistory.swift diff --git a/Sources/WordPressKit/Services/JetpackScanServiceRemote.swift b/Sources/WordPressKit/JetpackScanServiceRemote.swift similarity index 99% rename from Sources/WordPressKit/Services/JetpackScanServiceRemote.swift rename to Sources/WordPressKit/JetpackScanServiceRemote.swift index 4ae9f725..43203e37 100644 --- a/Sources/WordPressKit/Services/JetpackScanServiceRemote.swift +++ b/Sources/WordPressKit/JetpackScanServiceRemote.swift @@ -1,4 +1,5 @@ import Foundation +import WordPressKitObjC public class JetpackScanServiceRemote: ServiceRemoteWordPressComREST { // MARK: - Scanning diff --git a/Sources/WordPressKit/Models/Jetpack Scan/JetpackScanThreat.swift b/Sources/WordPressKit/JetpackScanThreat.swift similarity index 100% rename from Sources/WordPressKit/Models/Jetpack Scan/JetpackScanThreat.swift rename to Sources/WordPressKit/JetpackScanThreat.swift diff --git a/Sources/WordPressKit/Services/JetpackServiceRemote.swift b/Sources/WordPressKit/JetpackServiceRemote.swift similarity index 99% rename from Sources/WordPressKit/Services/JetpackServiceRemote.swift rename to Sources/WordPressKit/JetpackServiceRemote.swift index b84d62f7..895b5bc8 100644 --- a/Sources/WordPressKit/Services/JetpackServiceRemote.swift +++ b/Sources/WordPressKit/JetpackServiceRemote.swift @@ -1,4 +1,5 @@ import Foundation +import WordPressKitObjC public struct JetpackInstallError: LocalizedError, Equatable { public enum ErrorType: String { diff --git a/Sources/WordPressKit/Services/JetpackSocialServiceRemote.swift b/Sources/WordPressKit/JetpackSocialServiceRemote.swift similarity index 97% rename from Sources/WordPressKit/Services/JetpackSocialServiceRemote.swift rename to Sources/WordPressKit/JetpackSocialServiceRemote.swift index aa3fb53b..7e732f3c 100644 --- a/Sources/WordPressKit/Services/JetpackSocialServiceRemote.swift +++ b/Sources/WordPressKit/JetpackSocialServiceRemote.swift @@ -1,3 +1,6 @@ +import Foundation +import WordPressKitObjC + /// Encapsulates remote service logic related to Jetpack Social. public class JetpackSocialServiceRemote: ServiceRemoteWordPressComREST { diff --git a/Sources/WordPressKit/Models/Jetpack Scan/JetpackThreatFixStatus.swift b/Sources/WordPressKit/JetpackThreatFixStatus.swift similarity index 100% rename from Sources/WordPressKit/Models/Jetpack Scan/JetpackThreatFixStatus.swift rename to Sources/WordPressKit/JetpackThreatFixStatus.swift diff --git a/Sources/WordPressKit/Models/KeyringConnection.swift b/Sources/WordPressKit/KeyringConnection.swift similarity index 100% rename from Sources/WordPressKit/Models/KeyringConnection.swift rename to Sources/WordPressKit/KeyringConnection.swift diff --git a/Sources/WordPressKit/Models/KeyringConnectionExternalUser.swift b/Sources/WordPressKit/KeyringConnectionExternalUser.swift similarity index 100% rename from Sources/WordPressKit/Models/KeyringConnectionExternalUser.swift rename to Sources/WordPressKit/KeyringConnectionExternalUser.swift diff --git a/Sources/WordPressKit/Models/RemoteUser.h b/Sources/WordPressKit/Models/RemoteUser.h deleted file mode 100644 index 0145fa6c..00000000 --- a/Sources/WordPressKit/Models/RemoteUser.h +++ /dev/null @@ -1,15 +0,0 @@ -#import - -@interface RemoteUser : NSObject - -@property (nonatomic, strong) NSNumber *userID; -@property (nonatomic, strong) NSString *username; -@property (nonatomic, strong) NSString *email; -@property (nonatomic, strong) NSString *displayName; -@property (nonatomic, strong) NSNumber *primaryBlogID; -@property (nonatomic, strong) NSString *avatarURL; -@property (nonatomic, strong) NSDate *dateCreated; -@property (nonatomic, assign) BOOL emailVerified; -@property (nonatomic, strong) NSNumber *linkedUserID; - -@end diff --git a/Sources/WordPressKit/Models/RemoteUser.m b/Sources/WordPressKit/Models/RemoteUser.m deleted file mode 100644 index 751d1e02..00000000 --- a/Sources/WordPressKit/Models/RemoteUser.m +++ /dev/null @@ -1,5 +0,0 @@ -#import "RemoteUser.h" - -@implementation RemoteUser - -@end diff --git a/Sources/CoreAPI/MultipartForm.swift b/Sources/WordPressKit/MultipartForm.swift similarity index 100% rename from Sources/CoreAPI/MultipartForm.swift rename to Sources/WordPressKit/MultipartForm.swift diff --git a/Sources/WordPressKit/Models/Extensions/NSAttributedString+extensions.swift b/Sources/WordPressKit/NSAttributedString+extensions.swift similarity index 100% rename from Sources/WordPressKit/Models/Extensions/NSAttributedString+extensions.swift rename to Sources/WordPressKit/NSAttributedString+extensions.swift diff --git a/Sources/WordPressShared/NSMutableData+Helpers.swift b/Sources/WordPressKit/NSMutableData+Helpers.swift similarity index 100% rename from Sources/WordPressShared/NSMutableData+Helpers.swift rename to Sources/WordPressKit/NSMutableData+Helpers.swift diff --git a/Sources/WordPressKit/Models/Extensions/NSMutableParagraphStyle+extensions.swift b/Sources/WordPressKit/NSMutableParagraphStyle+extensions.swift similarity index 100% rename from Sources/WordPressKit/Models/Extensions/NSMutableParagraphStyle+extensions.swift rename to Sources/WordPressKit/NSMutableParagraphStyle+extensions.swift diff --git a/Sources/CoreAPI/NonceRetrieval.swift b/Sources/WordPressKit/NonceRetrieval.swift similarity index 100% rename from Sources/CoreAPI/NonceRetrieval.swift rename to Sources/WordPressKit/NonceRetrieval.swift diff --git a/Sources/WordPressKit/Services/NotificationSettingsServiceRemote.swift b/Sources/WordPressKit/NotificationSettingsServiceRemote.swift similarity index 93% rename from Sources/WordPressKit/Services/NotificationSettingsServiceRemote.swift rename to Sources/WordPressKit/NotificationSettingsServiceRemote.swift index 334bb71f..71ff15fe 100644 --- a/Sources/WordPressKit/Services/NotificationSettingsServiceRemote.swift +++ b/Sources/WordPressKit/NotificationSettingsServiceRemote.swift @@ -1,17 +1,10 @@ import Foundation +import WordPressKitObjC /// The purpose of this class is to encapsulate all of the interaction with the Notifications REST endpoints. /// Here we'll deal mostly with the Settings / Push Notifications API. /// open class NotificationSettingsServiceRemote: ServiceRemoteWordPressComREST { - /// Designated Initializer. Fails if the remoteApi is nil. - /// - /// - Parameter wordPressComRestApi: A Reference to the WordPressComRestApi that should be used to interact with WordPress.com - /// - public override init(wordPressComRestApi: WordPressComRestApi) { - super.init(wordPressComRestApi: wordPressComRestApi) - } - /// Retrieves all of the Notification Settings /// /// - Parameters: diff --git a/Sources/WordPressKit/Services/NotificationSyncServiceRemote.swift b/Sources/WordPressKit/NotificationSyncServiceRemote.swift similarity index 99% rename from Sources/WordPressKit/Services/NotificationSyncServiceRemote.swift rename to Sources/WordPressKit/NotificationSyncServiceRemote.swift index 53c8c388..1043866b 100644 --- a/Sources/WordPressKit/Services/NotificationSyncServiceRemote.swift +++ b/Sources/WordPressKit/NotificationSyncServiceRemote.swift @@ -1,4 +1,5 @@ import Foundation +import WordPressKitObjC // MARK: - NotificationSyncServiceRemote // diff --git a/Sources/WordPressKit/Services/PageLayoutServiceRemote.swift b/Sources/WordPressKit/PageLayoutServiceRemote.swift similarity index 100% rename from Sources/WordPressKit/Services/PageLayoutServiceRemote.swift rename to Sources/WordPressKit/PageLayoutServiceRemote.swift diff --git a/Sources/WordPressKit/Services/PeopleServiceRemote.swift b/Sources/WordPressKit/PeopleServiceRemote.swift similarity index 99% rename from Sources/WordPressKit/Services/PeopleServiceRemote.swift rename to Sources/WordPressKit/PeopleServiceRemote.swift index e23b26ae..c5012c81 100644 --- a/Sources/WordPressKit/Services/PeopleServiceRemote.swift +++ b/Sources/WordPressKit/PeopleServiceRemote.swift @@ -1,4 +1,5 @@ import Foundation +import WordPressKitObjC /// Encapsulates all of the People Management WordPress.com Methods /// diff --git a/Sources/WordPressKit/Services/Plans/PlanServiceRemote.swift b/Sources/WordPressKit/PlanServiceRemote.swift similarity index 99% rename from Sources/WordPressKit/Services/Plans/PlanServiceRemote.swift rename to Sources/WordPressKit/PlanServiceRemote.swift index b31f8e21..4f8000c2 100644 --- a/Sources/WordPressKit/Services/Plans/PlanServiceRemote.swift +++ b/Sources/WordPressKit/PlanServiceRemote.swift @@ -1,4 +1,5 @@ import Foundation +import WordPressKitObjC open class PlanServiceRemote: ServiceRemoteWordPressComREST { public typealias AvailablePlans = (plans: [RemoteWpcomPlan], groups: [RemotePlanGroup], features: [RemotePlanFeature]) diff --git a/Sources/WordPressKit/Services/Plans/PlanServiceRemote_ApiVersion1_3.swift b/Sources/WordPressKit/PlanServiceRemote_ApiVersion1_3.swift similarity index 98% rename from Sources/WordPressKit/Services/Plans/PlanServiceRemote_ApiVersion1_3.swift rename to Sources/WordPressKit/PlanServiceRemote_ApiVersion1_3.swift index f64d3f9f..ccbb97ed 100644 --- a/Sources/WordPressKit/Services/Plans/PlanServiceRemote_ApiVersion1_3.swift +++ b/Sources/WordPressKit/PlanServiceRemote_ApiVersion1_3.swift @@ -1,4 +1,5 @@ import Foundation +import WordPressKitObjC @objc public class PlanServiceRemote_ApiVersion1_3: ServiceRemoteWordPressComREST { diff --git a/Sources/WordPressKit/Models/Plugins/PluginDirectoryEntry.swift b/Sources/WordPressKit/PluginDirectoryEntry.swift similarity index 100% rename from Sources/WordPressKit/Models/Plugins/PluginDirectoryEntry.swift rename to Sources/WordPressKit/PluginDirectoryEntry.swift diff --git a/Sources/WordPressKit/Models/Plugins/PluginDirectoryFeedPage.swift b/Sources/WordPressKit/PluginDirectoryFeedPage.swift similarity index 100% rename from Sources/WordPressKit/Models/Plugins/PluginDirectoryFeedPage.swift rename to Sources/WordPressKit/PluginDirectoryFeedPage.swift diff --git a/Sources/WordPressKit/Services/PluginDirectoryServiceRemote.swift b/Sources/WordPressKit/PluginDirectoryServiceRemote.swift similarity index 100% rename from Sources/WordPressKit/Services/PluginDirectoryServiceRemote.swift rename to Sources/WordPressKit/PluginDirectoryServiceRemote.swift diff --git a/Sources/WordPressKit/Services/Plugin Management/PluginManagementClient.swift b/Sources/WordPressKit/PluginManagementClient.swift similarity index 100% rename from Sources/WordPressKit/Services/Plugin Management/PluginManagementClient.swift rename to Sources/WordPressKit/PluginManagementClient.swift diff --git a/Sources/WordPressKit/Services/PluginServiceRemote.swift b/Sources/WordPressKit/PluginServiceRemote.swift similarity index 99% rename from Sources/WordPressKit/Services/PluginServiceRemote.swift rename to Sources/WordPressKit/PluginServiceRemote.swift index 9661df9f..a244e1c3 100644 --- a/Sources/WordPressKit/Services/PluginServiceRemote.swift +++ b/Sources/WordPressKit/PluginServiceRemote.swift @@ -1,4 +1,5 @@ import Foundation +import WordPressKitObjC public class PluginServiceRemote: ServiceRemoteWordPressComREST { public enum ResponseError: Error { diff --git a/Sources/WordPressKit/Models/Plugins/PluginState.swift b/Sources/WordPressKit/PluginState.swift similarity index 100% rename from Sources/WordPressKit/Models/Plugins/PluginState.swift rename to Sources/WordPressKit/PluginState.swift diff --git a/Sources/WordPressKit/Services/PostServiceRemoteExtended.swift b/Sources/WordPressKit/PostServiceRemoteExtended.swift similarity index 100% rename from Sources/WordPressKit/Services/PostServiceRemoteExtended.swift rename to Sources/WordPressKit/PostServiceRemoteExtended.swift diff --git a/Sources/WordPressKit/Services/PostServiceRemoteREST+Extended.swift b/Sources/WordPressKit/PostServiceRemoteREST+Extended.swift similarity index 100% rename from Sources/WordPressKit/Services/PostServiceRemoteREST+Extended.swift rename to Sources/WordPressKit/PostServiceRemoteREST+Extended.swift diff --git a/Sources/WordPressKit/Services/PostServiceRemoteREST+Revisions.swift b/Sources/WordPressKit/PostServiceRemoteREST+Revisions.swift similarity index 100% rename from Sources/WordPressKit/Services/PostServiceRemoteREST+Revisions.swift rename to Sources/WordPressKit/PostServiceRemoteREST+Revisions.swift diff --git a/Sources/WordPressKit/PostServiceRemoteREST.swift b/Sources/WordPressKit/PostServiceRemoteREST.swift new file mode 100644 index 00000000..7b4fc9eb --- /dev/null +++ b/Sources/WordPressKit/PostServiceRemoteREST.swift @@ -0,0 +1,56 @@ +import WordPressKitObjC +import NSObject_SafeExpectations + +extension PostServiceRemoteREST { + + /// Requests a list of users that liked the post with the specified ID. + /// + /// Due to the API limitation, up to 90 users will be returned from the endpoint. + /// + /// - Parameters: + /// - postID: The ID for the post. Cannot be nil. + /// - count: Number of records to retrieve. Cannot be nil. If 0, will default to endpoint max. + /// - before: Filter results to Likes before this date/time string. Can be nil. + /// - excludeUserIDs: Array of user IDs to exclude from response. Can be nil. + /// - success: The block that will be executed on success. Can be nil. + /// - failure: The block that will be executed on failure. Can be nil. + @objc(getLikesForPostID:count:before:excludeUserIDs:success:failure:) + public func getLikesForPostID( + _ postID: NSNumber, + count: NSNumber, + before: String?, + excludeUserIDs: [NSNumber]?, + success: (([RemoteLikeUser], NSNumber) -> Void)?, + failure: ((Error?) -> Void)? + ) { + let path = "sites/\(siteID)/posts/\(postID)/likes" + let requestUrl = self.path(forEndpoint: path, withVersion: ._1_2) + let siteID = self.siteID + + // If no count provided, default to endpoint max. + var parameters: [String: Any] = ["number": count == 0 ? 90 : count] + + if let before { + parameters["before"] = before + } + + if let excludeUserIDs { + parameters["exclude"] = excludeUserIDs + } + + wordPressComRESTAPI.get(requestUrl, + parameters: parameters, + success: { (responseObject, httpResponse) in + if let success { + let responseDict = responseObject as? [String: Any] ?? [:] + let jsonUsers = responseDict["likes"] as? [[String: Any]] ?? [] + let users = jsonUsers.map { RemoteLikeUser(dictionary: $0, postID: postID, siteID: siteID) } + let found = responseDict["found"] as? NSNumber ?? 0 + success(users, found) + } + }, failure: { (error, _) in + failure?(error) + }) + } + +} diff --git a/Sources/WordPressKit/Services/PostServiceRemoteXMLRPC+Extended.swift b/Sources/WordPressKit/PostServiceRemoteXMLRPC+Extended.swift similarity index 88% rename from Sources/WordPressKit/Services/PostServiceRemoteXMLRPC+Extended.swift rename to Sources/WordPressKit/PostServiceRemoteXMLRPC+Extended.swift index 098e9e64..f4010838 100644 --- a/Sources/WordPressKit/Services/PostServiceRemoteXMLRPC+Extended.swift +++ b/Sources/WordPressKit/PostServiceRemoteXMLRPC+Extended.swift @@ -1,10 +1,11 @@ import Foundation -@_implementationOnly import wpxmlrpc +import wpxmlrpc +import WordPressKitObjC extension PostServiceRemoteXMLRPC: PostServiceRemoteExtended { public func post(withID postID: Int) async throws -> RemotePost { let parameters = xmlrpcArguments(withExtra: postID) as [AnyObject] - let result = await api.call(method: "wp.getPost", parameters: parameters) + let result = await xmlrpcApi.call(method: "wp.getPost", parameters: parameters) switch result { case .success(let response): return try await decodePost(from: response.body) @@ -19,7 +20,7 @@ extension PostServiceRemoteXMLRPC: PostServiceRemoteExtended { public func createPost(with parameters: RemotePostCreateParameters) async throws -> RemotePost { let dictionary = try makeParameters(from: RemotePostCreateParametersXMLRPCEncoder(parameters: parameters)) let parameters = xmlrpcArguments(withExtra: dictionary) as [AnyObject] - let response = try await api.call(method: "wp.newPost", parameters: parameters).get() + let response = try await xmlrpcApi.call(method: "wp.newPost", parameters: parameters).get() guard let postID = (response.body as? NSObject)?.wpkit_numericValue() else { throw URLError(.unknown) // Should never happen } @@ -29,7 +30,7 @@ extension PostServiceRemoteXMLRPC: PostServiceRemoteExtended { public func patchPost(withID postID: Int, parameters: RemotePostUpdateParameters) async throws -> RemotePost { let dictionary = try makeParameters(from: RemotePostUpdateParametersXMLRPCEncoder(parameters: parameters)) let parameters = xmlrpcArguments(withExtraDefaults: [postID as NSNumber], andExtra: dictionary) as [AnyObject] - let result = await api.call(method: "wp.editPost", parameters: parameters) + let result = await xmlrpcApi.call(method: "wp.editPost", parameters: parameters) switch result { case .success: return try await post(withID: postID) @@ -47,7 +48,7 @@ extension PostServiceRemoteXMLRPC: PostServiceRemoteExtended { public func deletePost(withID postID: Int) async throws { let parameters = xmlrpcArguments(withExtra: postID) as [AnyObject] - let result = await api.call(method: "wp.deletePost", parameters: parameters) + let result = await xmlrpcApi.call(method: "wp.deletePost", parameters: parameters) switch result { case .success: return diff --git a/Sources/WordPressKit/Private/WPKit-Swift.h b/Sources/WordPressKit/Private/WPKit-Swift.h deleted file mode 100644 index 42be4ee1..00000000 --- a/Sources/WordPressKit/Private/WPKit-Swift.h +++ /dev/null @@ -1,8 +0,0 @@ -// Import this header instead of -// This allows the pod to be built as a static or dynamic framework -// See https://github.com/CocoaPods/CocoaPods/issues/7594 -#if __has_include("WordPressKit-Swift.h") - #import "WordPressKit-Swift.h" -#else - #import -#endif diff --git a/Sources/WordPressKit/Services/ProductServiceRemote.swift b/Sources/WordPressKit/ProductServiceRemote.swift similarity index 99% rename from Sources/WordPressKit/Services/ProductServiceRemote.swift rename to Sources/WordPressKit/ProductServiceRemote.swift index cb9545fa..456017b9 100644 --- a/Sources/WordPressKit/Services/ProductServiceRemote.swift +++ b/Sources/WordPressKit/ProductServiceRemote.swift @@ -1,4 +1,5 @@ import Foundation +import WordPressKitObjC /// Provides information about available products for user purchases, such as plans, domains, etc. /// diff --git a/Sources/WordPressKit/Services/PushAuthenticationServiceRemote.swift b/Sources/WordPressKit/PushAuthenticationServiceRemote.swift similarity index 98% rename from Sources/WordPressKit/Services/PushAuthenticationServiceRemote.swift rename to Sources/WordPressKit/PushAuthenticationServiceRemote.swift index 46324e85..5d86ae18 100644 --- a/Sources/WordPressKit/Services/PushAuthenticationServiceRemote.swift +++ b/Sources/WordPressKit/PushAuthenticationServiceRemote.swift @@ -1,4 +1,5 @@ import Foundation +import WordPressKitObjC /// The purpose of this class is to encapsulate all of the interaction with the REST endpoint, /// required to handle WordPress.com 2FA Code Veritication via Push Notifications diff --git a/Sources/WordPressKit/Services/QR Login/QRLoginServiceRemote.swift b/Sources/WordPressKit/QRLoginServiceRemote.swift similarity index 98% rename from Sources/WordPressKit/Services/QR Login/QRLoginServiceRemote.swift rename to Sources/WordPressKit/QRLoginServiceRemote.swift index cad2fe17..c7ea2ea8 100644 --- a/Sources/WordPressKit/Services/QR Login/QRLoginServiceRemote.swift +++ b/Sources/WordPressKit/QRLoginServiceRemote.swift @@ -1,4 +1,5 @@ import Foundation +import WordPressKitObjC open class QRLoginServiceRemote: ServiceRemoteWordPressComREST { /// Validates the incoming QR Login token and retrieves the requesting browser, and location diff --git a/Sources/WordPressKit/Services/QR Login/QRLoginValidationResponse.swift b/Sources/WordPressKit/QRLoginValidationResponse.swift similarity index 100% rename from Sources/WordPressKit/Services/QR Login/QRLoginValidationResponse.swift rename to Sources/WordPressKit/QRLoginValidationResponse.swift diff --git a/Sources/WordPressKit/Models/ReaderFeed.swift b/Sources/WordPressKit/ReaderFeed.swift similarity index 100% rename from Sources/WordPressKit/Models/ReaderFeed.swift rename to Sources/WordPressKit/ReaderFeed.swift diff --git a/Sources/WordPressKit/Services/ReaderPostServiceRemote+Cards.swift b/Sources/WordPressKit/ReaderPostServiceRemote+Cards.swift similarity index 99% rename from Sources/WordPressKit/Services/ReaderPostServiceRemote+Cards.swift rename to Sources/WordPressKit/ReaderPostServiceRemote+Cards.swift index 6795c9b7..e5c45ef2 100644 --- a/Sources/WordPressKit/Services/ReaderPostServiceRemote+Cards.swift +++ b/Sources/WordPressKit/ReaderPostServiceRemote+Cards.swift @@ -1,3 +1,4 @@ +import Foundation public enum ReaderSortingOption: String, CaseIterable { case popularity case date diff --git a/Sources/WordPressKit/Services/ReaderPostServiceRemote+RelatedPosts.swift b/Sources/WordPressKit/ReaderPostServiceRemote+RelatedPosts.swift similarity index 100% rename from Sources/WordPressKit/Services/ReaderPostServiceRemote+RelatedPosts.swift rename to Sources/WordPressKit/ReaderPostServiceRemote+RelatedPosts.swift diff --git a/Sources/WordPressKit/Services/ReaderPostServiceRemote+Subscriptions.swift b/Sources/WordPressKit/ReaderPostServiceRemote+Subscriptions.swift similarity index 100% rename from Sources/WordPressKit/Services/ReaderPostServiceRemote+Subscriptions.swift rename to Sources/WordPressKit/ReaderPostServiceRemote+Subscriptions.swift diff --git a/Sources/WordPressKit/Services/ReaderPostServiceRemote+V2.swift b/Sources/WordPressKit/ReaderPostServiceRemote+V2.swift similarity index 99% rename from Sources/WordPressKit/Services/ReaderPostServiceRemote+V2.swift rename to Sources/WordPressKit/ReaderPostServiceRemote+V2.swift index d085ec2e..653dda95 100644 --- a/Sources/WordPressKit/Services/ReaderPostServiceRemote+V2.swift +++ b/Sources/WordPressKit/ReaderPostServiceRemote+V2.swift @@ -1,3 +1,5 @@ +import Foundation + extension ReaderPostServiceRemote { /// Returns a collection of RemoteReaderPost /// This method returns the best available content for the given topics. diff --git a/Sources/WordPressKit/Services/ReaderServiceDeliveryFrequency.swift b/Sources/WordPressKit/ReaderServiceDeliveryFrequency.swift similarity index 100% rename from Sources/WordPressKit/Services/ReaderServiceDeliveryFrequency.swift rename to Sources/WordPressKit/ReaderServiceDeliveryFrequency.swift diff --git a/Sources/WordPressKit/Services/ReaderSiteSearchServiceRemote.swift b/Sources/WordPressKit/ReaderSiteSearchServiceRemote.swift similarity index 100% rename from Sources/WordPressKit/Services/ReaderSiteSearchServiceRemote.swift rename to Sources/WordPressKit/ReaderSiteSearchServiceRemote.swift diff --git a/Sources/WordPressKit/Services/ReaderTopicServiceError.swift b/Sources/WordPressKit/ReaderTopicServiceError.swift similarity index 100% rename from Sources/WordPressKit/Services/ReaderTopicServiceError.swift rename to Sources/WordPressKit/ReaderTopicServiceError.swift diff --git a/Sources/WordPressKit/Services/ReaderTopicServiceRemote+Interests.swift b/Sources/WordPressKit/ReaderTopicServiceRemote+Interests.swift similarity index 97% rename from Sources/WordPressKit/Services/ReaderTopicServiceRemote+Interests.swift rename to Sources/WordPressKit/ReaderTopicServiceRemote+Interests.swift index 93d064f2..103a4fc6 100644 --- a/Sources/WordPressKit/Services/ReaderTopicServiceRemote+Interests.swift +++ b/Sources/WordPressKit/ReaderTopicServiceRemote+Interests.swift @@ -50,6 +50,6 @@ extension ReaderTopicServiceRemote { public func pathForTopic(slug: String) -> String { let endpoint = path(forEndpoint: "read/tags/\(slug)/posts", withVersion: ._1_2) - return wordPressComRESTAPI.baseURL.appendingPathComponent(endpoint).absoluteString + return wordPressComRestApi.baseURL.appendingPathComponent(endpoint).absoluteString } } diff --git a/Sources/WordPressKit/Services/ReaderTopicServiceRemote+Subscription.swift b/Sources/WordPressKit/ReaderTopicServiceRemote+Subscription.swift similarity index 100% rename from Sources/WordPressKit/Services/ReaderTopicServiceRemote+Subscription.swift rename to Sources/WordPressKit/ReaderTopicServiceRemote+Subscription.swift diff --git a/Sources/WordPressKit/Models/RemoteBlockEditorSettings.swift b/Sources/WordPressKit/RemoteBlockEditorSettings.swift similarity index 100% rename from Sources/WordPressKit/Models/RemoteBlockEditorSettings.swift rename to Sources/WordPressKit/RemoteBlockEditorSettings.swift diff --git a/Sources/WordPressKit/Models/RemoteBlogJetpackModulesSettings.swift b/Sources/WordPressKit/RemoteBlogJetpackModulesSettings.swift similarity index 100% rename from Sources/WordPressKit/Models/RemoteBlogJetpackModulesSettings.swift rename to Sources/WordPressKit/RemoteBlogJetpackModulesSettings.swift diff --git a/Sources/WordPressKit/Models/RemoteBlogJetpackMonitorSettings.swift b/Sources/WordPressKit/RemoteBlogJetpackMonitorSettings.swift similarity index 100% rename from Sources/WordPressKit/Models/RemoteBlogJetpackMonitorSettings.swift rename to Sources/WordPressKit/RemoteBlogJetpackMonitorSettings.swift diff --git a/Sources/WordPressKit/Models/RemoteBlogJetpackSettings.swift b/Sources/WordPressKit/RemoteBlogJetpackSettings.swift similarity index 100% rename from Sources/WordPressKit/Models/RemoteBlogJetpackSettings.swift rename to Sources/WordPressKit/RemoteBlogJetpackSettings.swift diff --git a/Sources/WordPressKit/Models/RemoteBloggingPrompt.swift b/Sources/WordPressKit/RemoteBloggingPrompt.swift similarity index 99% rename from Sources/WordPressKit/Models/RemoteBloggingPrompt.swift rename to Sources/WordPressKit/RemoteBloggingPrompt.swift index 8fc2be46..e5ef7ad7 100644 --- a/Sources/WordPressKit/Models/RemoteBloggingPrompt.swift +++ b/Sources/WordPressKit/RemoteBloggingPrompt.swift @@ -1,3 +1,5 @@ +import Foundation + public struct RemoteBloggingPrompt { public var promptID: Int public var text: String diff --git a/Sources/WordPressKit/Models/RemoteBloggingPromptsSettings.swift b/Sources/WordPressKit/RemoteBloggingPromptsSettings.swift similarity index 99% rename from Sources/WordPressKit/Models/RemoteBloggingPromptsSettings.swift rename to Sources/WordPressKit/RemoteBloggingPromptsSettings.swift index 7bc63631..42cd18ec 100644 --- a/Sources/WordPressKit/Models/RemoteBloggingPromptsSettings.swift +++ b/Sources/WordPressKit/RemoteBloggingPromptsSettings.swift @@ -1,3 +1,4 @@ +import Foundation public struct RemoteBloggingPromptsSettings: Codable { public var promptCardEnabled: Bool public var promptRemindersEnabled: Bool diff --git a/Sources/WordPressKit/Models/RemoteCommentV2.swift b/Sources/WordPressKit/RemoteCommentV2.swift similarity index 99% rename from Sources/WordPressKit/Models/RemoteCommentV2.swift rename to Sources/WordPressKit/RemoteCommentV2.swift index a80eaea2..d993f05f 100644 --- a/Sources/WordPressKit/Models/RemoteCommentV2.swift +++ b/Sources/WordPressKit/RemoteCommentV2.swift @@ -1,3 +1,4 @@ +import Foundation /// Captures the JSON structure for Comments returned from API v2 endpoint. public struct RemoteCommentV2 { public var commentID: Int diff --git a/Sources/WordPressKit/Services/RemoteConfigRemote.swift b/Sources/WordPressKit/RemoteConfigRemote.swift similarity index 100% rename from Sources/WordPressKit/Services/RemoteConfigRemote.swift rename to Sources/WordPressKit/RemoteConfigRemote.swift diff --git a/Sources/WordPressKit/Models/Revisions/RemoteDiff.swift b/Sources/WordPressKit/RemoteDiff.swift similarity index 100% rename from Sources/WordPressKit/Models/Revisions/RemoteDiff.swift rename to Sources/WordPressKit/RemoteDiff.swift diff --git a/Sources/WordPressKit/Models/RemoteDomain.swift b/Sources/WordPressKit/RemoteDomain.swift similarity index 100% rename from Sources/WordPressKit/Models/RemoteDomain.swift rename to Sources/WordPressKit/RemoteDomain.swift diff --git a/Sources/WordPressKit/Models/RemoteGravatarProfile.swift b/Sources/WordPressKit/RemoteGravatarProfile.swift similarity index 100% rename from Sources/WordPressKit/Models/RemoteGravatarProfile.swift rename to Sources/WordPressKit/RemoteGravatarProfile.swift diff --git a/Sources/WordPressKit/Models/RemoteHomepageType.swift b/Sources/WordPressKit/RemoteHomepageType.swift similarity index 100% rename from Sources/WordPressKit/Models/RemoteHomepageType.swift rename to Sources/WordPressKit/RemoteHomepageType.swift diff --git a/Sources/WordPressKit/Models/RemoteInviteLink.swift b/Sources/WordPressKit/RemoteInviteLink.swift similarity index 100% rename from Sources/WordPressKit/Models/RemoteInviteLink.swift rename to Sources/WordPressKit/RemoteInviteLink.swift diff --git a/Sources/WordPressKit/Models/RemoteNotification.swift b/Sources/WordPressKit/RemoteNotification.swift similarity index 100% rename from Sources/WordPressKit/Models/RemoteNotification.swift rename to Sources/WordPressKit/RemoteNotification.swift diff --git a/Sources/WordPressKit/Models/RemoteNotificationSettings.swift b/Sources/WordPressKit/RemoteNotificationSettings.swift similarity index 100% rename from Sources/WordPressKit/Models/RemoteNotificationSettings.swift rename to Sources/WordPressKit/RemoteNotificationSettings.swift diff --git a/Sources/WordPressKit/Models/RemotePageLayouts.swift b/Sources/WordPressKit/RemotePageLayouts.swift similarity index 100% rename from Sources/WordPressKit/Models/RemotePageLayouts.swift rename to Sources/WordPressKit/RemotePageLayouts.swift diff --git a/Sources/WordPressKit/Models/RemotePerson.swift b/Sources/WordPressKit/RemotePerson.swift similarity index 100% rename from Sources/WordPressKit/Models/RemotePerson.swift rename to Sources/WordPressKit/RemotePerson.swift diff --git a/Sources/WordPressKit/Models/RemotePlan_ApiVersion1_3.swift b/Sources/WordPressKit/RemotePlan_ApiVersion1_3.swift similarity index 100% rename from Sources/WordPressKit/Models/RemotePlan_ApiVersion1_3.swift rename to Sources/WordPressKit/RemotePlan_ApiVersion1_3.swift diff --git a/Sources/WordPressKit/Models/RemotePostParameters.swift b/Sources/WordPressKit/RemotePostParameters.swift similarity index 100% rename from Sources/WordPressKit/Models/RemotePostParameters.swift rename to Sources/WordPressKit/RemotePostParameters.swift diff --git a/Sources/WordPressKit/Models/RemoteProfile.swift b/Sources/WordPressKit/RemoteProfile.swift similarity index 100% rename from Sources/WordPressKit/Models/RemoteProfile.swift rename to Sources/WordPressKit/RemoteProfile.swift diff --git a/Sources/WordPressKit/Models/RemotePublicizeConnection.swift b/Sources/WordPressKit/RemotePublicizeConnection.swift similarity index 100% rename from Sources/WordPressKit/Models/RemotePublicizeConnection.swift rename to Sources/WordPressKit/RemotePublicizeConnection.swift diff --git a/Sources/WordPressKit/Models/RemotePublicizeInfo.swift b/Sources/WordPressKit/RemotePublicizeInfo.swift similarity index 100% rename from Sources/WordPressKit/Models/RemotePublicizeInfo.swift rename to Sources/WordPressKit/RemotePublicizeInfo.swift diff --git a/Sources/WordPressKit/Models/RemotePublicizeService.swift b/Sources/WordPressKit/RemotePublicizeService.swift similarity index 100% rename from Sources/WordPressKit/Models/RemotePublicizeService.swift rename to Sources/WordPressKit/RemotePublicizeService.swift diff --git a/Sources/WordPressKit/Models/RemoteReaderCard.swift b/Sources/WordPressKit/RemoteReaderCard.swift similarity index 100% rename from Sources/WordPressKit/Models/RemoteReaderCard.swift rename to Sources/WordPressKit/RemoteReaderCard.swift diff --git a/Sources/WordPressKit/Models/RemoteReaderInterest.swift b/Sources/WordPressKit/RemoteReaderInterest.swift similarity index 100% rename from Sources/WordPressKit/Models/RemoteReaderInterest.swift rename to Sources/WordPressKit/RemoteReaderInterest.swift diff --git a/Sources/WordPressKit/Models/RemoteReaderPost.swift b/Sources/WordPressKit/RemoteReaderPost.swift similarity index 100% rename from Sources/WordPressKit/Models/RemoteReaderPost.swift rename to Sources/WordPressKit/RemoteReaderPost.swift diff --git a/Sources/WordPressKit/Models/RemoteReaderSimplePost.swift b/Sources/WordPressKit/RemoteReaderSimplePost.swift similarity index 100% rename from Sources/WordPressKit/Models/RemoteReaderSimplePost.swift rename to Sources/WordPressKit/RemoteReaderSimplePost.swift diff --git a/Sources/WordPressKit/Models/Revisions/RemoteRevision.swift b/Sources/WordPressKit/RemoteRevision.swift similarity index 100% rename from Sources/WordPressKit/Models/Revisions/RemoteRevision.swift rename to Sources/WordPressKit/RemoteRevision.swift diff --git a/Sources/WordPressKit/Models/RemoteShareAppContent.swift b/Sources/WordPressKit/RemoteShareAppContent.swift similarity index 96% rename from Sources/WordPressKit/Models/RemoteShareAppContent.swift rename to Sources/WordPressKit/RemoteShareAppContent.swift index 6f9ec851..512ee42b 100644 --- a/Sources/WordPressKit/Models/RemoteShareAppContent.swift +++ b/Sources/WordPressKit/RemoteShareAppContent.swift @@ -1,3 +1,4 @@ +import Foundation /// Defines the information structure used for recommending the app to others. /// public struct RemoteShareAppContent: Codable { diff --git a/Sources/WordPressKit/Models/RemoteSharingButton.swift b/Sources/WordPressKit/RemoteSharingButton.swift similarity index 100% rename from Sources/WordPressKit/Models/RemoteSharingButton.swift rename to Sources/WordPressKit/RemoteSharingButton.swift diff --git a/Sources/WordPressKit/Models/RemoteSiteDesign.swift b/Sources/WordPressKit/RemoteSiteDesign.swift similarity index 100% rename from Sources/WordPressKit/Models/RemoteSiteDesign.swift rename to Sources/WordPressKit/RemoteSiteDesign.swift diff --git a/Sources/WordPressKit/Models/RemoteWpcomPlan.swift b/Sources/WordPressKit/RemoteWpcomPlan.swift similarity index 100% rename from Sources/WordPressKit/Models/RemoteWpcomPlan.swift rename to Sources/WordPressKit/RemoteWpcomPlan.swift diff --git a/Sources/CoreAPI/Result+Callback.swift b/Sources/WordPressKit/Result+Callback.swift similarity index 96% rename from Sources/CoreAPI/Result+Callback.swift rename to Sources/WordPressKit/Result+Callback.swift index f34fcae8..6995d89e 100644 --- a/Sources/CoreAPI/Result+Callback.swift +++ b/Sources/WordPressKit/Result+Callback.swift @@ -1,3 +1,4 @@ +import Foundation public extension Swift.Result { // Notice there are no explicit unit tests for this utility because it is implicitly tested via the consuming code's tests. diff --git a/Sources/WordPressShared/Secret.swift b/Sources/WordPressKit/Secret.swift similarity index 100% rename from Sources/WordPressShared/Secret.swift rename to Sources/WordPressKit/Secret.swift diff --git a/Sources/WordPressKit/Services/Plugin Management/SelfHostedPluginManagementClient.swift b/Sources/WordPressKit/SelfHostedPluginManagementClient.swift similarity index 99% rename from Sources/WordPressKit/Services/Plugin Management/SelfHostedPluginManagementClient.swift rename to Sources/WordPressKit/SelfHostedPluginManagementClient.swift index cfb9e632..66073c4d 100644 --- a/Sources/WordPressKit/Services/Plugin Management/SelfHostedPluginManagementClient.swift +++ b/Sources/WordPressKit/SelfHostedPluginManagementClient.swift @@ -1,3 +1,4 @@ +import Foundation public class SelfHostedPluginManagementClient: PluginManagementClient { private let remote: WordPressOrgRestApi diff --git a/Sources/WordPressKit/Services/ServiceRequest.swift b/Sources/WordPressKit/ServiceRequest.swift similarity index 100% rename from Sources/WordPressKit/Services/ServiceRequest.swift rename to Sources/WordPressKit/ServiceRequest.swift diff --git a/Sources/WordPressKit/Services/SiteServiceRemoteWordPressComREST.h b/Sources/WordPressKit/Services/SiteServiceRemoteWordPressComREST.h deleted file mode 100644 index f9ddf740..00000000 --- a/Sources/WordPressKit/Services/SiteServiceRemoteWordPressComREST.h +++ /dev/null @@ -1,15 +0,0 @@ -#import -#import - -NS_ASSUME_NONNULL_BEGIN - -@interface SiteServiceRemoteWordPressComREST : ServiceRemoteWordPressComREST - -@property (nonatomic, readonly) NSNumber *siteID; - -- (instancetype)initWithWordPressComRestApi:(WordPressComRestApi *)api __unavailable; -- (instancetype)initWithWordPressComRestApi:(WordPressComRestApi *)api siteID:(NSNumber *)siteID; - -@end - -NS_ASSUME_NONNULL_END diff --git a/Sources/WordPressKit/Models/SessionDetails.swift b/Sources/WordPressKit/SessionDetails.swift similarity index 98% rename from Sources/WordPressKit/Models/SessionDetails.swift rename to Sources/WordPressKit/SessionDetails.swift index dc36e0fb..1e259a6a 100644 --- a/Sources/WordPressKit/Models/SessionDetails.swift +++ b/Sources/WordPressKit/SessionDetails.swift @@ -1,3 +1,4 @@ +import Foundation public struct SessionDetails { let deviceId: String let platform: String diff --git a/Sources/WordPressKit/Services/ShareAppContentServiceRemote.swift b/Sources/WordPressKit/ShareAppContentServiceRemote.swift similarity index 98% rename from Sources/WordPressKit/Services/ShareAppContentServiceRemote.swift rename to Sources/WordPressKit/ShareAppContentServiceRemote.swift index a69e4f29..2bbc9fcf 100644 --- a/Sources/WordPressKit/Services/ShareAppContentServiceRemote.swift +++ b/Sources/WordPressKit/ShareAppContentServiceRemote.swift @@ -1,3 +1,4 @@ +import Foundation /// Encapsulates logic for fetching content to be shared by the user. /// open class ShareAppContentServiceRemote: ServiceRemoteWordPressComREST { diff --git a/Sources/WordPressKit/Services/SharingServiceRemote.swift b/Sources/WordPressKit/SharingServiceRemote.swift similarity index 99% rename from Sources/WordPressKit/Services/SharingServiceRemote.swift rename to Sources/WordPressKit/SharingServiceRemote.swift index 8be0157a..a6bd0e6e 100644 --- a/Sources/WordPressKit/Services/SharingServiceRemote.swift +++ b/Sources/WordPressKit/SharingServiceRemote.swift @@ -1,5 +1,5 @@ import Foundation -@_implementationOnly import NSObject_SafeExpectations +import NSObject_SafeExpectations /// SharingServiceRemote is responsible for wrangling the REST API calls related to /// publiczice services, publicize connections, and keyring connections. diff --git a/Sources/WordPressKit/Services/SiteDesignServiceRemote.swift b/Sources/WordPressKit/SiteDesignServiceRemote.swift similarity index 100% rename from Sources/WordPressKit/Services/SiteDesignServiceRemote.swift rename to Sources/WordPressKit/SiteDesignServiceRemote.swift diff --git a/Sources/WordPressKit/Services/SiteManagementServiceRemote.swift b/Sources/WordPressKit/SiteManagementServiceRemote.swift similarity index 99% rename from Sources/WordPressKit/Services/SiteManagementServiceRemote.swift rename to Sources/WordPressKit/SiteManagementServiceRemote.swift index 989b9ef4..8a639b08 100644 --- a/Sources/WordPressKit/Services/SiteManagementServiceRemote.swift +++ b/Sources/WordPressKit/SiteManagementServiceRemote.swift @@ -1,4 +1,5 @@ import Foundation +import WordPressKitObjC /// SiteManagementServiceRemote handles REST API calls for managing a WordPress.com site. /// diff --git a/Sources/WordPressKit/Models/Plugins/SitePlugin.swift b/Sources/WordPressKit/SitePlugin.swift similarity index 100% rename from Sources/WordPressKit/Models/Plugins/SitePlugin.swift rename to Sources/WordPressKit/SitePlugin.swift diff --git a/Sources/WordPressKit/Models/Plugins/SitePluginCapabilities.swift b/Sources/WordPressKit/SitePluginCapabilities.swift similarity index 100% rename from Sources/WordPressKit/Models/Plugins/SitePluginCapabilities.swift rename to Sources/WordPressKit/SitePluginCapabilities.swift diff --git a/Sources/CoreAPI/SocialLogin2FANonceInfo.swift b/Sources/WordPressKit/SocialLogin2FANonceInfo.swift similarity index 100% rename from Sources/CoreAPI/SocialLogin2FANonceInfo.swift rename to Sources/WordPressKit/SocialLogin2FANonceInfo.swift diff --git a/Sources/WordPressKit/Models/Stats/Insights/StatsAllAnnualInsight.swift b/Sources/WordPressKit/StatsAllAnnualInsight.swift similarity index 99% rename from Sources/WordPressKit/Models/Stats/Insights/StatsAllAnnualInsight.swift rename to Sources/WordPressKit/StatsAllAnnualInsight.swift index 4c40baff..fe8c6a37 100644 --- a/Sources/WordPressKit/Models/Stats/Insights/StatsAllAnnualInsight.swift +++ b/Sources/WordPressKit/StatsAllAnnualInsight.swift @@ -1,3 +1,4 @@ +import Foundation public struct StatsAllAnnualInsight: Codable { public let allAnnualInsights: [StatsAnnualInsight] diff --git a/Sources/WordPressKit/Models/Stats/Insights/StatsAllTimesInsight.swift b/Sources/WordPressKit/StatsAllTimesInsight.swift similarity index 99% rename from Sources/WordPressKit/Models/Stats/Insights/StatsAllTimesInsight.swift rename to Sources/WordPressKit/StatsAllTimesInsight.swift index 13f2f85f..de703cd1 100644 --- a/Sources/WordPressKit/Models/Stats/Insights/StatsAllTimesInsight.swift +++ b/Sources/WordPressKit/StatsAllTimesInsight.swift @@ -1,3 +1,4 @@ +import Foundation public struct StatsAllTimesInsight: Codable { public let postsCount: Int public let viewsCount: Int diff --git a/Sources/WordPressKit/Models/Stats/Insights/StatsAnnualAndMostPopularTimeInsight.swift b/Sources/WordPressKit/StatsAnnualAndMostPopularTimeInsight.swift similarity index 99% rename from Sources/WordPressKit/Models/Stats/Insights/StatsAnnualAndMostPopularTimeInsight.swift rename to Sources/WordPressKit/StatsAnnualAndMostPopularTimeInsight.swift index 628104fd..4d74523e 100644 --- a/Sources/WordPressKit/Models/Stats/Insights/StatsAnnualAndMostPopularTimeInsight.swift +++ b/Sources/WordPressKit/StatsAnnualAndMostPopularTimeInsight.swift @@ -1,3 +1,4 @@ +import Foundation public struct StatsAnnualAndMostPopularTimeInsight: Codable { /// - A `DateComponents` object with one field populated: `weekday`. public let mostPopularDayOfWeek: DateComponents diff --git a/Sources/WordPressKit/Models/Stats/Time Interval/StatsArchiveTimeIntervalData.swift b/Sources/WordPressKit/StatsArchiveTimeIntervalData.swift similarity index 100% rename from Sources/WordPressKit/Models/Stats/Time Interval/StatsArchiveTimeIntervalData.swift rename to Sources/WordPressKit/StatsArchiveTimeIntervalData.swift diff --git a/Sources/WordPressKit/Models/Stats/Insights/StatsCommentsInsight.swift b/Sources/WordPressKit/StatsCommentsInsight.swift similarity index 99% rename from Sources/WordPressKit/Models/Stats/Insights/StatsCommentsInsight.swift rename to Sources/WordPressKit/StatsCommentsInsight.swift index d18f5856..3cc31100 100644 --- a/Sources/WordPressKit/Models/Stats/Insights/StatsCommentsInsight.swift +++ b/Sources/WordPressKit/StatsCommentsInsight.swift @@ -1,3 +1,4 @@ +import Foundation public struct StatsCommentsInsight: Codable { public let topPosts: [StatsTopCommentsPost] public let topAuthors: [StatsTopCommentsAuthor] diff --git a/Sources/WordPressKit/Models/Stats/Insights/StatsDotComFollowersInsight.swift b/Sources/WordPressKit/StatsDotComFollowersInsight.swift similarity index 99% rename from Sources/WordPressKit/Models/Stats/Insights/StatsDotComFollowersInsight.swift rename to Sources/WordPressKit/StatsDotComFollowersInsight.swift index 2c3d304c..1dded0d4 100644 --- a/Sources/WordPressKit/Models/Stats/Insights/StatsDotComFollowersInsight.swift +++ b/Sources/WordPressKit/StatsDotComFollowersInsight.swift @@ -1,3 +1,4 @@ +import Foundation public struct StatsDotComFollowersInsight: Codable { public let dotComFollowersCount: Int public let topDotComFollowers: [StatsFollower] diff --git a/Sources/WordPressKit/Models/Stats/Insights/StatsEmailFollowersInsight.swift b/Sources/WordPressKit/StatsEmailFollowersInsight.swift similarity index 97% rename from Sources/WordPressKit/Models/Stats/Insights/StatsEmailFollowersInsight.swift rename to Sources/WordPressKit/StatsEmailFollowersInsight.swift index 49dc7be2..dc2fc994 100644 --- a/Sources/WordPressKit/Models/Stats/Insights/StatsEmailFollowersInsight.swift +++ b/Sources/WordPressKit/StatsEmailFollowersInsight.swift @@ -1,3 +1,4 @@ +import Foundation public struct StatsEmailFollowersInsight: Codable { public let emailFollowersCount: Int public let topEmailFollowers: [StatsFollower] diff --git a/Sources/WordPressKit/Models/Stats/Emails/StatsEmailOpensData.swift b/Sources/WordPressKit/StatsEmailOpensData.swift similarity index 100% rename from Sources/WordPressKit/Models/Stats/Emails/StatsEmailOpensData.swift rename to Sources/WordPressKit/StatsEmailOpensData.swift diff --git a/Sources/WordPressKit/Models/Stats/Emails/StatsEmailsSummaryData.swift b/Sources/WordPressKit/StatsEmailsSummaryData.swift similarity index 100% rename from Sources/WordPressKit/Models/Stats/Emails/StatsEmailsSummaryData.swift rename to Sources/WordPressKit/StatsEmailsSummaryData.swift diff --git a/Sources/WordPressKit/Models/Stats/Time Interval/StatsFileDownloadsTimeIntervalData.swift b/Sources/WordPressKit/StatsFileDownloadsTimeIntervalData.swift similarity index 99% rename from Sources/WordPressKit/Models/Stats/Time Interval/StatsFileDownloadsTimeIntervalData.swift rename to Sources/WordPressKit/StatsFileDownloadsTimeIntervalData.swift index da268e47..28eb5ba1 100644 --- a/Sources/WordPressKit/Models/Stats/Time Interval/StatsFileDownloadsTimeIntervalData.swift +++ b/Sources/WordPressKit/StatsFileDownloadsTimeIntervalData.swift @@ -1,3 +1,4 @@ +import Foundation public struct StatsFileDownloadsTimeIntervalData { public let period: StatsPeriodUnit public let periodEndDate: Date diff --git a/Sources/WordPressKit/Models/Stats/Insights/StatsLastPostInsight.swift b/Sources/WordPressKit/StatsLastPostInsight.swift similarity index 100% rename from Sources/WordPressKit/Models/Stats/Insights/StatsLastPostInsight.swift rename to Sources/WordPressKit/StatsLastPostInsight.swift diff --git a/Sources/WordPressKit/Models/Stats/StatsPostDetails.swift b/Sources/WordPressKit/StatsPostDetails.swift similarity index 100% rename from Sources/WordPressKit/Models/Stats/StatsPostDetails.swift rename to Sources/WordPressKit/StatsPostDetails.swift diff --git a/Sources/WordPressKit/Models/Stats/Insights/StatsPostingStreakInsight.swift b/Sources/WordPressKit/StatsPostingStreakInsight.swift similarity index 99% rename from Sources/WordPressKit/Models/Stats/Insights/StatsPostingStreakInsight.swift rename to Sources/WordPressKit/StatsPostingStreakInsight.swift index 035ce31b..9f2bcdd1 100644 --- a/Sources/WordPressKit/Models/Stats/Insights/StatsPostingStreakInsight.swift +++ b/Sources/WordPressKit/StatsPostingStreakInsight.swift @@ -1,3 +1,4 @@ +import Foundation public struct StatsPostingStreakInsight: Equatable, Codable { public let streaks: PostingStreaks public let postingEvents: [PostingStreakEvent] diff --git a/Sources/WordPressKit/Models/Stats/Insights/StatsPublicizeInsight.swift b/Sources/WordPressKit/StatsPublicizeInsight.swift similarity index 99% rename from Sources/WordPressKit/Models/Stats/Insights/StatsPublicizeInsight.swift rename to Sources/WordPressKit/StatsPublicizeInsight.swift index 6db08b0c..ab3dbb4f 100644 --- a/Sources/WordPressKit/Models/Stats/Insights/StatsPublicizeInsight.swift +++ b/Sources/WordPressKit/StatsPublicizeInsight.swift @@ -1,3 +1,4 @@ +import Foundation public struct StatsPublicizeInsight: Codable { public let publicizeServices: [StatsPublicizeService] diff --git a/Sources/WordPressKit/Models/Stats/Time Interval/StatsPublishedPostsTimeIntervalData.swift b/Sources/WordPressKit/StatsPublishedPostsTimeIntervalData.swift similarity index 98% rename from Sources/WordPressKit/Models/Stats/Time Interval/StatsPublishedPostsTimeIntervalData.swift rename to Sources/WordPressKit/StatsPublishedPostsTimeIntervalData.swift index 17bc0a36..b9e91ac9 100644 --- a/Sources/WordPressKit/Models/Stats/Time Interval/StatsPublishedPostsTimeIntervalData.swift +++ b/Sources/WordPressKit/StatsPublishedPostsTimeIntervalData.swift @@ -1,3 +1,4 @@ +import Foundation public struct StatsPublishedPostsTimeIntervalData { public let periodEndDate: Date public let period: StatsPeriodUnit diff --git a/Sources/WordPressKit/Models/Stats/Time Interval/StatsSearchTermTimeIntervalData.swift b/Sources/WordPressKit/StatsSearchTermTimeIntervalData.swift similarity index 99% rename from Sources/WordPressKit/Models/Stats/Time Interval/StatsSearchTermTimeIntervalData.swift rename to Sources/WordPressKit/StatsSearchTermTimeIntervalData.swift index b1580661..af940dc3 100644 --- a/Sources/WordPressKit/Models/Stats/Time Interval/StatsSearchTermTimeIntervalData.swift +++ b/Sources/WordPressKit/StatsSearchTermTimeIntervalData.swift @@ -1,3 +1,4 @@ +import Foundation public struct StatsSearchTermTimeIntervalData { public let period: StatsPeriodUnit public let periodEndDate: Date diff --git a/Sources/WordPressKit/Services/StatsServiceRemoteV2.swift b/Sources/WordPressKit/StatsServiceRemoteV2.swift similarity index 99% rename from Sources/WordPressKit/Services/StatsServiceRemoteV2.swift rename to Sources/WordPressKit/StatsServiceRemoteV2.swift index 050f918b..a4e9d74a 100644 --- a/Sources/WordPressKit/Services/StatsServiceRemoteV2.swift +++ b/Sources/WordPressKit/StatsServiceRemoteV2.swift @@ -1,4 +1,5 @@ import Foundation +import WordPressKitObjC // This name isn't great! After finishing the work on StatsRefresh we'll get rid of the "old" // one and rename this to not have "V2" in it, but we want to keep the old one around diff --git a/Sources/WordPressKit/Models/Stats/Time Interval/StatsSiteMetricsResponse.swift b/Sources/WordPressKit/StatsSiteMetricsResponse.swift similarity index 100% rename from Sources/WordPressKit/Models/Stats/Time Interval/StatsSiteMetricsResponse.swift rename to Sources/WordPressKit/StatsSiteMetricsResponse.swift diff --git a/Sources/WordPressKit/Models/Stats/StatsSubscribersSummaryData.swift b/Sources/WordPressKit/StatsSubscribersSummaryData.swift similarity index 100% rename from Sources/WordPressKit/Models/Stats/StatsSubscribersSummaryData.swift rename to Sources/WordPressKit/StatsSubscribersSummaryData.swift diff --git a/Sources/WordPressKit/Models/Stats/Time Interval/StatsSummaryTimeIntervalData.swift b/Sources/WordPressKit/StatsSummaryTimeIntervalData.swift similarity index 100% rename from Sources/WordPressKit/Models/Stats/Time Interval/StatsSummaryTimeIntervalData.swift rename to Sources/WordPressKit/StatsSummaryTimeIntervalData.swift diff --git a/Sources/WordPressKit/Models/Stats/Insights/StatsTagsAndCategoriesInsight.swift b/Sources/WordPressKit/StatsTagsAndCategoriesInsight.swift similarity index 99% rename from Sources/WordPressKit/Models/Stats/Insights/StatsTagsAndCategoriesInsight.swift rename to Sources/WordPressKit/StatsTagsAndCategoriesInsight.swift index 4af5e2a4..07f29563 100644 --- a/Sources/WordPressKit/Models/Stats/Insights/StatsTagsAndCategoriesInsight.swift +++ b/Sources/WordPressKit/StatsTagsAndCategoriesInsight.swift @@ -1,3 +1,4 @@ +import Foundation public struct StatsTagsAndCategoriesInsight: Codable { public let topTagsAndCategories: [StatsTagAndCategory] diff --git a/Sources/WordPressKit/Models/Stats/Insights/StatsTodayInsight.swift b/Sources/WordPressKit/StatsTodayInsight.swift similarity index 98% rename from Sources/WordPressKit/Models/Stats/Insights/StatsTodayInsight.swift rename to Sources/WordPressKit/StatsTodayInsight.swift index 2a271b62..beade15a 100644 --- a/Sources/WordPressKit/Models/Stats/Insights/StatsTodayInsight.swift +++ b/Sources/WordPressKit/StatsTodayInsight.swift @@ -1,3 +1,4 @@ +import Foundation public struct StatsTodayInsight: Codable { public let viewsCount: Int public let visitorsCount: Int diff --git a/Sources/WordPressKit/Models/Stats/Time Interval/StatsTopAuthorsTimeIntervalData.swift b/Sources/WordPressKit/StatsTopAuthorsTimeIntervalData.swift similarity index 99% rename from Sources/WordPressKit/Models/Stats/Time Interval/StatsTopAuthorsTimeIntervalData.swift rename to Sources/WordPressKit/StatsTopAuthorsTimeIntervalData.swift index 24da95a6..9d6ace2a 100644 --- a/Sources/WordPressKit/Models/Stats/Time Interval/StatsTopAuthorsTimeIntervalData.swift +++ b/Sources/WordPressKit/StatsTopAuthorsTimeIntervalData.swift @@ -1,3 +1,4 @@ +import Foundation public struct StatsTopAuthorsTimeIntervalData { public let period: StatsPeriodUnit public let periodEndDate: Date diff --git a/Sources/WordPressKit/Models/Stats/Time Interval/StatsTopClicksTimeIntervalData.swift b/Sources/WordPressKit/StatsTopClicksTimeIntervalData.swift similarity index 99% rename from Sources/WordPressKit/Models/Stats/Time Interval/StatsTopClicksTimeIntervalData.swift rename to Sources/WordPressKit/StatsTopClicksTimeIntervalData.swift index e368bca2..e270df46 100644 --- a/Sources/WordPressKit/Models/Stats/Time Interval/StatsTopClicksTimeIntervalData.swift +++ b/Sources/WordPressKit/StatsTopClicksTimeIntervalData.swift @@ -1,3 +1,4 @@ +import Foundation public struct StatsTopClicksTimeIntervalData { public let period: StatsPeriodUnit public let periodEndDate: Date diff --git a/Sources/WordPressKit/Models/Stats/Time Interval/StatsTopCountryTimeIntervalData.swift b/Sources/WordPressKit/StatsTopCountryTimeIntervalData.swift similarity index 99% rename from Sources/WordPressKit/Models/Stats/Time Interval/StatsTopCountryTimeIntervalData.swift rename to Sources/WordPressKit/StatsTopCountryTimeIntervalData.swift index 80c30d71..9ca0703e 100644 --- a/Sources/WordPressKit/Models/Stats/Time Interval/StatsTopCountryTimeIntervalData.swift +++ b/Sources/WordPressKit/StatsTopCountryTimeIntervalData.swift @@ -1,3 +1,4 @@ +import Foundation public struct StatsTopCountryTimeIntervalData { public let period: StatsPeriodUnit public let periodEndDate: Date diff --git a/Sources/WordPressKit/Models/Stats/Time Interval/StatsTopPostsTimeIntervalData.swift b/Sources/WordPressKit/StatsTopPostsTimeIntervalData.swift similarity index 99% rename from Sources/WordPressKit/Models/Stats/Time Interval/StatsTopPostsTimeIntervalData.swift rename to Sources/WordPressKit/StatsTopPostsTimeIntervalData.swift index 5f61bf82..6a3ad2ff 100644 --- a/Sources/WordPressKit/Models/Stats/Time Interval/StatsTopPostsTimeIntervalData.swift +++ b/Sources/WordPressKit/StatsTopPostsTimeIntervalData.swift @@ -1,3 +1,4 @@ +import Foundation public struct StatsTopPostsTimeIntervalData { public let period: StatsPeriodUnit public let periodEndDate: Date diff --git a/Sources/WordPressKit/Models/Stats/Time Interval/StatsTopReferrersTimeIntervalData.swift b/Sources/WordPressKit/StatsTopReferrersTimeIntervalData.swift similarity index 99% rename from Sources/WordPressKit/Models/Stats/Time Interval/StatsTopReferrersTimeIntervalData.swift rename to Sources/WordPressKit/StatsTopReferrersTimeIntervalData.swift index b859a2d9..03c1bb98 100644 --- a/Sources/WordPressKit/Models/Stats/Time Interval/StatsTopReferrersTimeIntervalData.swift +++ b/Sources/WordPressKit/StatsTopReferrersTimeIntervalData.swift @@ -1,3 +1,4 @@ +import Foundation public struct StatsTopReferrersTimeIntervalData { public let period: StatsPeriodUnit public let periodEndDate: Date diff --git a/Sources/WordPressKit/Models/Stats/Time Interval/StatsTopVideosTimeIntervalData.swift b/Sources/WordPressKit/StatsTopVideosTimeIntervalData.swift similarity index 99% rename from Sources/WordPressKit/Models/Stats/Time Interval/StatsTopVideosTimeIntervalData.swift rename to Sources/WordPressKit/StatsTopVideosTimeIntervalData.swift index e61999d1..0690474b 100644 --- a/Sources/WordPressKit/Models/Stats/Time Interval/StatsTopVideosTimeIntervalData.swift +++ b/Sources/WordPressKit/StatsTopVideosTimeIntervalData.swift @@ -1,3 +1,4 @@ +import Foundation public struct StatsTopVideosTimeIntervalData { public let period: StatsPeriodUnit public let periodEndDate: Date diff --git a/Sources/WordPressKit/Models/Stats/Time Interval/StatsTotalsSummaryData.swift b/Sources/WordPressKit/StatsTotalsSummaryData.swift similarity index 98% rename from Sources/WordPressKit/Models/Stats/Time Interval/StatsTotalsSummaryData.swift rename to Sources/WordPressKit/StatsTotalsSummaryData.swift index 5e8e9958..52769520 100644 --- a/Sources/WordPressKit/Models/Stats/Time Interval/StatsTotalsSummaryData.swift +++ b/Sources/WordPressKit/StatsTotalsSummaryData.swift @@ -1,3 +1,4 @@ +import Foundation public struct StatsTotalsSummaryData { public let period: StatsPeriodUnit public let periodEndDate: Date diff --git a/Sources/WordPressShared/String+Helpers.swift b/Sources/WordPressKit/String+Helpers.swift similarity index 100% rename from Sources/WordPressShared/String+Helpers.swift rename to Sources/WordPressKit/String+Helpers.swift diff --git a/Sources/WordPressKit/Utility/StringCodingKey.swift b/Sources/WordPressKit/StringCodingKey.swift similarity index 100% rename from Sources/WordPressKit/Utility/StringCodingKey.swift rename to Sources/WordPressKit/StringCodingKey.swift diff --git a/Sources/CoreAPI/StringEncoding+IANA.swift b/Sources/WordPressKit/StringEncoding+IANA.swift similarity index 100% rename from Sources/CoreAPI/StringEncoding+IANA.swift rename to Sources/WordPressKit/StringEncoding+IANA.swift diff --git a/Sources/WordPressKit/Services/SubscribersServiceRemote.swift b/Sources/WordPressKit/SubscribersServiceRemote.swift similarity index 99% rename from Sources/WordPressKit/Services/SubscribersServiceRemote.swift rename to Sources/WordPressKit/SubscribersServiceRemote.swift index abf68f04..6771106f 100644 --- a/Sources/WordPressKit/Services/SubscribersServiceRemote.swift +++ b/Sources/WordPressKit/SubscribersServiceRemote.swift @@ -1,4 +1,5 @@ import Foundation +import WordPressKitObjC public class SubscribersServiceRemote: ServiceRemoteWordPressComREST { diff --git a/Sources/WordPressKit/Services/TimeZoneServiceRemote.swift b/Sources/WordPressKit/TimeZoneServiceRemote.swift similarity index 99% rename from Sources/WordPressKit/Services/TimeZoneServiceRemote.swift rename to Sources/WordPressKit/TimeZoneServiceRemote.swift index 500ac566..72685194 100644 --- a/Sources/WordPressKit/Services/TimeZoneServiceRemote.swift +++ b/Sources/WordPressKit/TimeZoneServiceRemote.swift @@ -1,4 +1,5 @@ import Foundation +import WordPressKitObjC public class TimeZoneServiceRemote: ServiceRemoteWordPressComREST { public enum ResponseError: Error { diff --git a/Sources/WordPressKit/Services/TransactionsServiceRemote.swift b/Sources/WordPressKit/TransactionsServiceRemote.swift similarity index 99% rename from Sources/WordPressKit/Services/TransactionsServiceRemote.swift rename to Sources/WordPressKit/TransactionsServiceRemote.swift index 84eaaf29..db599669 100644 --- a/Sources/WordPressKit/Services/TransactionsServiceRemote.swift +++ b/Sources/WordPressKit/TransactionsServiceRemote.swift @@ -1,4 +1,5 @@ import Foundation +import WordPressKitObjC @objc public class TransactionsServiceRemote: ServiceRemoteWordPressComREST { diff --git a/Sources/WordPressKit/Utility/UIDevice+Extensions.swift b/Sources/WordPressKit/UIDevice+Extensions.swift similarity index 94% rename from Sources/WordPressKit/Utility/UIDevice+Extensions.swift rename to Sources/WordPressKit/UIDevice+Extensions.swift index 808427df..10d95912 100644 --- a/Sources/WordPressKit/Utility/UIDevice+Extensions.swift +++ b/Sources/WordPressKit/UIDevice+Extensions.swift @@ -1,3 +1,4 @@ +import Foundation import UIKit extension UIDevice { diff --git a/Sources/WordPressKit/Services/UsersServiceRemoteXMLRPC.swift b/Sources/WordPressKit/UsersServiceRemoteXMLRPC.swift similarity index 96% rename from Sources/WordPressKit/Services/UsersServiceRemoteXMLRPC.swift rename to Sources/WordPressKit/UsersServiceRemoteXMLRPC.swift index ec9b8844..6589b761 100644 --- a/Sources/WordPressKit/Services/UsersServiceRemoteXMLRPC.swift +++ b/Sources/WordPressKit/UsersServiceRemoteXMLRPC.swift @@ -23,7 +23,7 @@ public class UsersServiceRemoteXMLRPC: ServiceRemoteWordPressXMLRPC { success(profile) }, failure: { (error, _) in - failure(error) + failure(error as NSError) }) } diff --git a/Sources/WordPressKit/Models/WPCountry.swift b/Sources/WordPressKit/WPCountry.swift similarity index 100% rename from Sources/WordPressKit/Models/WPCountry.swift rename to Sources/WordPressKit/WPCountry.swift diff --git a/Sources/WordPressKit/Logging/WPKitLogging.swift b/Sources/WordPressKit/WPKitLogging.swift similarity index 97% rename from Sources/WordPressKit/Logging/WPKitLogging.swift rename to Sources/WordPressKit/WPKitLogging.swift index f01875b9..74b484e8 100644 --- a/Sources/WordPressKit/Logging/WPKitLogging.swift +++ b/Sources/WordPressKit/WPKitLogging.swift @@ -1,3 +1,4 @@ +import Foundation func WPKitLogError(_ format: String, _ arguments: CVarArg...) { withVaList(arguments) { WPKitLogvError(format, $0) } } diff --git a/Sources/WordPressKit/Models/WPState.swift b/Sources/WordPressKit/WPState.swift similarity index 100% rename from Sources/WordPressKit/Models/WPState.swift rename to Sources/WordPressKit/WPState.swift diff --git a/Sources/WordPressKit/Models/WPTimeZone.swift b/Sources/WordPressKit/WPTimeZone.swift similarity index 100% rename from Sources/WordPressKit/Models/WPTimeZone.swift rename to Sources/WordPressKit/WPTimeZone.swift diff --git a/Sources/CoreAPI/WebauthChallengeInfo.swift b/Sources/WordPressKit/WebauthChallengeInfo.swift similarity index 100% rename from Sources/CoreAPI/WebauthChallengeInfo.swift rename to Sources/WordPressKit/WebauthChallengeInfo.swift diff --git a/Sources/CoreAPI/WordPressAPIError+NSErrorBridge.swift b/Sources/WordPressKit/WordPressAPIError+NSErrorBridge.swift similarity index 99% rename from Sources/CoreAPI/WordPressAPIError+NSErrorBridge.swift rename to Sources/WordPressKit/WordPressAPIError+NSErrorBridge.swift index 594c3e3e..fb50eb7f 100644 --- a/Sources/CoreAPI/WordPressAPIError+NSErrorBridge.swift +++ b/Sources/WordPressKit/WordPressAPIError+NSErrorBridge.swift @@ -1,7 +1,4 @@ import Foundation -#if SWIFT_PACKAGE -import APIInterface -#endif /// Custom `NSError` bridge implementation. /// diff --git a/Sources/CoreAPI/WordPressAPIError.swift b/Sources/WordPressKit/WordPressAPIError.swift similarity index 100% rename from Sources/CoreAPI/WordPressAPIError.swift rename to Sources/WordPressKit/WordPressAPIError.swift diff --git a/Sources/WordPressShared/WordPressComLanguageDatabase.swift b/Sources/WordPressKit/WordPressComLanguageDatabase.swift similarity index 100% rename from Sources/WordPressShared/WordPressComLanguageDatabase.swift rename to Sources/WordPressKit/WordPressComLanguageDatabase.swift diff --git a/Sources/CoreAPI/WordPressComOAuthClient.swift b/Sources/WordPressKit/WordPressComOAuthClient.swift similarity index 100% rename from Sources/CoreAPI/WordPressComOAuthClient.swift rename to Sources/WordPressKit/WordPressComOAuthClient.swift diff --git a/Sources/CoreAPI/WordPressComRestApi.swift b/Sources/WordPressKit/WordPressComRestApi.swift similarity index 97% rename from Sources/CoreAPI/WordPressComRestApi.swift rename to Sources/WordPressKit/WordPressComRestApi.swift index 26055e7d..e35c5519 100644 --- a/Sources/CoreAPI/WordPressComRestApi.swift +++ b/Sources/WordPressKit/WordPressComRestApi.swift @@ -1,6 +1,3 @@ -#if SWIFT_PACKAGE -import APIInterface -#endif import Foundation // MARK: - WordPressComRestApiError @@ -685,4 +682,27 @@ extension WordPressComRestApi: WordPressComRESTAPIInterfacing { failure: failure as FailureReponseBlock ) } + + @objc public func unknownResponseError() -> any Error { + NSError( + domain: WordPressComRestApiEndpointError.errorDomain, + code: WordPressComRestApiErrorCode.unknown.rawValue, + userInfo: [ + WordPressComRestApi.ErrorKeyErrorMessage: NSLocalizedString("Unknown error", comment: "Unknown error"), + NSLocalizedDescriptionKey: NSLocalizedString("Unknown error", comment: "Unknown error") + ] + ) + } + + @objc public func uploadFailedErrorCode() -> Int { + WordPressComRestApiErrorCode.uploadFailed.rawValue + } + + @objc public func errorCodeKey() -> String { + Self.ErrorKeyErrorCode + } + + @objc public func errorMessageKey() -> String { + Self.ErrorKeyErrorMessage + } } diff --git a/Sources/WordPressKit/Services/WordPressComServiceRemote+SiteCreation.swift b/Sources/WordPressKit/WordPressComServiceRemote+SiteCreation.swift similarity index 100% rename from Sources/WordPressKit/Services/WordPressComServiceRemote+SiteCreation.swift rename to Sources/WordPressKit/WordPressComServiceRemote+SiteCreation.swift diff --git a/Sources/WordPressKit/Services/WordPressComServiceRemote+SiteSegments.swift b/Sources/WordPressKit/WordPressComServiceRemote+SiteSegments.swift similarity index 99% rename from Sources/WordPressKit/Services/WordPressComServiceRemote+SiteSegments.swift rename to Sources/WordPressKit/WordPressComServiceRemote+SiteSegments.swift index 63763e0e..f58e7757 100644 --- a/Sources/WordPressKit/Services/WordPressComServiceRemote+SiteSegments.swift +++ b/Sources/WordPressKit/WordPressComServiceRemote+SiteSegments.swift @@ -1,3 +1,4 @@ +import Foundation /// Models a type of site. public struct SiteSegment { public let identifier: Int64 // we use a numeric ID for segments; see p9wMUP-bH-612-p2 for discussion diff --git a/Sources/WordPressKit/Services/WordPressComServiceRemote+SiteVerticals.swift b/Sources/WordPressKit/WordPressComServiceRemote+SiteVerticals.swift similarity index 100% rename from Sources/WordPressKit/Services/WordPressComServiceRemote+SiteVerticals.swift rename to Sources/WordPressKit/WordPressComServiceRemote+SiteVerticals.swift diff --git a/Sources/WordPressKit/Services/WordPressComServiceRemote+SiteVerticalsPrompt.swift b/Sources/WordPressKit/WordPressComServiceRemote+SiteVerticalsPrompt.swift similarity index 100% rename from Sources/WordPressKit/Services/WordPressComServiceRemote+SiteVerticalsPrompt.swift rename to Sources/WordPressKit/WordPressComServiceRemote+SiteVerticalsPrompt.swift diff --git a/Sources/WordPressKit/WordPressKit.h b/Sources/WordPressKit/WordPressKit.h deleted file mode 100644 index 67570367..00000000 --- a/Sources/WordPressKit/WordPressKit.h +++ /dev/null @@ -1,65 +0,0 @@ -#import - -//! Project version number for WordPressKit. -FOUNDATION_EXPORT double WordPressKitVersionNumber; - -//! Project version string for WordPressKit. -FOUNDATION_EXPORT const unsigned char WordPressKitVersionString[]; - -#import -#import -#import -#import -#import - -#import -#import -#import - -#import -#import -#import -#import -#import -#import -#import -#import -#import -#import -#import -#import -#import -#import -#import -#import -#import -#import -#import -#import -#import -#import -#import - -#import -#import -#import -#import -#import -#import -#import -#import -#import -#import -#import - -#import - -#import - -/// Inline WordPressShared -#import -#import -#import -#import -#import -#import diff --git a/Sources/CoreAPI/WordPressOrgRestApi.swift b/Sources/WordPressKit/WordPressOrgRestApi.swift similarity index 100% rename from Sources/CoreAPI/WordPressOrgRestApi.swift rename to Sources/WordPressKit/WordPressOrgRestApi.swift diff --git a/Sources/CoreAPI/WordPressOrgXMLRPCApi.swift b/Sources/WordPressKit/WordPressOrgXMLRPCApi.swift similarity index 95% rename from Sources/CoreAPI/WordPressOrgXMLRPCApi.swift rename to Sources/WordPressKit/WordPressOrgXMLRPCApi.swift index a997efd1..95b72053 100644 --- a/Sources/CoreAPI/WordPressOrgXMLRPCApi.swift +++ b/Sources/WordPressKit/WordPressOrgXMLRPCApi.swift @@ -1,10 +1,10 @@ import Foundation -@_implementationOnly import wpxmlrpc +import wpxmlrpc /// Class to connect to the XMLRPC API on self hosted sites. -open class WordPressOrgXMLRPCApi: NSObject { - public typealias SuccessResponseBlock = (AnyObject, HTTPURLResponse?) -> Void - public typealias FailureReponseBlock = (_ error: NSError, _ httpResponse: HTTPURLResponse?) -> Void +open class WordPressOrgXMLRPCApi: NSObject, WordPressOrgXMLRPCApiInterfacing { + public typealias SuccessResponseBlock = (Any, HTTPURLResponse?) -> Void + public typealias FailureReponseBlock = (_ error: any Error, _ httpResponse: HTTPURLResponse?) -> Void @available(*, deprecated, message: "This property is no longer being used because WordPressKit now sends all HTTP requests using `URLSession` directly.") public static var useURLSession = true @@ -126,10 +126,12 @@ open class WordPressOrgXMLRPCApi: NSObject { returns nil it's because something happened on the request serialization and the network request was not started, but the failure callback will be invoked with the error specificing the serialization issues. */ - @objc @discardableResult open func callMethod(_ method: String, - parameters: [AnyObject]?, - success: @escaping SuccessResponseBlock, - failure: @escaping FailureReponseBlock) -> Progress? { + @objc @discardableResult open func callMethod( + _ method: String, + parameters: [Any]?, + success: @escaping (Any, HTTPURLResponse?) -> Void, + failure: @escaping (any Error, HTTPURLResponse?) -> Void + ) -> Progress { let progress = Progress.discreteProgress(totalUnitCount: 100) Task { @MainActor in let result = await self.call(method: method, parameters: parameters, fulfilling: progress, streaming: false) @@ -156,10 +158,11 @@ open class WordPressOrgXMLRPCApi: NSObject { returns nil it's because something happened on the request serialization and the network request was not started, but the failure callback will be invoked with the error specificing the serialization issues. */ - @objc @discardableResult open func streamCallMethod(_ method: String, - parameters: [AnyObject]?, - success: @escaping SuccessResponseBlock, - failure: @escaping FailureReponseBlock) -> Progress? { + @objc @discardableResult open func streamCallMethod( + _ method: String, parameters: [Any]?, + success: @escaping (Any, HTTPURLResponse?) -> Void, + failure: @escaping (any Error, HTTPURLResponse?) -> Void + ) -> Progress { let progress = Progress.discreteProgress(totalUnitCount: 100) Task { @MainActor in let result = await self.call(method: method, parameters: parameters, fulfilling: progress, streaming: true) @@ -184,7 +187,7 @@ open class WordPressOrgXMLRPCApi: NSObject { /// - Parameters: /// - streaming: set to `true` if there are large data (i.e. uploading files) in given `parameters`. `false` by default. /// - Returns: A `Result` type that contains the XMLRPC success or failure result. - func call(method: String, parameters: [AnyObject]?, fulfilling progress: Progress? = nil, streaming: Bool = false) async -> WordPressAPIResult, WordPressOrgXMLRPCApiFault> { + func call(method: String, parameters: [Any]?, fulfilling progress: Progress? = nil, streaming: Bool = false) async -> WordPressAPIResult, WordPressOrgXMLRPCApiFault> { let session = streaming ? uploadURLSession : urlSession let builder = HTTPRequestBuilder(url: endpoint) .method(.post) diff --git a/Sources/CoreAPI/WordPressOrgXMLRPCValidator.swift b/Sources/WordPressKit/WordPressOrgXMLRPCValidator.swift similarity index 99% rename from Sources/CoreAPI/WordPressOrgXMLRPCValidator.swift rename to Sources/WordPressKit/WordPressOrgXMLRPCValidator.swift index c26d54ab..36b0cb98 100644 --- a/Sources/CoreAPI/WordPressOrgXMLRPCValidator.swift +++ b/Sources/WordPressKit/WordPressOrgXMLRPCValidator.swift @@ -230,7 +230,7 @@ open class WordPressOrgXMLRPCValidator: NSObject { }, failure: { (error, httpResponse) in if httpResponse?.url != url { // we where redirected, let's check the answer content - if let data = error.userInfo[WordPressOrgXMLRPCApi.WordPressOrgXMLRPCApiErrorKeyData as String] as? Data, + if let data = (error as NSError).userInfo[WordPressOrgXMLRPCApi.WordPressOrgXMLRPCApiErrorKeyData as String] as? Data, let responseString = String(data: data, encoding: String.Encoding.utf8), responseString.range(of: "") != nil || responseString.range(of: "dm404Container") != nil { failure(WordPressOrgXMLRPCValidatorError.mobilePluginRedirectedError as NSError) @@ -255,7 +255,7 @@ open class WordPressOrgXMLRPCValidator: NSObject { case .some(WordPressOrgXMLRPCValidatorError.blocked.rawValue): failure(WordPressOrgXMLRPCValidatorError.blocked as NSError) default: - failure(error) + failure(error as NSError) } }) } diff --git a/Sources/CoreAPI/WordPressRSDParser.swift b/Sources/WordPressKit/WordPressRSDParser.swift similarity index 100% rename from Sources/CoreAPI/WordPressRSDParser.swift rename to Sources/WordPressKit/WordPressRSDParser.swift diff --git a/Sources/WordPressKit/Utility/ZendeskMetadata.swift b/Sources/WordPressKit/ZendeskMetadata.swift similarity index 97% rename from Sources/WordPressKit/Utility/ZendeskMetadata.swift rename to Sources/WordPressKit/ZendeskMetadata.swift index 3b772a01..3956a662 100644 --- a/Sources/WordPressKit/Utility/ZendeskMetadata.swift +++ b/Sources/WordPressKit/ZendeskMetadata.swift @@ -1,3 +1,4 @@ +import Foundation public struct ZendeskSiteContainer: Decodable { public let sites: [ZendeskSite] } diff --git a/Sources/CoreAPI/Date+WordPressCom.swift b/Sources/WordPressKitModels/Date+WordPressCom.swift similarity index 100% rename from Sources/CoreAPI/Date+WordPressCom.swift rename to Sources/WordPressKitModels/Date+WordPressCom.swift diff --git a/Sources/CoreAPI/DateFormatter+WordPressCom.swift b/Sources/WordPressKitModels/DateFormatter+WordPressCom.swift similarity index 90% rename from Sources/CoreAPI/DateFormatter+WordPressCom.swift rename to Sources/WordPressKitModels/DateFormatter+WordPressCom.swift index 930b87f8..522f072f 100644 --- a/Sources/CoreAPI/DateFormatter+WordPressCom.swift +++ b/Sources/WordPressKitModels/DateFormatter+WordPressCom.swift @@ -5,7 +5,7 @@ extension DateFormatter { /// A `DateFormatter` configured to manage dates compatible with the WordPress.com API. /// /// - SeeAlso: [https://developer.wordpress.com/docs/api/](https://developer.wordpress.com/docs/api/) - static let wordPressCom: DateFormatter = { + package static let wordPressCom: DateFormatter = { let formatter = DateFormatter() formatter.dateFormat = "yyyy'-'MM'-'dd'T'HH':'mm':'ssZ" formatter.timeZone = NSTimeZone(forSecondsFromGMT: 0) as TimeZone diff --git a/Sources/WordPressKit/Utility/NSCharacterSet+URLEncode.swift b/Sources/WordPressKitModels/NSCharacterSet+URLEncode.swift similarity index 100% rename from Sources/WordPressKit/Utility/NSCharacterSet+URLEncode.swift rename to Sources/WordPressKitModels/NSCharacterSet+URLEncode.swift diff --git a/Sources/WordPressShared/NSDate+Helpers.swift b/Sources/WordPressKitModels/NSDate+Helpers.swift similarity index 99% rename from Sources/WordPressShared/NSDate+Helpers.swift rename to Sources/WordPressKitModels/NSDate+Helpers.swift index 9dabadc6..977f6f5d 100644 --- a/Sources/WordPressShared/NSDate+Helpers.swift +++ b/Sources/WordPressKitModels/NSDate+Helpers.swift @@ -76,7 +76,7 @@ extension Date { /// Returns a NSDate Instance, given it's ISO8601 String Representation with milliseconds /// - static func dateWithISO8601WithMillisecondsString(_ string: String) -> Date? { + package static func dateWithISO8601WithMillisecondsString(_ string: String) -> Date? { return DateFormatters.iso8601WithMilliseconds.date(from: string) } diff --git a/Sources/CoreAPI/NSDate+WordPressCom.swift b/Sources/WordPressKitModels/NSDate+WordPressCom.swift similarity index 100% rename from Sources/CoreAPI/NSDate+WordPressCom.swift rename to Sources/WordPressKitModels/NSDate+WordPressCom.swift diff --git a/Sources/WordPressShared/NSString+Summary.swift b/Sources/WordPressKitModels/NSString+Summary.swift similarity index 98% rename from Sources/WordPressShared/NSString+Summary.swift rename to Sources/WordPressKitModels/NSString+Summary.swift index ca8f8798..dea8017e 100644 --- a/Sources/WordPressShared/NSString+Summary.swift +++ b/Sources/WordPressKitModels/NSString+Summary.swift @@ -1,4 +1,5 @@ import Foundation +import WordPressKitObjCUtils /// This is an extension to NSString that provides logic to summarize HTML content, /// and convert HTML into plain text. diff --git a/Sources/WordPressKit/Utility/ObjectValidation.swift b/Sources/WordPressKitModels/ObjectValidation.swift similarity index 100% rename from Sources/WordPressKit/Utility/ObjectValidation.swift rename to Sources/WordPressKitModels/ObjectValidation.swift diff --git a/Sources/WordPressKit/Models/RemoteBlog.swift b/Sources/WordPressKitModels/RemoteBlog.swift similarity index 98% rename from Sources/WordPressKit/Models/RemoteBlog.swift rename to Sources/WordPressKitModels/RemoteBlog.swift index 2880832a..c85ac3c4 100644 --- a/Sources/WordPressKit/Models/RemoteBlog.swift +++ b/Sources/WordPressKitModels/RemoteBlog.swift @@ -1,5 +1,4 @@ import Foundation -@_implementationOnly import NSObject_SafeExpectations /// This class encapsulates all of the *remote* Blog properties @objcMembers public class RemoteBlog: NSObject { diff --git a/Sources/WordPressKit/Models/RemoteBlogOptionsHelper.swift b/Sources/WordPressKitModels/RemoteBlogOptionsHelper.swift similarity index 99% rename from Sources/WordPressKit/Models/RemoteBlogOptionsHelper.swift rename to Sources/WordPressKitModels/RemoteBlogOptionsHelper.swift index a5eca541..289fcce9 100644 --- a/Sources/WordPressKit/Models/RemoteBlogOptionsHelper.swift +++ b/Sources/WordPressKitModels/RemoteBlogOptionsHelper.swift @@ -79,5 +79,4 @@ import Foundation } return remoteSettings } - } diff --git a/Sources/WordPressKit/Models/RemoteBlogSettings.swift b/Sources/WordPressKitModels/RemoteBlogSettings.swift similarity index 100% rename from Sources/WordPressKit/Models/RemoteBlogSettings.swift rename to Sources/WordPressKitModels/RemoteBlogSettings.swift diff --git a/Sources/WordPressKit/Models/RemoteMenu.swift b/Sources/WordPressKitModels/RemoteMenu.swift similarity index 100% rename from Sources/WordPressKit/Models/RemoteMenu.swift rename to Sources/WordPressKitModels/RemoteMenu.swift diff --git a/Sources/WordPressKit/Models/RemoteMenuItem.swift b/Sources/WordPressKitModels/RemoteMenuItem.swift similarity index 100% rename from Sources/WordPressKit/Models/RemoteMenuItem.swift rename to Sources/WordPressKitModels/RemoteMenuItem.swift diff --git a/Sources/WordPressKit/Models/RemoteMenuLocation.swift b/Sources/WordPressKitModels/RemoteMenuLocation.swift similarity index 100% rename from Sources/WordPressKit/Models/RemoteMenuLocation.swift rename to Sources/WordPressKitModels/RemoteMenuLocation.swift diff --git a/Sources/WordPressKit/Models/RemotePostAutosave.swift b/Sources/WordPressKitModels/RemotePostAutosave.swift similarity index 100% rename from Sources/WordPressKit/Models/RemotePostAutosave.swift rename to Sources/WordPressKitModels/RemotePostAutosave.swift diff --git a/Sources/WordPressKit/Models/RemoteReaderCrossPostMeta.swift b/Sources/WordPressKitModels/RemoteReaderCrossPostMeta.swift similarity index 100% rename from Sources/WordPressKit/Models/RemoteReaderCrossPostMeta.swift rename to Sources/WordPressKitModels/RemoteReaderCrossPostMeta.swift diff --git a/Sources/WordPressKit/Models/RemoteReaderSite.swift b/Sources/WordPressKitModels/RemoteReaderSite.swift similarity index 100% rename from Sources/WordPressKit/Models/RemoteReaderSite.swift rename to Sources/WordPressKitModels/RemoteReaderSite.swift diff --git a/Sources/WordPressKit/Models/RemoteReaderSiteInfo.swift b/Sources/WordPressKitModels/RemoteReaderSiteInfo.swift similarity index 99% rename from Sources/WordPressKit/Models/RemoteReaderSiteInfo.swift rename to Sources/WordPressKitModels/RemoteReaderSiteInfo.swift index 01807e4b..cde80240 100644 --- a/Sources/WordPressKit/Models/RemoteReaderSiteInfo.swift +++ b/Sources/WordPressKitModels/RemoteReaderSiteInfo.swift @@ -1,5 +1,5 @@ import Foundation -@_implementationOnly import NSObject_SafeExpectations +import NSObject_SafeExpectations // Site Topic Keys private let SiteDictionaryFeedIDKey = "feed_ID" diff --git a/Sources/WordPressKit/Models/RemoteReaderSiteInfoSubscription.swift b/Sources/WordPressKitModels/RemoteReaderSiteInfoSubscription.swift similarity index 100% rename from Sources/WordPressKit/Models/RemoteReaderSiteInfoSubscription.swift rename to Sources/WordPressKitModels/RemoteReaderSiteInfoSubscription.swift diff --git a/Sources/WordPressKit/Models/RemoteReaderTopic.swift b/Sources/WordPressKitModels/RemoteReaderTopic.swift similarity index 98% rename from Sources/WordPressKit/Models/RemoteReaderTopic.swift rename to Sources/WordPressKitModels/RemoteReaderTopic.swift index 3df828ee..4b239046 100644 --- a/Sources/WordPressKit/Models/RemoteReaderTopic.swift +++ b/Sources/WordPressKitModels/RemoteReaderTopic.swift @@ -1,4 +1,5 @@ import Foundation +import NSObject_SafeExpectations @objcMembers public class RemoteReaderTopic: NSObject { diff --git a/Sources/WordPressKit/Models/RemoteUser+Likes.swift b/Sources/WordPressKitModels/RemoteUser+Likes.swift similarity index 100% rename from Sources/WordPressKit/Models/RemoteUser+Likes.swift rename to Sources/WordPressKitModels/RemoteUser+Likes.swift diff --git a/Sources/WordPressKitModels/RemoteUser.swift b/Sources/WordPressKitModels/RemoteUser.swift new file mode 100644 index 00000000..e6cfebdb --- /dev/null +++ b/Sources/WordPressKitModels/RemoteUser.swift @@ -0,0 +1,13 @@ +import Foundation + +@objcMembers public class RemoteUser: NSObject { + public var userID: NSNumber? + public var username: String? + public var email: String? + public var displayName: String? + public var primaryBlogID: NSNumber? + public var avatarURL: String? + public var dateCreated: Date? + public var emailVerified: Bool = false + public var linkedUserID: NSNumber? +} diff --git a/Sources/WordPressKit/Models/RemoteVideoPressVideo.swift b/Sources/WordPressKitModels/RemoteVideoPressVideo.swift similarity index 100% rename from Sources/WordPressKit/Models/RemoteVideoPressVideo.swift rename to Sources/WordPressKitModels/RemoteVideoPressVideo.swift diff --git a/Sources/WordPressKit/Services/AccountServiceRemoteREST.m b/Sources/WordPressKitObjC/AccountServiceRemoteREST.m similarity index 99% rename from Sources/WordPressKit/Services/AccountServiceRemoteREST.m rename to Sources/WordPressKitObjC/AccountServiceRemoteREST.m index 483893f6..fe0d75ae 100644 --- a/Sources/WordPressKit/Services/AccountServiceRemoteREST.m +++ b/Sources/WordPressKitObjC/AccountServiceRemoteREST.m @@ -1,5 +1,7 @@ #import "AccountServiceRemoteREST.h" -#import "WPKit-Swift.h" +#import "WPMapFilterReduce.h" + +@import WordPressKitModels; @import NSObject_SafeExpectations; static NSString * const UserDictionaryIDKey = @"ID"; @@ -54,7 +56,7 @@ - (void)getAccountDetailsWithSuccess:(void (^)(RemoteUser *remoteUser))success { NSString *requestUrl = [self pathForEndpoint:@"me" withVersion:WordPressComRESTAPIVersion_1_1]; - + [self.wordPressComRESTAPI get:requestUrl parameters:nil success:^(id responseObject, NSHTTPURLResponse *httpResponse) { @@ -135,7 +137,7 @@ - (void)isPasswordlessAccount:(NSString *)identifier success:(void (^)(BOOL pass NSDictionary *dict = (NSDictionary *)responseObject; BOOL passwordless = [[dict numberForKey:@"passwordless"] boolValue]; success(passwordless); - + } failure:^(NSError *error, NSHTTPURLResponse *httpResponse) { if (failure) { failure(error); @@ -147,14 +149,14 @@ - (void)isEmailAvailable:(NSString *)email success:(void (^)(BOOL available))suc { static NSString * const errorEmailAddressInvalid = @"invalid"; static NSString * const errorEmailAddressTaken = @"taken"; - + [self.wordPressComRESTAPI get:@"is-available/email" parameters:@{ @"q": email, @"format": @"json"} success:^(id responseObject, NSHTTPURLResponse *httpResponse) { if ([responseObject isKindOfClass:[NSDictionary class]]) { NSString *error = [responseObject objectForKey:@"error"]; NSString *message = [responseObject objectForKey:@"message"]; - + if (error != NULL) { if ([error isEqualToString:errorEmailAddressTaken]) { // While this is informed as an error by the endpoint, for the purpose of this method @@ -182,10 +184,10 @@ - (void)isEmailAvailable:(NSString *)email success:(void (^)(BOOL available))suc failure(error); } } - + return; } - + if (success) { BOOL available = [[responseObject numberForKey:@"available"] boolValue]; success(available); @@ -292,10 +294,10 @@ - (void)requestWPComSignupLinkForEmail:(NSString *)email success:(void (^)(void))success failure:(void (^)(NSError *error))failure { - + NSString *path = [self pathForEndpoint:@"auth/send-signup-email" withVersion:WordPressComRESTAPIVersion_1_1]; - + NSDictionary *extraParams = @{ @"signup_flow_name": @"mobile-ios", MagicLinkParameterFlow: MagicLinkFlowSignup @@ -321,7 +323,7 @@ - (void)requestWPComMagicLinkForEmail:(NSString *)email failure:(void (^)(NSError *error))failure { NSAssert([email length] > 0, @"Needs an email address."); - + NSMutableDictionary *params = [NSMutableDictionary dictionaryWithDictionary:@{ @"email": email, @"client_id": clientID, @@ -331,7 +333,7 @@ - (void)requestWPComMagicLinkForEmail:(NSString *)email if (![@"wordpress" isEqualToString:scheme]) { [params setObject:scheme forKey:@"scheme"]; } - + if (extraParams != nil) { [params addEntriesFromDictionary:extraParams]; } @@ -398,7 +400,7 @@ - (RemoteUser *)remoteUserFromDictionary:(NSDictionary *)dictionary remoteUser.avatarURL = [dictionary stringForKey:UserDictionaryAvatarURLKey]; remoteUser.dateCreated = [NSDate wpkit_dateWithISO8601String:[dictionary stringForKey:UserDictionaryDateKey]]; remoteUser.emailVerified = [[dictionary numberForKey:UserDictionaryEmailVerifiedKey] boolValue]; - + return remoteUser; } diff --git a/Sources/WordPressKit/Services/BlogServiceRemoteREST.m b/Sources/WordPressKitObjC/BlogServiceRemoteREST.m similarity index 99% rename from Sources/WordPressKit/Services/BlogServiceRemoteREST.m rename to Sources/WordPressKitObjC/BlogServiceRemoteREST.m index 69b22af9..6670ec55 100644 --- a/Sources/WordPressKit/Services/BlogServiceRemoteREST.m +++ b/Sources/WordPressKitObjC/BlogServiceRemoteREST.m @@ -2,7 +2,10 @@ #import "BlogServiceRemoteREST.h" #import "NSMutableDictionary+Helpers.h" #import "RemotePostType.h" -#import "WPKit-Swift.h" +#import "WPMapFilterReduce.h" +#import "WPKitLogging.h" + +@import WordPressKitModels; @import NSObject_SafeExpectations; #pragma mark - Parsing Keys @@ -82,7 +85,7 @@ - (void)getAllAuthorsWithSuccess:(UsersHandler)success /** This method is called recursively to fetch all authors. The success block is called whenever the response users array is nil or empty. - + @param remoteUsers The loaded remote users @param offset The first n users to be skipped in the returned array @param success The block that will be executed on success @@ -96,11 +99,11 @@ - (void)getAllAuthorsWithRemoteUsers:(NSMutableArray *)remoteUsers NSMutableDictionary *parameters = [@{ @"authors_only":@(YES), @"number": @(100) } mutableCopy]; - + if ([offset wp_isValidObject]) { parameters[@"offset"] = offset.stringValue; } - + NSString *path = [self pathForUsers]; NSString *requestUrl = [self pathForEndpoint:path withVersion:WordPressComRESTAPIVersion_1_1]; @@ -110,9 +113,9 @@ - (void)getAllAuthorsWithRemoteUsers:(NSMutableArray *)remoteUsers success:^(id responseObject, NSHTTPURLResponse *httpResponse) { if (success) { NSArray *responseUsers = responseObject[@"users"]; - + NSMutableArray *users = [remoteUsers wp_isValidObject] ? [remoteUsers mutableCopy] : [NSMutableArray array]; - + if (![responseUsers wp_isValidObject] || responseUsers.count == 0) { success([users copy]); } else { @@ -140,7 +143,7 @@ - (void)syncPostTypesWithSuccess:(PostTypesHandler)success [self.wordPressComRESTAPI get:requestUrl parameters:parameters success:^(NSDictionary *responseObject, NSHTTPURLResponse *httpResponse) { - + NSAssert([responseObject isKindOfClass:[NSDictionary class]], @"Response should be a dictionary."); NSArray *postTypes = [[responseObject arrayForKey:RemotePostTypesKey] wpkit_map:^id(NSDictionary *json) { return [self remotePostTypeWithDictionary:json]; @@ -166,7 +169,7 @@ - (void)syncPostFormatsWithSuccess:(PostFormatsHandler)success NSString *path = [self pathForPostFormats]; NSString *requestUrl = [self pathForEndpoint:path withVersion:WordPressComRESTAPIVersion_1_1]; - + [self.wordPressComRESTAPI get:requestUrl parameters:nil success:^(id responseObject, NSHTTPURLResponse *httpResponse) { @@ -208,7 +211,7 @@ - (void)syncBlogSettingsWithSuccess:(SettingsHandler)success { NSString *path = [self pathForSettings]; NSString *requestUrl = [self pathForEndpoint:path withVersion:WordPressComRESTAPIVersion_1_1]; - + [self.wordPressComRESTAPI get:requestUrl parameters:nil success:^(id responseObject, NSHTTPURLResponse *httpResponse) { @@ -238,7 +241,7 @@ - (void)updateBlogSettings:(RemoteBlogSettings *)settings NSDictionary *parameters = [self remoteSettingsToDictionary:settings]; NSString *path = [NSString stringWithFormat:@"sites/%@/settings?context=edit", self.siteID]; NSString *requestUrl = [self pathForEndpoint:path withVersion:WordPressComRESTAPIVersion_1_1]; - + [self.wordPressComRESTAPI post:requestUrl parameters:parameters success:^(NSDictionary *responseDict, NSHTTPURLResponse *httpResponse) { @@ -376,10 +379,10 @@ - (RemotePostType *)remotePostTypeWithDictionary:(NSDictionary *)json - (RemoteBlogSettings *)remoteBlogSettingFromJSONDictionary:(NSDictionary *)json { NSAssert([json isKindOfClass:[NSDictionary class]], @"Invalid Settings Kind"); - + RemoteBlogSettings *settings = [RemoteBlogSettings new]; NSDictionary *rawSettings = [json dictionaryForKey:RemoteBlogSettingsKey]; - + // General settings.name = [json stringForKey:RemoteBlogNameKey]; settings.tagline = [json stringForKey:RemoteBlogTaglineKey]; @@ -480,10 +483,10 @@ - (NSDictionary *)remoteSettingsToDictionary:(RemoteBlogSettings *)settings [parameters setValueIfNotNil:settings.commentsSortOrder forKey:RemoteBlogCommentsSortOrderKey]; [parameters setValueIfNotNil:settings.commentsThreadingEnabled forKey:RemoteBlogCommentsThreadingEnabledKey]; [parameters setValueIfNotNil:settings.commentsThreadingDepth forKey:RemoteBlogCommentsThreadingDepthKey]; - + [parameters setValueIfNotNil:settings.pingbackOutboundEnabled forKey:RemoteBlogCommentsPingbackOutboundKey]; [parameters setValueIfNotNil:settings.pingbackInboundEnabled forKey:RemoteBlogCommentsPingbackInboundKey]; - + [parameters setValueIfNotNil:settings.relatedPostsEnabled forKey:RemoteBlogRelatedPostsEnabledKey]; [parameters setValueIfNotNil:settings.relatedPostsShowHeadline forKey:RemoteBlogRelatedPostsShowHeadlineKey]; [parameters setValueIfNotNil:settings.relatedPostsShowThumbnails forKey:RemoteBlogRelatedPostsShowThumbnailsKey]; @@ -497,7 +500,7 @@ - (NSDictionary *)remoteSettingsToDictionary:(RemoteBlogSettings *)settings [parameters setValueIfNotNil:settings.sharingCommentLikesEnabled forKey:RemoteBlogSharingCommentLikesEnabled]; [parameters setValueIfNotNil:settings.sharingDisabledLikes forKey:RemoteBlogSharingDisabledLikes]; [parameters setValueIfNotNil:settings.sharingDisabledReblogs forKey:RemoteBlogSharingDisabledReblogs]; - + return parameters; } diff --git a/Sources/WordPressKit/Services/BlogServiceRemoteXMLRPC.m b/Sources/WordPressKitObjC/BlogServiceRemoteXMLRPC.m similarity index 98% rename from Sources/WordPressKit/Services/BlogServiceRemoteXMLRPC.m rename to Sources/WordPressKitObjC/BlogServiceRemoteXMLRPC.m index 3d7ff90a..674d86ca 100644 --- a/Sources/WordPressKit/Services/BlogServiceRemoteXMLRPC.m +++ b/Sources/WordPressKitObjC/BlogServiceRemoteXMLRPC.m @@ -1,7 +1,10 @@ #import "BlogServiceRemoteXMLRPC.h" #import "NSMutableDictionary+Helpers.h" #import "RemotePostType.h" -#import "WPKit-Swift.h" +#import "WPMapFilterReduce.h" +#import "WPKitLogging.h" + +@import WordPressKitModels; @import NSObject_SafeExpectations; static NSString * const RemotePostTypeNameKey = @"name"; @@ -37,11 +40,11 @@ - (void)getAllAuthorsWithRemoteUsers:(NSMutableArray *)remoteUsers NSMutableDictionary *filter = [@{ @"who":@"authors", @"number": @(100) } mutableCopy]; - + if ([offset wp_isValidObject]) { filter[@"offset"] = offset.stringValue; } - + NSArray *parameters = [self XMLRPCArgumentsWithExtra:filter]; [self.api callMethod:@"wp.getUsers" parameters:parameters @@ -49,9 +52,9 @@ - (void)getAllAuthorsWithRemoteUsers:(NSMutableArray *)remoteUsers NSArray *responseUsers = [[responseObject allObjects] wpkit_map:^id(NSDictionary *xmlrpcUser) { return [self remoteUserFromXMLRPCDictionary:xmlrpcUser]; }]; - + NSMutableArray *users = [remoteUsers wp_isValidObject] ? [remoteUsers mutableCopy] : [NSMutableArray array]; - + if (success) { if (![responseUsers wp_isValidObject] || responseUsers.count == 0) { success([users copy]); @@ -63,7 +66,7 @@ - (void)getAllAuthorsWithRemoteUsers:(NSMutableArray *)remoteUsers failure:failure]; } } - + } failure:^(NSError *error, NSHTTPURLResponse *response) { if (failure) { failure(error); @@ -92,7 +95,7 @@ - (void)syncPostTypesWithSuccess:(PostTypesHandler)success failure:(void (^)(NSE } } failure:^(NSError *error, NSHTTPURLResponse *response) { WPKitLogError(@"Error syncing post types (%@): %@", response.URL, error); - + if (failure) { failure(error); } @@ -131,13 +134,13 @@ - (void)syncPostFormatsWithSuccess:(PostFormatsHandler)success failure:(void (^) } respDict = [NSDictionary dictionaryWithObjects:supportedValues forKeys:supportedKeys]; } - + if (success) { success(respDict); } } failure:^(NSError *error, NSHTTPURLResponse *response) { WPKitLogError(@"Error syncing post formats (%@): %@", response.URL, error); - + if (failure) { failure(error); } diff --git a/Sources/WordPressKit/Services/CommentServiceRemoteREST.m b/Sources/WordPressKitObjC/CommentServiceRemoteREST.m similarity index 99% rename from Sources/WordPressKit/Services/CommentServiceRemoteREST.m rename to Sources/WordPressKitObjC/CommentServiceRemoteREST.m index 3a610c20..556eb7c8 100644 --- a/Sources/WordPressKit/Services/CommentServiceRemoteREST.m +++ b/Sources/WordPressKitObjC/CommentServiceRemoteREST.m @@ -1,8 +1,8 @@ #import "CommentServiceRemoteREST.h" -#import "WPKit-Swift.h" #import "RemoteComment.h" -#import "RemoteUser.h" +#import "WPMapFilterReduce.h" +@import WordPressKitModels; @import NSObject_SafeExpectations; @implementation CommentServiceRemoteREST @@ -26,7 +26,7 @@ - (void)getCommentsWithMaximumCount:(NSInteger)maximumComments NSString *path = [NSString stringWithFormat:@"sites/%@/comments", self.siteID]; NSString *requestUrl = [self pathForEndpoint:path withVersion:WordPressComRESTAPIVersion_1_1]; - + NSMutableDictionary *parameters = [NSMutableDictionary dictionaryWithDictionary:@{ @"force": @"wpcom", // Force fetching data from shadow site on Jetpack sites @"number": @(maximumComments) @@ -35,7 +35,7 @@ - (void)getCommentsWithMaximumCount:(NSInteger)maximumComments if (options) { [parameters addEntriesFromDictionary:options]; } - + NSNumber *statusFilter = [parameters numberForKey:@"status"]; [parameters removeObjectForKey:@"status"]; parameters[@"status"] = [self parameterForCommentStatus:statusFilter]; @@ -82,7 +82,7 @@ - (void)getCommentWithID:(NSNumber *)commentID NSString *path = [NSString stringWithFormat:@"sites/%@/comments/%@", self.siteID, commentID]; NSString *requestUrl = [self pathForEndpoint:path withVersion:WordPressComRESTAPIVersion_1_1]; - + [self.wordPressComRESTAPI get:requestUrl parameters:nil success:^(id responseObject, NSHTTPURLResponse *httpResponse) { @@ -107,10 +107,10 @@ - (void)createComment:(RemoteComment *)comment } else { path = [NSString stringWithFormat:@"sites/%@/posts/%@/replies/new", self.siteID, comment.postID]; } - + NSString *requestUrl = [self pathForEndpoint:path withVersion:WordPressComRESTAPIVersion_1_1]; - + NSDictionary *parameters = @{ @"content": comment.content, @"context": @"edit", @@ -137,7 +137,7 @@ - (void)updateComment:(RemoteComment *)comment NSString *path = [NSString stringWithFormat:@"sites/%@/comments/%@", self.siteID, comment.commentID]; NSString *requestUrl = [self pathForEndpoint:path withVersion:WordPressComRESTAPIVersion_1_1]; - + NSDictionary *parameters = @{ @"content": comment.content, @"author": comment.author, @@ -168,7 +168,7 @@ - (void)moderateComment:(RemoteComment *)comment NSString *path = [NSString stringWithFormat:@"sites/%@/comments/%@", self.siteID, comment.commentID]; NSString *requestUrl = [self pathForEndpoint:path withVersion:WordPressComRESTAPIVersion_1_1]; - + NSDictionary *parameters = @{ @"status": [self remoteStatusWithStatus:comment.status], @"context": @"edit", @@ -195,7 +195,7 @@ - (void)trashComment:(RemoteComment *)comment NSString *path = [NSString stringWithFormat:@"sites/%@/comments/%@/delete", self.siteID, comment.commentID]; NSString *requestUrl = [self pathForEndpoint:path withVersion:WordPressComRESTAPIVersion_1_1]; - + [self.wordPressComRESTAPI post:requestUrl parameters:nil success:^(id responseObject, NSHTTPURLResponse *httpResponse) { @@ -252,7 +252,7 @@ - (void)updateCommentWithID:(NSNumber *)commentID NSString *path = [NSString stringWithFormat:@"sites/%@/comments/%@", self.siteID, commentID]; NSString *requestUrl = [self pathForEndpoint:path withVersion:WordPressComRESTAPIVersion_1_1]; - + NSDictionary *parameters = @{ @"content": content, @"context": @"edit", @@ -279,9 +279,9 @@ - (void)replyToPostWithID:(NSNumber *)postID NSString *path = [NSString stringWithFormat:@"sites/%@/posts/%@/replies/new", self.siteID, postID]; NSString *requestUrl = [self pathForEndpoint:path withVersion:WordPressComRESTAPIVersion_1_1]; - + NSDictionary *parameters = @{@"content": content}; - + [self.wordPressComRESTAPI post:requestUrl parameters:parameters success:^(id responseObject, NSHTTPURLResponse *httpResponse) { @@ -305,7 +305,7 @@ - (void)replyToCommentWithID:(NSNumber *)commentID NSString *path = [NSString stringWithFormat:@"sites/%@/comments/%@/replies/new", self.siteID, commentID]; NSString *requestUrl = [self pathForEndpoint:path withVersion:WordPressComRESTAPIVersion_1_1]; - + NSDictionary *parameters = @{ @"content": content, @"context": @"edit", @@ -333,12 +333,12 @@ - (void)moderateCommentWithID:(NSNumber *)commentID NSString *path = [NSString stringWithFormat:@"sites/%@/comments/%@", self.siteID, commentID]; NSString *requestUrl = [self pathForEndpoint:path withVersion:WordPressComRESTAPIVersion_1_1]; - + NSDictionary *parameters = @{ @"status" : status, @"context" : @"edit", }; - + [self.wordPressComRESTAPI post:requestUrl parameters:parameters success:^(id responseObject, NSHTTPURLResponse *httpResponse) { @@ -359,7 +359,7 @@ - (void)trashCommentWithID:(NSNumber *)commentID NSString *path = [NSString stringWithFormat:@"sites/%@/comments/%@/delete", self.siteID, commentID]; NSString *requestUrl = [self pathForEndpoint:path withVersion:WordPressComRESTAPIVersion_1_1]; - + [self.wordPressComRESTAPI post:requestUrl parameters:nil success:^(id responseObject, NSHTTPURLResponse *httpResponse) { @@ -380,7 +380,7 @@ - (void)likeCommentWithID:(NSNumber *)commentID NSString *path = [NSString stringWithFormat:@"sites/%@/comments/%@/likes/new", self.siteID, commentID]; NSString *requestUrl = [self pathForEndpoint:path withVersion:WordPressComRESTAPIVersion_1_1]; - + [self.wordPressComRESTAPI post:requestUrl parameters:nil success:^(id responseObject, NSHTTPURLResponse *httpResponse) { @@ -401,7 +401,7 @@ - (void)unlikeCommentWithID:(NSNumber *)commentID NSString *path = [NSString stringWithFormat:@"sites/%@/comments/%@/likes/mine/delete", self.siteID, commentID]; NSString *requestUrl = [self pathForEndpoint:path withVersion:WordPressComRESTAPIVersion_1_1]; - + [self.wordPressComRESTAPI post:requestUrl parameters:nil success:^(id responseObject, NSHTTPURLResponse *httpResponse) { @@ -433,13 +433,13 @@ - (void)getLikesForCommentID:(NSNumber *)commentID if (count == 0) { count = @90; } - + NSMutableDictionary *parameters = [NSMutableDictionary dictionaryWithDictionary:@{ @"number": count }]; - + if (before) { parameters[@"before"] = before; } - + if (excludeUserIDs) { parameters[@"exclude"] = excludeUserIDs; } @@ -521,7 +521,7 @@ - (NSString *)remoteStatusWithStatus:(NSString *)status /** Returns an array of RemoteLikeUser based on provided JSON representation of users. - + @param jsonUsers An array containing JSON representations of users. @param commentID ID of the Comment the users liked. @param siteID ID of the Comment's site. diff --git a/Sources/WordPressKit/Services/CommentServiceRemoteXMLRPC.m b/Sources/WordPressKitObjC/CommentServiceRemoteXMLRPC.m similarity index 99% rename from Sources/WordPressKit/Services/CommentServiceRemoteXMLRPC.m rename to Sources/WordPressKitObjC/CommentServiceRemoteXMLRPC.m index 891c6c7c..5a7fd909 100644 --- a/Sources/WordPressKit/Services/CommentServiceRemoteXMLRPC.m +++ b/Sources/WordPressKitObjC/CommentServiceRemoteXMLRPC.m @@ -1,6 +1,6 @@ #import "CommentServiceRemoteXMLRPC.h" -#import "WPKit-Swift.h" #import "RemoteComment.h" +#import "WPMapFilterReduce.h" @import wpxmlrpc; @import NSObject_SafeExpectations; @@ -24,13 +24,13 @@ - (void)getCommentsWithMaximumCount:(NSInteger)maximumComments if (options) { [extraParameters addEntriesFromDictionary:options]; } - + NSNumber *statusFilter = [extraParameters numberForKey:@"status"]; [extraParameters removeObjectForKey:@"status"]; extraParameters[@"status"] = [self parameterForCommentStatus:statusFilter]; NSArray *parameters = [self XMLRPCArgumentsWithExtra:extraParameters]; - + [self.api callMethod:@"wp.getComments" parameters:parameters success:^(id responseObject, NSHTTPURLResponse *httpResponse) { @@ -118,14 +118,14 @@ - (void)updateComment:(RemoteComment *)comment { NSParameterAssert(comment.commentID != nil); NSNumber *commentID = comment.commentID; - + NSDictionary *commentDictionary = @{ @"content": comment.content, @"author": comment.author, @"author_email": comment.authorEmail, @"author_url": comment.authorUrl, }; - + NSArray *extraParameters = @[ comment.commentID, commentDictionary, diff --git a/Sources/WordPressShared/DisplayableImageHelper.m b/Sources/WordPressKitObjC/DisplayableImageHelper.m similarity index 100% rename from Sources/WordPressShared/DisplayableImageHelper.m rename to Sources/WordPressKitObjC/DisplayableImageHelper.m diff --git a/Sources/APIInterface/FilePart.m b/Sources/WordPressKitObjC/FilePart.m similarity index 100% rename from Sources/APIInterface/FilePart.m rename to Sources/WordPressKitObjC/FilePart.m diff --git a/Sources/WordPressKit/Services/MediaServiceRemoteREST.m b/Sources/WordPressKitObjC/MediaServiceRemoteREST.m similarity index 95% rename from Sources/WordPressKit/Services/MediaServiceRemoteREST.m rename to Sources/WordPressKitObjC/MediaServiceRemoteREST.m index 90f38edf..df727fd4 100644 --- a/Sources/WordPressKit/Services/MediaServiceRemoteREST.m +++ b/Sources/WordPressKitObjC/MediaServiceRemoteREST.m @@ -1,7 +1,11 @@ #import "MediaServiceRemoteREST.h" #import "RemoteMedia.h" -#import "WPKit-Swift.h" +#import "FilePart.h" +#import "WPKitLogging.h" +#import "WPMapFilterReduce.h" +#import "WordPressComRestApiErrorDomain.h" +@import WordPressKitModels; @import NSObject_SafeExpectations; const NSInteger WPRestErrorCodeMediaNew = 10; @@ -15,9 +19,9 @@ - (void)getMediaWithID:(NSNumber *)mediaID NSString *apiPath = [NSString stringWithFormat:@"sites/%@/media/%@", self.siteID, mediaID]; NSString *requestUrl = [self pathForEndpoint:apiPath withVersion:WordPressComRESTAPIVersion_1_1]; - + NSDictionary * parameters = @{}; - + [self.wordPressComRESTAPI get:requestUrl parameters:parameters success:^(id responseObject, NSHTTPURLResponse *response) { if (success) { NSDictionary *response = (NSDictionary *)responseObject; @@ -56,10 +60,10 @@ - (void)getMediaLibraryPage:(NSString *)pageHandle if ([pageHandle length]) { parameters[@"page_handle"] = pageHandle; } - + NSString *requestUrl = [self pathForEndpoint:path withVersion:WordPressComRESTAPIVersion_1_1]; - + [self.wordPressComRESTAPI get:requestUrl parameters:[NSDictionary dictionaryWithDictionary:parameters] success:^(id responseObject, NSHTTPURLResponse *response) { @@ -98,12 +102,12 @@ - (void)getMediaLibraryCountForType:(NSString *)mediaType NSString *path = [NSString stringWithFormat:@"sites/%@/media", self.siteID]; NSString *requestUrl = [self pathForEndpoint:path withVersion:WordPressComRESTAPIVersion_1_1]; - + NSMutableDictionary *parameters = [NSMutableDictionary dictionaryWithDictionary:@{ @"number" : @1 }]; if (mediaType) { parameters[@"mime_type"] = mediaType; } - + [self.wordPressComRESTAPI get:requestUrl parameters:[NSDictionary dictionaryWithDictionary:parameters] success:^(id responseObject, NSHTTPURLResponse *response) { @@ -245,7 +249,7 @@ - (NSError *)processMediaUploadErrors:(NSArray *)errorList { } NSDictionary *errorDictionary = @{NSLocalizedDescriptionKey: errorMessage}; error = [[NSError alloc] initWithDomain:WordPressComRestApiErrorDomain - code:WordPressComRestApiErrorCodeUploadFailed + code:self.wordPressComRESTAPI.uploadFailedErrorCode userInfo:errorDictionary]; } return error; @@ -298,10 +302,7 @@ - (void)deleteMedia:(RemoteMedia *)media } } else { if (failure) { - NSError *error = [[NSError alloc] initWithDomain:WordPressComRestApiErrorDomain - code:WordPressComRestApiErrorCodeUnknown - userInfo:nil]; - failure(error); + failure(self.wordPressComRESTAPI.unknownResponseError); } } } failure:^(NSError *error, NSHTTPURLResponse *response) { @@ -319,7 +320,7 @@ -(void)getMetadataFromVideoPressID:(NSString *)videoPressID NSString *path = [NSString stringWithFormat:@"videos/%@", videoPressID]; NSString *requestUrl = [self pathForEndpoint:path withVersion:WordPressComRESTAPIVersion_1_1]; - + [self.wordPressComRESTAPI get:requestUrl parameters:nil success:^(id responseObject, NSHTTPURLResponse *httpResponse) { @@ -355,7 +356,7 @@ -(void)getVideoPressToken:(NSString *)videoPressID success:(void (^)(NSString *token))success failure:(void (^)(NSError *))failure { - + NSString *path = [NSString stringWithFormat:@"sites/%@/media/videopress-playback-jwt/%@", self.siteID, videoPressID]; NSString *requestUrl = [self pathForEndpoint:path withVersion:WordPressComRESTAPIVersion_2_0]; @@ -371,10 +372,7 @@ -(void)getVideoPressToken:(NSString *)videoPressID } } else { if (failure) { - NSError *error = [[NSError alloc] initWithDomain:WordPressComRestApiErrorDomain - code:WordPressComRestApiErrorCodeUnknown - userInfo:nil]; - failure(error); + failure(self.wordPressComRESTAPI.unknownResponseError); } } } failure:^(NSError *error, NSHTTPURLResponse *response) { @@ -435,7 +433,7 @@ - (NSDictionary *)parametersFromRemoteMedia:(RemoteMedia *)remoteMedia if (remoteMedia.descriptionText != nil) { parameters[@"description"] = remoteMedia.descriptionText; } - + if (remoteMedia.alt != nil) { parameters[@"alt"] = remoteMedia.alt; } diff --git a/Sources/WordPressKit/Services/MediaServiceRemoteXMLRPC.m b/Sources/WordPressKitObjC/MediaServiceRemoteXMLRPC.m similarity index 99% rename from Sources/WordPressKit/Services/MediaServiceRemoteXMLRPC.m rename to Sources/WordPressKitObjC/MediaServiceRemoteXMLRPC.m index 5f01cf01..19a5bb3a 100644 --- a/Sources/WordPressKit/Services/MediaServiceRemoteXMLRPC.m +++ b/Sources/WordPressKitObjC/MediaServiceRemoteXMLRPC.m @@ -1,6 +1,6 @@ #import "MediaServiceRemoteXMLRPC.h" #import "RemoteMedia.h" -#import "WPKit-Swift.h" +#import "WPMapFilterReduce.h" @import NSObject_SafeExpectations; diff --git a/Sources/WordPressKit/Services/MenusServiceRemote.m b/Sources/WordPressKitObjC/MenusServiceRemote.m similarity index 98% rename from Sources/WordPressKit/Services/MenusServiceRemote.m rename to Sources/WordPressKitObjC/MenusServiceRemote.m index bed046cd..a7ddd96f 100644 --- a/Sources/WordPressKit/Services/MenusServiceRemote.m +++ b/Sources/WordPressKitObjC/MenusServiceRemote.m @@ -1,6 +1,8 @@ #import "MenusServiceRemote.h" -#import "WPKit-Swift.h" +#import "WPMapFilterReduce.h" +#import "WPKitLogging.h" +@import WordPressKitModels; @import NSObject_SafeExpectations; NS_ASSUME_NONNULL_BEGIN @@ -34,11 +36,11 @@ - (void)createMenuWithName:(NSString *)menuName { NSParameterAssert([siteID isKindOfClass:[NSNumber class]]); NSParameterAssert([menuName isKindOfClass:[NSString class]]); - + NSString *path = [NSString stringWithFormat:@"sites/%@/menus/new", siteID]; NSString *requestURL = [self pathForEndpoint:path withVersion:WordPressComRESTAPIVersion_1_1]; - + [self.wordPressComRESTAPI post:requestURL parameters:@{MenusRemoteKeyName: menuName} success:^(id _Nonnull responseObject, NSHTTPURLResponse *httpResponse) { @@ -74,11 +76,11 @@ - (void)updateMenuForID:(NSNumber *)menuID { NSParameterAssert([siteID isKindOfClass:[NSNumber class]]); NSParameterAssert([menuID isKindOfClass:[NSNumber class]]); - + NSString *path = [NSString stringWithFormat:@"sites/%@/menus/%@", siteID, menuID]; NSString *requestURL = [self pathForEndpoint:path withVersion:WordPressComRESTAPIVersion_1_1]; - + NSMutableDictionary *params = [NSMutableDictionary dictionaryWithCapacity:2]; if (updatedName.length) { [params setObject:updatedName forKey:MenusRemoteKeyName]; @@ -89,11 +91,11 @@ - (void)updateMenuForID:(NSNumber *)menuID if (locationNames.count) { [params setObject:locationNames forKey:MenusRemoteKeyLocations]; } - + // temporarily need to force the id for the menu update to work until fixed in Jetpack endpoints // Brent Coursey - 10/1/2015 [params setObject:menuID forKey:MenusRemoteKeyID]; - + [self.wordPressComRESTAPI post:requestURL parameters:params success:^(id _Nonnull responseObject, NSHTTPURLResponse *httpResponse) { @@ -127,7 +129,7 @@ - (void)deleteMenuForID:(NSNumber *)menuID { NSParameterAssert([siteID isKindOfClass:[NSNumber class]]); NSParameterAssert([menuID isKindOfClass:[NSNumber class]]); - + NSString *path = [NSString stringWithFormat:@"sites/%@/menus/%@/delete", siteID, menuID]; NSString *requestURL = [self pathForEndpoint:path withVersion:WordPressComRESTAPIVersion_1_1]; @@ -164,11 +166,11 @@ - (void)getMenusForSiteID:(NSNumber *)siteID failure:(nullable MenusServiceRemoteFailureBlock)failure { NSParameterAssert([siteID isKindOfClass:[NSNumber class]]); - + NSString *path = [NSString stringWithFormat:@"sites/%@/menus", siteID]; NSString *requestURL = [self pathForEndpoint:path withVersion:WordPressComRESTAPIVersion_1_1]; - + [self.wordPressComRESTAPI get:requestURL parameters:nil success:^(id _Nonnull responseObject, NSHTTPURLResponse *httpResponse) { @@ -182,7 +184,7 @@ - (void)getMenusForSiteID:(NSNumber *)siteID NSArray *locations = [self remoteMenuLocationsFromJSONArray:[responseObject arrayForKey:MenusRemoteKeyLocations]]; success(menus, locations); } - + } failure:^(NSError * _Nonnull error, NSHTTPURLResponse *httpResponse) { if (failure) { failure(error); @@ -203,10 +205,10 @@ - (nullable NSArray *)menuItemsFromJSONDictionaries:(nullable NSArray *) for (RemoteMenuItem *item in menuItems) { [dictionaries addObject:[self menuItemJSONDictionaryFromItem:item]]; } - + return [NSArray arrayWithArray:dictionaries]; } @@ -338,43 +340,43 @@ - (NSArray *)menuItemJSONDictionariesFromMenuItems:(NSArray *) - (NSDictionary *)menuItemJSONDictionaryFromItem:(RemoteMenuItem *)item { NSMutableDictionary *dictionary = [NSMutableDictionary dictionary]; - + if (item.itemID.integerValue) { dictionary[MenusRemoteKeyID] = item.itemID; } - + if (item.contentID.integerValue) { dictionary[MenusRemoteKeyContentID] = item.contentID; } - + if (item.details.length) { dictionary[MenusRemoteKeyDescription] = item.details; } - + if (item.linkTarget.length) { dictionary[MenusRemoteKeyLinkTarget] = item.linkTarget; } - + if (item.linkTitle.length) { dictionary[MenusRemoteKeyLinkTitle] = item.linkTitle; } - + if (item.name.length) { dictionary[MenusRemoteKeyName] = item.name; } - + if (item.type.length) { dictionary[MenusRemoteKeyType] = item.type; } - + if (item.typeFamily.length) { dictionary[MenusRemoteKeyTypeFamily] = item.typeFamily; } - + if (item.typeLabel.length) { dictionary[MenusRemoteKeyTypeLabel] = item.typeLabel; } - + if (item.urlStr.length) { dictionary[MenusRemoteKeyURL] = item.urlStr; } @@ -382,17 +384,17 @@ - (NSDictionary *)menuItemJSONDictionaryFromItem:(RemoteMenuItem *)item if (item.classes.count) { dictionary[MenusRemoteKeyClasses] = item.classes; } - + if (item.children.count) { - + NSMutableArray *dictionaryItems = [NSMutableArray arrayWithCapacity:item.children.count]; for (RemoteMenuItem *remoteItem in item.children) { [dictionaryItems addObject:[self menuItemJSONDictionaryFromItem:remoteItem]]; } - + dictionary[MenusRemoteKeyItems] = [NSArray arrayWithArray:dictionaryItems]; } - + return [NSDictionary dictionaryWithDictionary:dictionary]; } @@ -400,7 +402,7 @@ - (NSDictionary *)menuLocationJSONDictionaryFromLocation:(RemoteMenuLocation *)l { NSMutableDictionary *dictionary = [NSMutableDictionary dictionary]; [dictionary setObject:MenusRemoteKeyName forKey:location.name]; - + return [NSDictionary dictionaryWithDictionary:dictionary]; } diff --git a/Sources/WordPressShared/NSBundle+VersionNumberHelper.m b/Sources/WordPressKitObjC/NSBundle+VersionNumberHelper.m similarity index 100% rename from Sources/WordPressShared/NSBundle+VersionNumberHelper.m rename to Sources/WordPressKitObjC/NSBundle+VersionNumberHelper.m diff --git a/Sources/WordPressKit/Utility/NSMutableDictionary+Helpers.m b/Sources/WordPressKitObjC/NSMutableDictionary+Helpers.m similarity index 100% rename from Sources/WordPressKit/Utility/NSMutableDictionary+Helpers.m rename to Sources/WordPressKitObjC/NSMutableDictionary+Helpers.m diff --git a/Sources/WordPressKit/Services/PostServiceRemoteREST.m b/Sources/WordPressKitObjC/PostServiceRemoteREST.m similarity index 93% rename from Sources/WordPressKit/Services/PostServiceRemoteREST.m rename to Sources/WordPressKitObjC/PostServiceRemoteREST.m index 82e809e6..d8b967fe 100644 --- a/Sources/WordPressKit/Services/PostServiceRemoteREST.m +++ b/Sources/WordPressKitObjC/PostServiceRemoteREST.m @@ -1,9 +1,12 @@ #import "PostServiceRemoteREST.h" #import "RemotePost.h" #import "RemotePostCategory.h" -#import "RemoteUser.h" -#import "WPKit-Swift.h" +#import "FilePart.h" +#import "WPMapFilterReduce.h" +#import "DisplayableImageHelper.h" +#import "NSString+Helpers.h" +@import WordPressKitModels; @import NSObject_SafeExpectations; NSString * const PostRemoteStatusPublish = @"publish"; @@ -38,9 +41,9 @@ - (void)getPostWithID:(NSNumber *)postID NSString *path = [NSString stringWithFormat:@"sites/%@/posts/%@", self.siteID, postID]; NSString *requestUrl = [self pathForEndpoint:path withVersion:WordPressComRESTAPIVersion_1_1]; - + NSDictionary *parameters = @{ @"context": @"edit" }; - + [self.wordPressComRESTAPI get:requestUrl parameters:parameters success:^(id responseObject, NSHTTPURLResponse *httpResponse) { @@ -71,7 +74,7 @@ - (void)getPostsOfType:(NSString *)postType NSString *path = [NSString stringWithFormat:@"sites/%@/posts", self.siteID]; NSString *requestUrl = [self pathForEndpoint:path withVersion:WordPressComRESTAPIVersion_1_2]; - + NSDictionary *parameters = @{ @"status": @"any,trash", @"context": @"edit", @@ -103,9 +106,9 @@ -(void)getAutoSaveForPost:(RemotePost *)post NSString *path = [NSString stringWithFormat:@"sites/%@/posts/%@/autosave", self.siteID, post.postID]; NSString *requestUrl = [self pathForEndpoint:path withVersion:WordPressComRESTAPIVersion_1_1]; - + NSDictionary *parameters = [self parametersWithRemotePost:post]; - + [self.wordPressComRESTAPI get:requestUrl parameters:parameters success:^(id responseObject, NSHTTPURLResponse *httpResponse) { @@ -129,7 +132,7 @@ - (void)createPost:(RemotePost *)post NSString *path = [NSString stringWithFormat:@"sites/%@/posts/new?context=edit", self.siteID]; NSString *requestUrl = [self pathForEndpoint:path withVersion:WordPressComRESTAPIVersion_1_2]; - + NSDictionary *parameters = [self parametersWithRemotePost:post]; [self.wordPressComRESTAPI post:requestUrl @@ -193,7 +196,7 @@ - (void)updatePost:(RemotePost *)post NSString *path = [NSString stringWithFormat:@"sites/%@/posts/%@?context=edit", self.siteID, post.postID]; NSString *requestUrl = [self pathForEndpoint:path withVersion:WordPressComRESTAPIVersion_1_2]; - + NSDictionary *parameters = [self parametersWithRemotePost:post]; [self.wordPressComRESTAPI post:requestUrl @@ -215,13 +218,13 @@ - (void)autoSave:(RemotePost *)post failure:(void (^)(NSError *))failure { NSParameterAssert([post isKindOfClass:[RemotePost class]]); - + NSString *path = [NSString stringWithFormat:@"sites/%@/posts/%@/autosave", self.siteID, post.postID]; NSString *requestUrl = [self pathForEndpoint:path withVersion:WordPressComRESTAPIVersion_1_1]; - + NSDictionary *parameters = [self parametersWithRemotePost:post]; - + [self.wordPressComRESTAPI post:requestUrl parameters:parameters success:^(id responseObject, NSHTTPURLResponse *httpResponse) { @@ -246,7 +249,7 @@ - (void)deletePost:(RemotePost *)post NSString *path = [NSString stringWithFormat:@"sites/%@/posts/%@/delete", self.siteID, post.postID]; NSString *requestUrl = [self pathForEndpoint:path withVersion:WordPressComRESTAPIVersion_1_1]; - + [self.wordPressComRESTAPI post:requestUrl parameters:nil success:^(id responseObject, NSHTTPURLResponse *httpResponse) { @@ -270,7 +273,7 @@ - (void)trashPost:(RemotePost *)post NSString *path = [NSString stringWithFormat:@"sites/%@/posts/%@/delete?context=edit", self.siteID, post.postID]; NSString *requestUrl = [self pathForEndpoint:path withVersion:WordPressComRESTAPIVersion_1_1]; - + [self.wordPressComRESTAPI post:requestUrl parameters:nil success:^(id responseObject, NSHTTPURLResponse *httpResponse) { @@ -296,7 +299,7 @@ - (void)restorePost:(RemotePost *)post NSString *path = [NSString stringWithFormat:@"sites/%@/posts/%@/restore?context=edit", self.siteID, post.postID]; NSString *requestUrl = [self pathForEndpoint:path withVersion:WordPressComRESTAPIVersion_1_1]; - + [self.wordPressComRESTAPI post:requestUrl parameters:nil success:^(id responseObject, NSHTTPURLResponse *httpResponse) { @@ -311,51 +314,6 @@ - (void)restorePost:(RemotePost *)post }]; } -- (void)getLikesForPostID:(NSNumber *)postID - count:(NSNumber *)count - before:(NSString *)before - excludeUserIDs:(NSArray *)excludeUserIDs - success:(void (^)(NSArray * _Nonnull users, NSNumber *found))success - failure:(void (^)(NSError * _Nullable))failure -{ - NSParameterAssert(postID); - - NSString *path = [NSString stringWithFormat:@"sites/%@/posts/%@/likes", self.siteID, postID]; - NSString *requestUrl = [self pathForEndpoint:path - withVersion:WordPressComRESTAPIVersion_1_2]; - NSNumber *siteID = self.siteID; - - // If no count provided, default to endpoint max. - if (count == 0) { - count = @90; - } - - NSMutableDictionary *parameters = [NSMutableDictionary dictionaryWithDictionary:@{ @"number": count }]; - - if (before) { - parameters[@"before"] = before; - } - - if (excludeUserIDs) { - parameters[@"exclude"] = excludeUserIDs; - } - - [self.wordPressComRESTAPI get:requestUrl - parameters:parameters - success:^(id responseObject, NSHTTPURLResponse *httpResponse) { - if (success) { - NSArray *jsonUsers = responseObject[@"likes"] ?: @[]; - NSArray *users = [self remoteUsersFromJSONArray:jsonUsers postID:postID siteID:siteID]; - NSNumber *found = [responseObject numberForKey:@"found"] ?: @0; - success(users, found); - } - } failure:^(NSError *error, NSHTTPURLResponse *httpResponse) { - if (failure) { - failure(error); - } - }]; -} - - (NSDictionary *)dictionaryWithRemoteOptions:(id )options { NSMutableDictionary *remoteParams = [NSMutableDictionary dictionary]; @@ -365,7 +323,7 @@ - (NSDictionary *)dictionaryWithRemoteOptions:(id )opt if (options.offset) { [remoteParams setObject:options.offset forKey:RemoteOptionKeyOffset]; } - + NSString *statusesStr = nil; if (options.statuses.count) { statusesStr = [options.statuses componentsJoinedByString:@","]; @@ -382,7 +340,7 @@ - (NSDictionary *)dictionaryWithRemoteOptions:(id )opt } [remoteParams setObject:orderStr forKey:RemoteOptionKeyOrder]; } - + NSString *orderByStr = nil; if (options.orderBy) { switch (options.orderBy) { @@ -403,7 +361,7 @@ - (NSDictionary *)dictionaryWithRemoteOptions:(id )opt break; } } - + if (statusesStr.length) { [remoteParams setObject:statusesStr forKey:RemoteOptionKeyStatus]; } @@ -477,7 +435,7 @@ + (RemotePost *)remotePostFromJSONDictionary:(NSDictionary *)jsonPost { post.likeCount = [jsonPost numberForKeyPath:@"like_count"] ?: @0; post.isStickyPost = [jsonPost numberForKeyPath:@"sticky"]; - + // FIXME: remove conversion once API is fixed #38-io // metadata should always be an array but it's returning false when there are no custom fields post.metadata = [jsonPost arrayForKey:@"metadata"]; @@ -529,13 +487,13 @@ - (NSDictionary *)parametersWithRemotePost:(RemotePost *)post NSParameterAssert(post.content != nil); BOOL existingPost = ([post.postID longLongValue] > 0); NSMutableDictionary *parameters = [NSMutableDictionary dictionary]; - + if (post.title) { parameters[@"title"] = post.title; } else { parameters[@"title"] = @""; } - + parameters[@"content"] = post.content; parameters[@"password"] = post.password ? post.password : @""; parameters[@"type"] = post.type; @@ -577,7 +535,7 @@ - (NSDictionary *)parametersWithRemotePost:(RemotePost *)post if (metadata.count > 0) { parameters[@"metadata"] = metadata; } - + if (post.isStickyPost != nil) { parameters[@"sticky"] = post.isStickyPost.boolValue ? @"true" : @"false"; } diff --git a/Sources/WordPressKit/Services/PostServiceRemoteXMLRPC.m b/Sources/WordPressKitObjC/PostServiceRemoteXMLRPC.m similarity index 99% rename from Sources/WordPressKit/Services/PostServiceRemoteXMLRPC.m rename to Sources/WordPressKitObjC/PostServiceRemoteXMLRPC.m index 30a41613..0d21d90b 100644 --- a/Sources/WordPressKit/Services/PostServiceRemoteXMLRPC.m +++ b/Sources/WordPressKitObjC/PostServiceRemoteXMLRPC.m @@ -2,7 +2,11 @@ #import "RemotePost.h" #import "RemotePostCategory.h" #import "NSMutableDictionary+Helpers.h" -#import "WPKit-Swift.h" +#import "NSString+Helpers.h" +#import "WPMapFilterReduce.h" +#import "DisplayableImageHelper.h" + +@import WordPressKitModels; @import NSObject_SafeExpectations; const NSInteger HTTP404ErrorCode = 404; @@ -124,7 +128,7 @@ - (void)updatePost:(RemotePost *)post failure:(void (^)(NSError *))failure { NSParameterAssert(post.postID.integerValue > 0); - + if ([post.postID integerValue] <= 0) { if (failure) { NSDictionary *userInfo = @{NSLocalizedDescriptionKey: @"Can't edit a post if it's not in the server"}; @@ -230,7 +234,7 @@ - (NSDictionary *)dictionaryWithRemoteOptions:(id )opt if (options.offset) { [remoteParams setObject:options.offset forKey:RemoteOptionKeyOffset]; } - + NSString *statusesStr = nil; if (options.statuses.count) { statusesStr = [options.statuses componentsJoinedByString:@","]; @@ -247,7 +251,7 @@ - (NSDictionary *)dictionaryWithRemoteOptions:(id )opt } [remoteParams setObject:orderStr forKey:RemoteOptionKeyOrder]; } - + NSString *orderByStr = nil; if (options.orderBy) { switch (options.orderBy) { @@ -268,7 +272,7 @@ - (NSDictionary *)dictionaryWithRemoteOptions:(id )opt break; } } - + if (statusesStr.length) { [remoteParams setObject:statusesStr forKey:RemoteOptionKeyStatus]; } @@ -280,7 +284,7 @@ - (NSDictionary *)dictionaryWithRemoteOptions:(id )opt if (search.length) { [remoteParams setObject:search forKey:RemoteOptionKeySearch]; } - + return remoteParams.count ? [NSDictionary dictionaryWithDictionary:remoteParams] : nil; } @@ -329,7 +333,7 @@ + (RemotePost *)remotePostFromXMLRPCDictionary:(NSDictionary *)xmlrpcDictionary NSArray *terms = [xmlrpcDictionary arrayForKey:@"terms"]; post.tags = [self tagsFromXMLRPCTermsArray:terms]; post.categories = [self remoteCategoriesFromXMLRPCTermsArray:terms]; - + post.isStickyPost = [xmlrpcDictionary numberForKeyPath:@"sticky"]; // Pick an image to use for display @@ -388,7 +392,7 @@ - (NSDictionary *)parametersWithRemotePost:(RemotePost *)post [postParams setValueIfNotNil:post.excerpt forKey:@"mt_excerpt"]; [postParams setValueIfNotNil:post.slug forKey:@"wp_slug"]; [postParams setValueIfNotNil:post.authorID forKey:@"wp_author_id"]; - + // To remove a featured image, you have to send an empty string to the API if (post.postThumbnailID == nil) { // Including an empty string for wp_post_thumbnail generates @@ -414,7 +418,7 @@ - (NSDictionary *)parametersWithRemotePost:(RemotePost *)post NSArray *categoryNames = [post.categories wpkit_map:^id(RemotePostCategory *category) { return category.name; }]; - + postParams[@"categories"] = categoryNames; } diff --git a/Sources/WordPressKit/Services/ReaderPostServiceRemote.m b/Sources/WordPressKitObjC/ReaderPostServiceRemote.m similarity index 99% rename from Sources/WordPressKit/Services/ReaderPostServiceRemote.m rename to Sources/WordPressKitObjC/ReaderPostServiceRemote.m index 46da6729..745dc42e 100644 --- a/Sources/WordPressKit/Services/ReaderPostServiceRemote.m +++ b/Sources/WordPressKitObjC/ReaderPostServiceRemote.m @@ -2,7 +2,10 @@ #import "RemoteReaderPost.h" #import "RemoteSourcePostAttribution.h" #import "ReaderTopicServiceRemote.h" -#import "WPKit-Swift.h" +#import "WPKitDateUtils.h" +#import "NSString+Helpers.h" +#import "WPMapFilterReduce.h" + @import NSObject_SafeExpectations; NSString * const PostRESTKeyPosts = @"posts"; @@ -70,7 +73,7 @@ - (void)fetchPost:(NSUInteger)postID NSString *requestUrl = [self pathForEndpoint:path withVersion:WordPressComRESTAPIVersion_1_2]; - + [self.wordPressComRESTAPI get:requestUrl parameters:nil success:^(id responseObject, NSHTTPURLResponse *httpResponse) { @@ -142,7 +145,7 @@ - (void)likePost:(NSUInteger)postID NSString *path = [NSString stringWithFormat:@"sites/%lu/posts/%lu/likes/new", (unsigned long)siteID, (unsigned long)postID]; NSString *requestUrl = [self pathForEndpoint:path withVersion:WordPressComRESTAPIVersion_1_1]; - + [self.wordPressComRESTAPI post:requestUrl parameters:nil success:^(id responseObject, NSHTTPURLResponse *httpResponse) { if (success) { success(); @@ -162,7 +165,7 @@ - (void)unlikePost:(NSUInteger)postID NSString *path = [NSString stringWithFormat:@"sites/%lu/posts/%lu/likes/mine/delete", (unsigned long)siteID, (unsigned long)postID]; NSString *requestUrl = [self pathForEndpoint:path withVersion:WordPressComRESTAPIVersion_1_1]; - + [self.wordPressComRESTAPI post:requestUrl parameters:nil success:^(id responseObject, NSHTTPURLResponse *httpResponse) { if (success) { success(); diff --git a/Sources/WordPressKit/Services/ReaderSiteServiceRemote.m b/Sources/WordPressKitObjC/ReaderSiteServiceRemote.m similarity index 99% rename from Sources/WordPressKit/Services/ReaderSiteServiceRemote.m rename to Sources/WordPressKitObjC/ReaderSiteServiceRemote.m index 1aa121ca..0ddd4305 100644 --- a/Sources/WordPressKit/Services/ReaderSiteServiceRemote.m +++ b/Sources/WordPressKitObjC/ReaderSiteServiceRemote.m @@ -1,5 +1,7 @@ #import "ReaderSiteServiceRemote.h" -#import "WPKit-Swift.h" +#import "WPKitLogging.h" + +@import WordPressKitModels; @import NSObject_SafeExpectations; static NSString* const ReaderSiteServiceRemoteURLKey = @"url"; @@ -59,7 +61,7 @@ - (void)unfollowSiteWithID:(NSUInteger)siteID success:(void (^)(void))success fa NSString *path = [NSString stringWithFormat:@"sites/%lu/follows/mine/delete", (unsigned long)siteID]; NSString *requestUrl = [self pathForEndpoint:path withVersion:WordPressComRESTAPIVersion_1_1]; - + [self.wordPressComRESTAPI post:requestUrl parameters:nil success:^(id responseObject, NSHTTPURLResponse *httpResponse) { if (success) { success(); @@ -76,7 +78,7 @@ - (void)followSiteAtURL:(NSString *)siteURL success:(void (^)(void))success fail NSString *path = @"read/following/mine/new"; NSString *requestUrl = [self pathForEndpoint:path withVersion:WordPressComRESTAPIVersion_1_1]; - + NSDictionary *params = @{ReaderSiteServiceRemoteURLKey: siteURL, ReaderSiteServiceRemoteSourceKey: ReaderSiteServiceRemoteSourceValue}; [self.wordPressComRESTAPI post:requestUrl parameters:params success:^(id responseObject, NSHTTPURLResponse *httpResponse) { @@ -105,9 +107,9 @@ - (void)unfollowSiteAtURL:(NSString *)siteURL success:(void (^)(void))success fa NSString *path = @"read/following/mine/delete"; NSString *requestUrl = [self pathForEndpoint:path withVersion:WordPressComRESTAPIVersion_1_1]; - + NSDictionary *params = @{ReaderSiteServiceRemoteURLKey: siteURL}; - + [self.wordPressComRESTAPI post:requestUrl parameters:params success:^(id responseObject, NSHTTPURLResponse *httpResponse) { NSDictionary *dict = (NSDictionary *)responseObject; BOOL subscribed = [[dict numberForKey:@"subscribed"] boolValue]; @@ -161,7 +163,7 @@ - (void)findSiteIDForURL:(NSURL *)siteURL success:(void (^)(NSUInteger siteID))s NSString *path = [NSString stringWithFormat:@"sites/%@", host]; NSString *requestUrl = [self pathForEndpoint:path withVersion:WordPressComRESTAPIVersion_1_1]; - + [self.wordPressComRESTAPI get:requestUrl parameters:nil success:successBlock failure:^(NSError *error, NSHTTPURLResponse *httpResponse) { NSString *newHost; if ([host hasPrefix:@"www."]) { @@ -176,7 +178,7 @@ - (void)findSiteIDForURL:(NSURL *)siteURL success:(void (^)(NSUInteger siteID))s NSString *newPath = [NSString stringWithFormat:@"sites/%@", newHost]; NSString *newPathRequestUrl = [self pathForEndpoint:newPath withVersion:WordPressComRESTAPIVersion_1_1]; - + [self.wordPressComRESTAPI get:newPathRequestUrl parameters:nil success:successBlock failure:failureBlock]; }]; } @@ -216,7 +218,7 @@ - (void)checkSubscribedToSiteByID:(NSUInteger)siteID success:(void (^)(BOOL foll NSString *path = [NSString stringWithFormat:@"sites/%lu/follows/mine", (unsigned long)siteID]; NSString *requestUrl = [self pathForEndpoint:path withVersion:WordPressComRESTAPIVersion_1_1]; - + [self.wordPressComRESTAPI get:requestUrl parameters:nil success:^(id responseObject, NSHTTPURLResponse *httpResponse) { if (!success) { return; @@ -237,7 +239,7 @@ - (void)checkSubscribedToFeedByURL:(NSURL *)siteURL success:(void (^)(BOOL follo NSString *path = @"read/following/mine"; NSString *requestUrl = [self pathForEndpoint:path withVersion:WordPressComRESTAPIVersion_1_1]; - + [self.wordPressComRESTAPI get:requestUrl parameters:nil success:^(id responseObject, NSHTTPURLResponse *httpResponse) { if (!success) { return; @@ -265,7 +267,7 @@ - (void)flagSiteWithID:(NSUInteger)siteID asBlocked:(BOOL)blocked success:(void( } else { path = [NSString stringWithFormat:@"me/block/sites/%lu/delete", (unsigned long)siteID]; } - + NSString *requestUrl = [self pathForEndpoint:path withVersion:WordPressComRESTAPIVersion_1_1]; diff --git a/Sources/WordPressKit/Services/ReaderTopicServiceRemote.m b/Sources/WordPressKitObjC/ReaderTopicServiceRemote.m similarity index 99% rename from Sources/WordPressKit/Services/ReaderTopicServiceRemote.m rename to Sources/WordPressKitObjC/ReaderTopicServiceRemote.m index 9078367e..a350db72 100644 --- a/Sources/WordPressKit/Services/ReaderTopicServiceRemote.m +++ b/Sources/WordPressKitObjC/ReaderTopicServiceRemote.m @@ -1,5 +1,7 @@ #import "ReaderTopicServiceRemote.h" -#import "WPKit-Swift.h" +#import "WPMapFilterReduce.h" + +@import WordPressKitModels; @import NSObject_SafeExpectations; static NSString * const TopicMenuSectionDefaultKey = @"default"; @@ -192,7 +194,7 @@ - (void)fetchSiteInfoForSiteWithID:(NSNumber *)siteID requestUrl = [self pathForEndpoint:path withVersion:WordPressComRESTAPIVersion_1_2]; } - + [self.wordPressComRESTAPI get:requestUrl parameters:nil success:^(id responseObject, NSHTTPURLResponse *httpResponse) { if (!success) { return; @@ -227,7 +229,7 @@ - (RemoteReaderSiteInfo *)siteInfoFromFollowedSiteDictionary:(NSDictionary *)dic } siteInfo.postsEndpoint = [self endpointUrlForPath:siteInfo.endpointPath]; - + return siteInfo; } diff --git a/Sources/WordPressKit/Models/RemoteComment.m b/Sources/WordPressKitObjC/RemoteComment.m similarity index 100% rename from Sources/WordPressKit/Models/RemoteComment.m rename to Sources/WordPressKitObjC/RemoteComment.m diff --git a/Sources/WordPressKit/Models/RemoteMedia.m b/Sources/WordPressKitObjC/RemoteMedia.m similarity index 100% rename from Sources/WordPressKit/Models/RemoteMedia.m rename to Sources/WordPressKitObjC/RemoteMedia.m diff --git a/Sources/WordPressKit/Models/RemotePost.m b/Sources/WordPressKitObjC/RemotePost.m similarity index 100% rename from Sources/WordPressKit/Models/RemotePost.m rename to Sources/WordPressKitObjC/RemotePost.m diff --git a/Sources/WordPressKit/Models/RemotePostCategory.m b/Sources/WordPressKitObjC/RemotePostCategory.m similarity index 100% rename from Sources/WordPressKit/Models/RemotePostCategory.m rename to Sources/WordPressKitObjC/RemotePostCategory.m diff --git a/Sources/WordPressKit/Models/RemotePostTag.m b/Sources/WordPressKitObjC/RemotePostTag.m similarity index 100% rename from Sources/WordPressKit/Models/RemotePostTag.m rename to Sources/WordPressKitObjC/RemotePostTag.m diff --git a/Sources/WordPressKit/Models/RemotePostType.m b/Sources/WordPressKitObjC/RemotePostType.m similarity index 100% rename from Sources/WordPressKit/Models/RemotePostType.m rename to Sources/WordPressKitObjC/RemotePostType.m diff --git a/Sources/WordPressKit/Models/RemoteReaderPost.m b/Sources/WordPressKitObjC/RemoteReaderPost.m similarity index 99% rename from Sources/WordPressKit/Models/RemoteReaderPost.m rename to Sources/WordPressKitObjC/RemoteReaderPost.m index ebefeb08..8035c4c6 100644 --- a/Sources/WordPressKit/Models/RemoteReaderPost.m +++ b/Sources/WordPressKitObjC/RemoteReaderPost.m @@ -1,7 +1,12 @@ #import "RemoteReaderPost.h" #import "RemoteSourcePostAttribution.h" -#import "WPKit-Swift.h" +#import "NSString+Helpers.h" +#import "NSString+XMLExtensions.h" +#import "WPKitDateUtils.h" +#import "WPMapFilterReduce.h" +#import "DisplayableImageHelper.h" +@import WordPressKitModels; @import NSObject_SafeExpectations; // REST Post dictionary keys diff --git a/Sources/WordPressKit/Models/RemoteSourcePostAttribution.m b/Sources/WordPressKitObjC/RemoteSourcePostAttribution.m similarity index 100% rename from Sources/WordPressKit/Models/RemoteSourcePostAttribution.m rename to Sources/WordPressKitObjC/RemoteSourcePostAttribution.m diff --git a/Sources/WordPressKit/Models/RemoteTaxonomyPaging.m b/Sources/WordPressKitObjC/RemoteTaxonomyPaging.m similarity index 100% rename from Sources/WordPressKit/Models/RemoteTaxonomyPaging.m rename to Sources/WordPressKitObjC/RemoteTaxonomyPaging.m diff --git a/Sources/WordPressKit/Models/RemoteTheme.m b/Sources/WordPressKitObjC/RemoteTheme.m similarity index 100% rename from Sources/WordPressKit/Models/RemoteTheme.m rename to Sources/WordPressKitObjC/RemoteTheme.m diff --git a/Sources/BasicBlogAPIObjc/ServiceRemoteWordPressComREST.m b/Sources/WordPressKitObjC/ServiceRemoteWordPressComREST.m similarity index 70% rename from Sources/BasicBlogAPIObjc/ServiceRemoteWordPressComREST.m rename to Sources/WordPressKitObjC/ServiceRemoteWordPressComREST.m index b3f1f359..c88f6603 100644 --- a/Sources/BasicBlogAPIObjc/ServiceRemoteWordPressComREST.m +++ b/Sources/WordPressKitObjC/ServiceRemoteWordPressComREST.m @@ -1,15 +1,11 @@ #import "ServiceRemoteWordPressComREST.h" -#import "WPKit-Swift.h" +#import "WordPressComRESTAPIVersionedPathBuilder.h" @implementation ServiceRemoteWordPressComREST -- (instancetype)initWithWordPressComRestApi:(WordPressComRestApi *)wordPressComRestApi { - - NSParameterAssert([wordPressComRestApi isKindOfClass:[WordPressComRestApi class]]); - +- (instancetype)initWithWordPressComRestApi:(id)wordPressComRestApi { self = [super init]; if (self) { - _wordPressComRestApi = wordPressComRestApi; _wordPressComRESTAPI = wordPressComRestApi; } return self; diff --git a/Sources/WordPressKit/Services/ServiceRemoteWordPressXMLRPC.m b/Sources/WordPressKitObjC/ServiceRemoteWordPressXMLRPC.m similarity index 90% rename from Sources/WordPressKit/Services/ServiceRemoteWordPressXMLRPC.m rename to Sources/WordPressKitObjC/ServiceRemoteWordPressXMLRPC.m index c7db137a..dd8673a6 100644 --- a/Sources/WordPressKit/Services/ServiceRemoteWordPressXMLRPC.m +++ b/Sources/WordPressKitObjC/ServiceRemoteWordPressXMLRPC.m @@ -2,7 +2,7 @@ @interface ServiceRemoteWordPressXMLRPC() -@property (nonatomic, strong, readwrite) WordPressOrgXMLRPCApi *api; +@property (nonatomic, strong, readwrite) id api; @property (nonatomic, copy) NSString *username; @property (nonatomic, copy) NSString *password; @@ -10,7 +10,7 @@ @interface ServiceRemoteWordPressXMLRPC() @implementation ServiceRemoteWordPressXMLRPC -- (id)initWithApi:(WordPressOrgXMLRPCApi *)api username:(NSString *)username password:(NSString *)password +- (id)initWithApi:(id)api username:(NSString *)username password:(NSString *)password { NSParameterAssert(api != nil); NSParameterAssert(username != nil); diff --git a/Sources/WordPressKit/Services/SiteServiceRemoteWordPressComREST.m b/Sources/WordPressKitObjC/SiteServiceRemoteWordPressComREST.m similarity index 74% rename from Sources/WordPressKit/Services/SiteServiceRemoteWordPressComREST.m rename to Sources/WordPressKitObjC/SiteServiceRemoteWordPressComREST.m index c76a03b7..cc6de13b 100644 --- a/Sources/WordPressKit/Services/SiteServiceRemoteWordPressComREST.m +++ b/Sources/WordPressKitObjC/SiteServiceRemoteWordPressComREST.m @@ -6,7 +6,7 @@ @interface SiteServiceRemoteWordPressComREST () @implementation SiteServiceRemoteWordPressComREST -- (instancetype)initWithWordPressComRestApi:(WordPressComRestApi *)api siteID:(NSNumber *)siteID { +- (instancetype)initWithWordPressComRestApi:(id)api siteID:(NSNumber *)siteID { self = [super initWithWordPressComRestApi:api]; if (self) { _siteID = siteID; diff --git a/Sources/WordPressKit/Services/TaxonomyServiceRemoteREST.m b/Sources/WordPressKitObjC/TaxonomyServiceRemoteREST.m similarity index 99% rename from Sources/WordPressKit/Services/TaxonomyServiceRemoteREST.m rename to Sources/WordPressKitObjC/TaxonomyServiceRemoteREST.m index 4dbc4ee1..f3cb3b33 100644 --- a/Sources/WordPressKit/Services/TaxonomyServiceRemoteREST.m +++ b/Sources/WordPressKitObjC/TaxonomyServiceRemoteREST.m @@ -2,7 +2,8 @@ #import "RemotePostTag.h" #import "RemoteTaxonomyPaging.h" #import "RemotePostCategory.h" -#import "WPKit-Swift.h" +#import "WPMapFilterReduce.h" +#import "WPKitLogging.h" @import NSObject_SafeExpectations; NS_ASSUME_NONNULL_BEGIN @@ -34,13 +35,13 @@ - (void)createCategory:(RemotePostCategory *)category failure:(nullable void (^)(NSError *))failure { NSParameterAssert(category.name.length > 0); - + NSMutableDictionary *parameters = [NSMutableDictionary dictionary]; parameters[TaxonomyRESTNameParameter] = category.name; if (category.parentID) { parameters[TaxonomyRESTParentParameter] = category.parentID; } - + [self createTaxonomyWithType:TaxonomyRESTCategoryIdentifier parameters:parameters success:^(NSDictionary *taxonomyDictionary) { @@ -91,11 +92,11 @@ - (void)createTag:(RemotePostTag *)tag failure:(nullable void (^)(NSError *error))failure { NSParameterAssert(tag.name.length > 0); - + NSMutableDictionary *parameters = [NSMutableDictionary dictionary]; parameters[TaxonomyRESTNameParameter] = tag.name; parameters[TaxonomyRESTDescriptionParameter] = tag.tagDescription; - + [self createTaxonomyWithType:TaxonomyRESTTagIdentifier parameters:parameters success:^(NSDictionary *taxonomyDictionary) { @@ -111,12 +112,12 @@ - (void)updateTag:(RemotePostTag *)tag failure:(nullable void (^)(NSError *error))failure { NSParameterAssert(tag.name.length > 0); - + NSMutableDictionary *parameters = [NSMutableDictionary dictionary]; parameters[TaxonomyRESTSlugParameter] = tag.slug; parameters[TaxonomyRESTNameParameter] = tag.name; parameters[TaxonomyRESTDescriptionParameter] = tag.tagDescription; - + [self updateTaxonomyWithType:TaxonomyRESTTagIdentifier parameters:parameters success:^(NSDictionary * _Nonnull responseObject) { if (success) { @@ -131,10 +132,10 @@ - (void)deleteTag:(RemotePostTag *)tag failure:(nullable void (^)(NSError *error))failure { NSParameterAssert(tag.name.length > 0); - + NSMutableDictionary *parameters = [NSMutableDictionary dictionary]; parameters[TaxonomyRESTSlugParameter] = tag.slug; - + [self deleteTaxonomyWithType:TaxonomyRESTTagIdentifier parameters:parameters success:^(NSDictionary * _Nonnull responseObject) { if (success) { success(); @@ -184,7 +185,7 @@ - (void)createTaxonomyWithType:(NSString *)typeIdentifier { NSString *path = [NSString stringWithFormat:@"sites/%@/%@/new?context=edit", self.siteID, typeIdentifier]; NSString *requestUrl = [self pathForEndpoint:path withVersion:WordPressComRESTAPIVersion_1_1]; - + [self.wordPressComRESTAPI post:requestUrl parameters:parameters success:^(id _Nonnull responseObject, NSHTTPURLResponse *httpResponse) { @@ -209,7 +210,7 @@ - (void)getTaxonomyWithType:(NSString *)typeIdentifier NSString *path = [NSString stringWithFormat:@"sites/%@/%@?context=edit", self.siteID, typeIdentifier]; NSString *requestUrl = [self pathForEndpoint:path withVersion:WordPressComRESTAPIVersion_1_1]; - + [self.wordPressComRESTAPI get:requestUrl parameters:parameters success:^(id _Nonnull responseObject, NSHTTPURLResponse *httpResponse) { @@ -234,7 +235,7 @@ - (void)deleteTaxonomyWithType:(NSString *)typeIdentifier NSString *path = [NSString stringWithFormat:@"sites/%@/%@/slug:%@/delete?context=edit", self.siteID, typeIdentifier, parameters[TaxonomyRESTSlugParameter]]; NSString *requestUrl = [self pathForEndpoint:path withVersion:WordPressComRESTAPIVersion_1_1]; - + [self.wordPressComRESTAPI post:requestUrl parameters:nil success:^(id _Nonnull responseObject, NSHTTPURLResponse *httpResponse) { @@ -259,7 +260,7 @@ - (void)updateTaxonomyWithType:(NSString *)typeIdentifier NSString *path = [NSString stringWithFormat:@"sites/%@/%@/slug:%@?context=edit", self.siteID, typeIdentifier, parameters[TaxonomyRESTSlugParameter]]; NSString *requestUrl = [self pathForEndpoint:path withVersion:WordPressComRESTAPIVersion_1_1]; - + [self.wordPressComRESTAPI post:requestUrl parameters:parameters success:^(id _Nonnull responseObject, NSHTTPURLResponse *httpResponse) { diff --git a/Sources/WordPressKit/Services/TaxonomyServiceRemoteXMLRPC.m b/Sources/WordPressKitObjC/TaxonomyServiceRemoteXMLRPC.m similarity index 99% rename from Sources/WordPressKit/Services/TaxonomyServiceRemoteXMLRPC.m rename to Sources/WordPressKitObjC/TaxonomyServiceRemoteXMLRPC.m index 6e11502d..49358499 100644 --- a/Sources/WordPressKit/Services/TaxonomyServiceRemoteXMLRPC.m +++ b/Sources/WordPressKitObjC/TaxonomyServiceRemoteXMLRPC.m @@ -1,7 +1,10 @@ #import "TaxonomyServiceRemoteXMLRPC.h" +#import "RemotePostCategory.h" #import "RemotePostTag.h" #import "RemoteTaxonomyPaging.h" -#import "WPKit-Swift.h" +#import "NSString+Helpers.h" +#import "WPMapFilterReduce.h" +#import "WPKitLogging.h" @import NSObject_SafeExpectations; @@ -35,7 +38,7 @@ - (void)createCategory:(RemotePostCategory *)category if ([category.parentID integerValue] > 0) { [extraParameters setObject:category.parentID forKey:TaxonomyXMLRPCParentParameter]; } - + [self createTaxonomyWithType:TaxonomyXMLRPCCategoryIdentifier parameters:extraParameters success:^(NSString *responseString) { @@ -90,7 +93,7 @@ - (void)createTag:(RemotePostTag *)tag NSMutableDictionary *extraParameters = [NSMutableDictionary dictionary]; [extraParameters setObject:tag.name ?: [NSNull null] forKey:TaxonomyXMLRPCNameParameter]; [extraParameters setObject:tag.tagDescription ?: [NSNull null] forKey:TaxonomyXMLRPCDescriptionParameter]; - + [self createTaxonomyWithType:TaxonomyXMLRPCTagIdentifier parameters:extraParameters success:^(NSString *responseString) { @@ -181,9 +184,9 @@ - (void)createTaxonomyWithType:(NSString *)typeIdentifier if (parameters.count) { [mutableParametersDict addEntriesFromDictionary:parameters]; } - + xmlrpcParameters = [self XMLRPCArgumentsWithExtra:mutableParametersDict]; - + [self.api callMethod:@"wp.newTerm" parameters:xmlrpcParameters success:^(id responseObject, NSHTTPURLResponse *httpResponse) { @@ -235,7 +238,7 @@ - (void)deleteTaxonomyWithType:(NSString *)typeIdentifier { NSArray *xmlrpcParameters = [self XMLRPCArgumentsWithExtraDefaults:@[typeIdentifier, termId] andExtra:nil]; - + [self.api callMethod:@"wp.deleteTerm" parameters:xmlrpcParameters success:^(id responseObject, NSHTTPURLResponse *httpResponse) { @@ -265,7 +268,7 @@ - (void)editTaxonomyWithType:(NSString *)typeIdentifier } xmlrpcParameters = [self XMLRPCArgumentsWithExtraDefaults:@[termId] andExtra:mutableParametersDict]; - + [self.api callMethod:@"wp.editTerm" parameters:xmlrpcParameters success:^(id responseObject, NSHTTPURLResponse *httpResponse) { diff --git a/Sources/WordPressKit/Services/ThemeServiceRemote.m b/Sources/WordPressKitObjC/ThemeServiceRemote.m similarity index 99% rename from Sources/WordPressKit/Services/ThemeServiceRemote.m rename to Sources/WordPressKitObjC/ThemeServiceRemote.m index 496c5a77..e20c31f4 100644 --- a/Sources/WordPressKit/Services/ThemeServiceRemote.m +++ b/Sources/WordPressKitObjC/ThemeServiceRemote.m @@ -1,7 +1,6 @@ #import "ThemeServiceRemote.h" #import "RemoteTheme.h" -#import "WPKit-Swift.h" @import NSObject_SafeExpectations; // Service dictionary keys @@ -28,7 +27,7 @@ - (NSProgress *)getActiveThemeForBlogId:(NSNumber *)blogId NSString *path = [NSString stringWithFormat:@"sites/%@/themes/mine", blogId]; NSString *requestUrl = [self pathForEndpoint:path withVersion:WordPressComRESTAPIVersion_1_1]; - + NSProgress *progress = [self.wordPressComRESTAPI get:requestUrl parameters:nil success:^(NSDictionary *themeDictionary, NSHTTPURLResponse *httpResponse) { @@ -51,11 +50,11 @@ - (NSProgress *)getPurchasedThemesForBlogId:(NSNumber *)blogId failure:(ThemeServiceRemoteFailureBlock)failure { NSParameterAssert([blogId isKindOfClass:[NSNumber class]]); - + NSString *path = [NSString stringWithFormat:@"sites/%@/themes/purchased", blogId]; NSString *requestUrl = [self pathForEndpoint:path withVersion:WordPressComRESTAPIVersion_1_1]; - + NSProgress *progress = [self.wordPressComRESTAPI get:requestUrl parameters:nil success:^(NSDictionary *response, NSHTTPURLResponse *httpResponse) { @@ -68,7 +67,7 @@ - (NSProgress *)getPurchasedThemesForBlogId:(NSNumber *)blogId failure(error); } }]; - + return progress; } @@ -77,11 +76,11 @@ - (NSProgress *)getThemeId:(NSString*)themeId failure:(ThemeServiceRemoteFailureBlock)failure { NSParameterAssert([themeId isKindOfClass:[NSString class]]); - + NSString *path = [NSString stringWithFormat:@"themes/%@", themeId]; NSString *requestUrl = [self pathForEndpoint:path withVersion:WordPressComRESTAPIVersion_1_1]; - + NSProgress *progress = [self.wordPressComRESTAPI get:requestUrl parameters:nil success:^(NSDictionary *themeDictionary, NSHTTPURLResponse *httpResponse) { @@ -94,7 +93,7 @@ - (NSProgress *)getThemeId:(NSString*)themeId failure(error); } }]; - + return progress; } @@ -105,20 +104,20 @@ - (NSProgress *)getWPThemesPage:(NSInteger)page failure:(ThemeServiceRemoteFailureBlock)failure { NSParameterAssert(page > 0); - + NSString *requestUrl = [self pathForEndpoint:@"themes" withVersion:WordPressComRESTAPIVersion_2_0]; - + NSMutableDictionary *parameters = [@{ ThemeRequestTierKey: freeOnly ? ThemeRequestTierFreeValue : ThemeRequestTierAllValue, ThemeRequestNumberKey: @(ThemeRequestNumberValue), ThemeRequestPageKey: @(page) } mutableCopy]; - + if (search) { parameters[ThemeRequestSearchKey] = search; } - + return [self getThemesWithRequestUrl:requestUrl page:page parameters:parameters @@ -220,12 +219,12 @@ - (void)getStartingThemesForCategory:(NSString *)category NSString *path = [NSString stringWithFormat:@"themes/?filter=starting-%@", category]; NSString *requestUrl = [self pathForEndpoint:path withVersion:WordPressComRESTAPIVersion_1_2]; - + NSDictionary *parameters = @{ ThemeRequestNumberKey: @(ThemeRequestNumberValue), ThemeRequestPageKey: @(page), }; - + [self getThemesWithRequestUrl:requestUrl page:page parameters:parameters @@ -270,13 +269,13 @@ - (NSProgress *)activateThemeId:(NSString *)themeId { NSParameterAssert([themeId isKindOfClass:[NSString class]]); NSParameterAssert([blogId isKindOfClass:[NSNumber class]]); - + NSString* const path = [NSString stringWithFormat:@"sites/%@/themes/mine", blogId]; NSString *requestUrl = [self pathForEndpoint:path withVersion:WordPressComRESTAPIVersion_1_1]; - + NSDictionary* parameters = @{@"theme": themeId}; - + NSProgress *progress = [self.wordPressComRESTAPI post:requestUrl parameters:parameters success:^(NSDictionary *themeDictionary, NSHTTPURLResponse *httpResponse) { @@ -290,7 +289,7 @@ - (NSProgress *)activateThemeId:(NSString *)themeId failure(error); } }]; - + return progress; } @@ -331,9 +330,9 @@ - (NSProgress *)installThemeId:(NSString*)themeId - (NSArray *)themeIdentifiersFromPurchasedThemesRequestResponse:(id)response { NSParameterAssert(response != nil); - + NSArray *themeIdentifiers = [response arrayForKey:ThemeServiceRemoteThemesKey]; - + return themeIdentifiers; } @@ -345,10 +344,10 @@ - (NSArray *)themeIdentifiersFromPurchasedThemesRequestResponse:(id)response - (NSArray *)themesFromMultipleThemesRequestResponse:(id)response { NSParameterAssert(response != nil); - + NSArray *themeDictionaries = [response arrayForKey:ThemeServiceRemoteThemesKey]; NSArray *themes = [self themesFromDictionaries:themeDictionaries]; - + return themes; } @@ -364,7 +363,7 @@ - (NSArray *)themeIdentifiersFromPurchasedThemesRequestResponse:(id)response - (RemoteTheme *)themeFromDictionary:(NSDictionary *)dictionary { NSParameterAssert([dictionary isKindOfClass:[NSDictionary class]]); - + static NSString* const ThemeActiveKey = @"active"; static NSString* const ThemeTypeKey = @"theme_type"; static NSString* const ThemeAuthorKey = @"author"; @@ -386,9 +385,9 @@ - (RemoteTheme *)themeFromDictionary:(NSDictionary *)dictionary static NSString* const ThemeVersionKey = @"version"; static NSString* const ThemeDomainPublic = @"pub"; static NSString* const ThemeDomainPremium = @"premium"; - + RemoteTheme *theme = [RemoteTheme new]; - + [self loadLaunchDateForTheme:theme fromDictionary:dictionary]; theme.active = [[dictionary numberForKey:ThemeActiveKey] boolValue]; @@ -429,18 +428,18 @@ - (RemoteTheme *)themeFromDictionary:(NSDictionary *)dictionary - (NSArray *)themesFromDictionaries:(NSArray *)dictionaries { NSParameterAssert([dictionaries isKindOfClass:[NSArray class]]); - + NSMutableArray *themes = [[NSMutableArray alloc] initWithCapacity:dictionaries.count]; - + for (NSDictionary *dictionary in dictionaries) { NSAssert([dictionary isKindOfClass:[NSDictionary class]], @"Expected a dictionary."); - + RemoteTheme *theme = [self themeFromDictionary:dictionary]; - + [themes addObject:theme]; } - + return [NSArray arrayWithArray:themes]; } @@ -458,14 +457,14 @@ - (void)loadLaunchDateForTheme:(RemoteTheme *)theme { NSParameterAssert([theme isKindOfClass:[RemoteTheme class]]); NSParameterAssert([dictionary isKindOfClass:[NSDictionary class]]); - + static NSString* const ThemeLaunchDateKey = @"date_launched"; - + NSString *launchDateString = [dictionary stringForKey:ThemeLaunchDateKey]; - + NSDateFormatter *formatter = [[NSDateFormatter alloc] init]; [formatter setDateFormat:@"yyyy-mm-dd"]; - + theme.launchDate = [formatter dateFromString:launchDateString]; } diff --git a/Sources/WordPressShared/WPKitDateUtils.m b/Sources/WordPressKitObjC/WPKitDateUtils.m similarity index 100% rename from Sources/WordPressShared/WPKitDateUtils.m rename to Sources/WordPressKitObjC/WPKitDateUtils.m diff --git a/Sources/WordPressKit/Logging/WPKitLogging.m b/Sources/WordPressKitObjC/WPKitLogging.m similarity index 100% rename from Sources/WordPressKit/Logging/WPKitLogging.m rename to Sources/WordPressKitObjC/WPKitLogging.m diff --git a/Sources/WordPressShared/WPMapFilterReduce.m b/Sources/WordPressKitObjC/WPMapFilterReduce.m similarity index 100% rename from Sources/WordPressShared/WPMapFilterReduce.m rename to Sources/WordPressKitObjC/WPMapFilterReduce.m diff --git a/Sources/APIInterface/WordPressComRESTAPIVersionedPathBuilder.m b/Sources/WordPressKitObjC/WordPressComRESTAPIVersionedPathBuilder.m similarity index 100% rename from Sources/APIInterface/WordPressComRESTAPIVersionedPathBuilder.m rename to Sources/WordPressKitObjC/WordPressComRESTAPIVersionedPathBuilder.m diff --git a/Sources/WordPressKit/Services/WordPressComServiceRemote.m b/Sources/WordPressKitObjC/WordPressComServiceRemote.m similarity index 92% rename from Sources/WordPressKit/Services/WordPressComServiceRemote.m rename to Sources/WordPressKitObjC/WordPressComServiceRemote.m index 0db615a5..a7a63fdd 100644 --- a/Sources/WordPressKit/Services/WordPressComServiceRemote.m +++ b/Sources/WordPressKitObjC/WordPressComServiceRemote.m @@ -1,5 +1,7 @@ #import "WordPressComServiceRemote.h" -#import "WPKit-Swift.h" +#import "NSString+Helpers.h" +#import "WordPressComRestApiErrorDomain.h" + @import NSObject_SafeExpectations; @implementation WordPressComServiceRemote @@ -15,7 +17,7 @@ - (void)createWPComAccountWithEmail:(NSString *)email NSParameterAssert([email isKindOfClass:[NSString class]]); NSParameterAssert([username isKindOfClass:[NSString class]]); NSParameterAssert([password isKindOfClass:[NSString class]]); - + [self createWPComAccountWithEmail:email andUsername:username andPassword:password @@ -38,16 +40,16 @@ - (void)createWPComAccountWithEmail:(NSString *)email NSParameterAssert([email isKindOfClass:[NSString class]]); NSParameterAssert([username isKindOfClass:[NSString class]]); NSParameterAssert([password isKindOfClass:[NSString class]]); - + void (^successBlock)(id, NSHTTPURLResponse *) = ^(id responseObject, NSHTTPURLResponse *httpResponse) { success(responseObject); }; - + void (^failureBlock)(NSError *, NSHTTPURLResponse *) = ^(NSError *error, NSHTTPURLResponse *httpResponse){ NSError *errorWithLocalizedMessage = [self errorWithLocalizedMessage:error]; failure(errorWithLocalizedMessage); }; - + NSDictionary *params = @{ @"email": email, @"username": username, @@ -56,10 +58,10 @@ - (void)createWPComAccountWithEmail:(NSString *)email @"client_id": clientID, @"client_secret": clientSecret }; - + NSString *requestUrl = [self pathForEndpoint:@"users/new" withVersion:WordPressComRESTAPIVersion_1_1]; - + [self.wordPressComRESTAPI post:requestUrl parameters:params success:successBlock failure:failureBlock]; } @@ -169,33 +171,25 @@ - (void)createWPComBlogWithUrl:(NSString *)blogUrl { NSParameterAssert([blogUrl isKindOfClass:[NSString class]]); NSParameterAssert([languageId isKindOfClass:[NSString class]]); - + void (^successBlock)(id, NSHTTPURLResponse *) = ^(id responseObject, NSHTTPURLResponse *httpResponse) { NSDictionary *response = responseObject; if ([response count] == 0) { - // There was an error creating the blog as a successful call yields a dictionary back. - NSString *localizedErrorMessage = NSLocalizedString(@"Unknown error", nil); - NSMutableDictionary *userInfo = [[NSMutableDictionary alloc] init]; - userInfo[WordPressComRestApi.ErrorKeyErrorMessage] = localizedErrorMessage; - userInfo[NSLocalizedDescriptionKey] = localizedErrorMessage; - NSError *errorWithLocalizedMessage = [[NSError alloc] initWithDomain:WordPressComRestApiErrorDomain - code:WordPressComRestApiErrorCodeUnknown - userInfo:userInfo]; - failure(errorWithLocalizedMessage); + failure([self.wordPressComRESTAPI unknownResponseError]); } else { success(responseObject); } }; - + void (^failureBlock)(NSError *, NSHTTPURLResponse *) = ^(NSError *error, NSHTTPURLResponse *httpResponse){ NSError *errorWithLocalizedMessage = [self errorWithLocalizedMessage:error]; failure(errorWithLocalizedMessage); }; - + if (blogTitle == nil) { blogTitle = @""; } - + int blogVisibility = 1; if (visibility == WordPressComServiceBlogVisibilityPublic) { blogVisibility = 1; @@ -205,7 +199,7 @@ - (void)createWPComBlogWithUrl:(NSString *)blogUrl // Hidden blogVisibility = 0; } - + NSDictionary *params = @{ @"blog_name": blogUrl, @"blog_title": blogTitle, @@ -215,11 +209,11 @@ - (void)createWPComBlogWithUrl:(NSString *)blogUrl @"client_id": clientID, @"client_secret": clientSecret }; - - + + NSString *requestUrl = [self pathForEndpoint:@"sites/new" withVersion:WordPressComRESTAPIVersion_1_1]; - + [self.wordPressComRESTAPI post:requestUrl parameters:params success:successBlock failure:failureBlock]; } @@ -228,13 +222,13 @@ - (void)createWPComBlogWithUrl:(NSString *)blogUrl - (NSError *)errorWithLocalizedMessage:(NSError *)error { NSError *errorWithLocalizedMessage = error; if ([error.domain isEqual:WordPressComRestApiErrorDomain] && - [error.userInfo objectForKey:WordPressComRestApi.ErrorKeyErrorCode] != nil) { + [error.userInfo objectForKey:self.wordPressComRESTAPI.errorCodeKey] != nil) { NSString *localizedErrorMessage = [self errorMessageForError:error]; - NSString *errorCode = [error.userInfo objectForKey:WordPressComRestApi.ErrorKeyErrorCode]; + NSString *errorCode = [error.userInfo objectForKey:self.wordPressComRESTAPI.errorCodeKey]; NSMutableDictionary *userInfo = [[NSMutableDictionary alloc] initWithDictionary:error.userInfo]; - userInfo[WordPressComRestApi.ErrorKeyErrorCode] = errorCode; - userInfo[WordPressComRestApi.ErrorKeyErrorMessage] = localizedErrorMessage; + userInfo[self.wordPressComRESTAPI.errorCodeKey] = errorCode; + userInfo[self.wordPressComRESTAPI.errorMessageKey] = localizedErrorMessage; userInfo[NSLocalizedDescriptionKey] = localizedErrorMessage; errorWithLocalizedMessage = [[NSError alloc] initWithDomain:error.domain code:error.code userInfo:userInfo]; } @@ -243,9 +237,9 @@ - (NSError *)errorWithLocalizedMessage:(NSError *)error { - (NSString *)errorMessageForError:(NSError *)error { - NSString *errorCode = [error.userInfo stringForKey:WordPressComRestApi.ErrorKeyErrorCode]; + NSString *errorCode = [error.userInfo stringForKey:self.wordPressComRESTAPI.errorCodeKey]; NSString *errorMessage = [[error.userInfo stringForKey:NSLocalizedDescriptionKey] wpkit_stringByStrippingHTML]; - + if ([errorCode isEqualToString:@"username_only_lowercase_letters_and_numbers"]) { return NSLocalizedString(@"Sorry, usernames can only contain lowercase letters (a-z) and numbers.", nil); } else if ([errorCode isEqualToString:@"username_required"]) { @@ -310,10 +304,10 @@ - (NSString *)errorMessageForError:(NSError *)error NSRange invalidTextRange = [result rangeAtIndex:1]; invalidPhrase = [NSString stringWithFormat:@" (\"%@\")", [errorMessage substringWithRange:invalidTextRange]]; } - + return [NSString stringWithFormat:NSLocalizedString(@"Sorry, but your username contains an invalid phrase%@.", @"This error message occurs when a user tries to create a username that contains an invalid phrase for WordPress.com. The %@ may include the phrase in question if it was sent down by the API"), invalidPhrase]; } - + // We have a few ambiguous errors that come back from the api, they sometimes have error messages included so // attempt to return that if possible. If not fall back to a generic error. NSDictionary *ambiguousErrors = @{ @@ -325,15 +319,15 @@ - (NSString *)errorMessageForError:(NSError *)error if (errorMessage != nil) { return errorMessage; } - + return [ambiguousErrors objectForKey:errorCode]; } - + // Return an error message if there's one included rather than the unhelpful "Unknown Error" if (errorMessage != nil) { return errorMessage; } - + return NSLocalizedString(@"Unknown error", nil); } diff --git a/Sources/WordPressKit/Services/AccountServiceRemote.h b/Sources/WordPressKitObjC/include/AccountServiceRemote.h similarity index 99% rename from Sources/WordPressKit/Services/AccountServiceRemote.h rename to Sources/WordPressKitObjC/include/AccountServiceRemote.h index b9c02d06..c891b1c6 100644 --- a/Sources/WordPressKit/Services/AccountServiceRemote.h +++ b/Sources/WordPressKitObjC/include/AccountServiceRemote.h @@ -1,6 +1,6 @@ #import -#import +@class RemoteUser; @class WPAccount; static NSString * const AccountServiceRemoteErrorDomain = @"AccountServiceErrorDomain"; diff --git a/Sources/WordPressKit/Services/AccountServiceRemoteREST.h b/Sources/WordPressKitObjC/include/AccountServiceRemoteREST.h similarity index 96% rename from Sources/WordPressKit/Services/AccountServiceRemoteREST.h rename to Sources/WordPressKitObjC/include/AccountServiceRemoteREST.h index a4c0223f..dbdaa9d9 100644 --- a/Sources/WordPressKit/Services/AccountServiceRemoteREST.h +++ b/Sources/WordPressKitObjC/include/AccountServiceRemoteREST.h @@ -1,6 +1,6 @@ #import -#import -#import +#import "AccountServiceRemote.h" +#import "ServiceRemoteWordPressComREST.h" typedef NSString* const MagicLinkParameter NS_TYPED_ENUM; extern MagicLinkParameter const MagicLinkParameterFlow; diff --git a/Sources/WordPressKit/Services/BlogServiceRemote.h b/Sources/WordPressKitObjC/include/BlogServiceRemote.h similarity index 100% rename from Sources/WordPressKit/Services/BlogServiceRemote.h rename to Sources/WordPressKitObjC/include/BlogServiceRemote.h diff --git a/Sources/WordPressKit/Services/BlogServiceRemoteREST.h b/Sources/WordPressKitObjC/include/BlogServiceRemoteREST.h similarity index 96% rename from Sources/WordPressKit/Services/BlogServiceRemoteREST.h rename to Sources/WordPressKitObjC/include/BlogServiceRemoteREST.h index e7d284f2..926840a8 100644 --- a/Sources/WordPressKit/Services/BlogServiceRemoteREST.h +++ b/Sources/WordPressKitObjC/include/BlogServiceRemoteREST.h @@ -1,6 +1,6 @@ #import -#import -#import +#import "BlogServiceRemote.h" +#import "SiteServiceRemoteWordPressComREST.h" typedef void (^BlogDetailsHandler)(RemoteBlog *remoteBlog); typedef void (^SettingsHandler)(RemoteBlogSettings *settings); diff --git a/Sources/WordPressKit/Services/BlogServiceRemoteXMLRPC.h b/Sources/WordPressKitObjC/include/BlogServiceRemoteXMLRPC.h similarity index 91% rename from Sources/WordPressKit/Services/BlogServiceRemoteXMLRPC.h rename to Sources/WordPressKitObjC/include/BlogServiceRemoteXMLRPC.h index 57a64cc1..225ec619 100644 --- a/Sources/WordPressKit/Services/BlogServiceRemoteXMLRPC.h +++ b/Sources/WordPressKitObjC/include/BlogServiceRemoteXMLRPC.h @@ -1,6 +1,6 @@ #import -#import -#import +#import "BlogServiceRemote.h" +#import "ServiceRemoteWordPressXMLRPC.h" typedef void (^OptionsHandler)(NSDictionary *options); diff --git a/Sources/WordPressKit/Services/CommentServiceRemote.h b/Sources/WordPressKitObjC/include/CommentServiceRemote.h similarity index 98% rename from Sources/WordPressKit/Services/CommentServiceRemote.h rename to Sources/WordPressKitObjC/include/CommentServiceRemote.h index 1621c57a..1f7e11c5 100644 --- a/Sources/WordPressKit/Services/CommentServiceRemote.h +++ b/Sources/WordPressKitObjC/include/CommentServiceRemote.h @@ -1,5 +1,5 @@ #import -#import +#import "RemoteComment.h" // Used to determine which 'status' parameter to use when fetching Comments. diff --git a/Sources/WordPressKit/Services/CommentServiceRemoteREST.h b/Sources/WordPressKitObjC/include/CommentServiceRemoteREST.h similarity index 97% rename from Sources/WordPressKit/Services/CommentServiceRemoteREST.h rename to Sources/WordPressKitObjC/include/CommentServiceRemoteREST.h index 4089461a..6f82dc4f 100644 --- a/Sources/WordPressKit/Services/CommentServiceRemoteREST.h +++ b/Sources/WordPressKitObjC/include/CommentServiceRemoteREST.h @@ -1,6 +1,6 @@ #import -#import -#import +#import "CommentServiceRemote.h" +#import "SiteServiceRemoteWordPressComREST.h" @class RemoteUser; @class RemoteLikeUser; diff --git a/Sources/WordPressKit/Services/CommentServiceRemoteXMLRPC.h b/Sources/WordPressKitObjC/include/CommentServiceRemoteXMLRPC.h similarity index 56% rename from Sources/WordPressKit/Services/CommentServiceRemoteXMLRPC.h rename to Sources/WordPressKitObjC/include/CommentServiceRemoteXMLRPC.h index 9c6279b2..2f5bcfa7 100644 --- a/Sources/WordPressKit/Services/CommentServiceRemoteXMLRPC.h +++ b/Sources/WordPressKitObjC/include/CommentServiceRemoteXMLRPC.h @@ -1,6 +1,6 @@ #import -#import -#import +#import "CommentServiceRemote.h" +#import "ServiceRemoteWordPressXMLRPC.h" @interface CommentServiceRemoteXMLRPC : ServiceRemoteWordPressXMLRPC diff --git a/Sources/WordPressShared/DisplayableImageHelper.h b/Sources/WordPressKitObjC/include/DisplayableImageHelper.h similarity index 100% rename from Sources/WordPressShared/DisplayableImageHelper.h rename to Sources/WordPressKitObjC/include/DisplayableImageHelper.h diff --git a/Sources/APIInterface/include/FilePart.h b/Sources/WordPressKitObjC/include/FilePart.h similarity index 100% rename from Sources/APIInterface/include/FilePart.h rename to Sources/WordPressKitObjC/include/FilePart.h diff --git a/Sources/WordPressKit/Services/MediaServiceRemote.h b/Sources/WordPressKitObjC/include/MediaServiceRemote.h similarity index 100% rename from Sources/WordPressKit/Services/MediaServiceRemote.h rename to Sources/WordPressKitObjC/include/MediaServiceRemote.h diff --git a/Sources/WordPressKit/Services/MediaServiceRemoteREST.h b/Sources/WordPressKitObjC/include/MediaServiceRemoteREST.h similarity index 93% rename from Sources/WordPressKit/Services/MediaServiceRemoteREST.h rename to Sources/WordPressKitObjC/include/MediaServiceRemoteREST.h index b573ed97..1b8e8cb5 100644 --- a/Sources/WordPressKit/Services/MediaServiceRemoteREST.h +++ b/Sources/WordPressKitObjC/include/MediaServiceRemoteREST.h @@ -1,6 +1,6 @@ #import -#import -#import +#import "MediaServiceRemote.h" +#import "SiteServiceRemoteWordPressComREST.h" @interface MediaServiceRemoteREST : SiteServiceRemoteWordPressComREST diff --git a/Sources/WordPressKit/Services/MediaServiceRemoteXMLRPC.h b/Sources/WordPressKitObjC/include/MediaServiceRemoteXMLRPC.h similarity index 56% rename from Sources/WordPressKit/Services/MediaServiceRemoteXMLRPC.h rename to Sources/WordPressKitObjC/include/MediaServiceRemoteXMLRPC.h index a1594e70..0b24f2a7 100644 --- a/Sources/WordPressKit/Services/MediaServiceRemoteXMLRPC.h +++ b/Sources/WordPressKitObjC/include/MediaServiceRemoteXMLRPC.h @@ -1,6 +1,6 @@ #import -#import -#import +#import "MediaServiceRemote.h" +#import "ServiceRemoteWordPressXMLRPC.h" @interface MediaServiceRemoteXMLRPC : ServiceRemoteWordPressXMLRPC @end diff --git a/Sources/WordPressKit/Services/MenusServiceRemote.h b/Sources/WordPressKitObjC/include/MenusServiceRemote.h similarity index 98% rename from Sources/WordPressKit/Services/MenusServiceRemote.h rename to Sources/WordPressKitObjC/include/MenusServiceRemote.h index 1ef6b1da..f253ae98 100644 --- a/Sources/WordPressKit/Services/MenusServiceRemote.h +++ b/Sources/WordPressKitObjC/include/MenusServiceRemote.h @@ -1,5 +1,5 @@ #import -#import +#import "SiteServiceRemoteWordPressComREST.h" NS_ASSUME_NONNULL_BEGIN diff --git a/Sources/WordPressShared/NSBundle+VersionNumberHelper.h b/Sources/WordPressKitObjC/include/NSBundle+VersionNumberHelper.h similarity index 100% rename from Sources/WordPressShared/NSBundle+VersionNumberHelper.h rename to Sources/WordPressKitObjC/include/NSBundle+VersionNumberHelper.h diff --git a/Sources/WordPressKit/Utility/NSMutableDictionary+Helpers.h b/Sources/WordPressKitObjC/include/NSMutableDictionary+Helpers.h similarity index 100% rename from Sources/WordPressKit/Utility/NSMutableDictionary+Helpers.h rename to Sources/WordPressKitObjC/include/NSMutableDictionary+Helpers.h diff --git a/Sources/WordPressKit/Services/PostServiceRemote.h b/Sources/WordPressKitObjC/include/PostServiceRemote.h similarity index 98% rename from Sources/WordPressKit/Services/PostServiceRemote.h rename to Sources/WordPressKitObjC/include/PostServiceRemote.h index e72bb490..f083c324 100644 --- a/Sources/WordPressKit/Services/PostServiceRemote.h +++ b/Sources/WordPressKitObjC/include/PostServiceRemote.h @@ -1,5 +1,5 @@ #import -#import +#import "PostServiceRemoteOptions.h" @class RemotePost; @class RemotePostUpdateParameters; diff --git a/Sources/WordPressKit/Services/PostServiceRemoteOptions.h b/Sources/WordPressKitObjC/include/PostServiceRemoteOptions.h similarity index 100% rename from Sources/WordPressKit/Services/PostServiceRemoteOptions.h rename to Sources/WordPressKitObjC/include/PostServiceRemoteOptions.h diff --git a/Sources/WordPressKit/Services/PostServiceRemoteREST.h b/Sources/WordPressKitObjC/include/PostServiceRemoteREST.h similarity index 65% rename from Sources/WordPressKit/Services/PostServiceRemoteREST.h rename to Sources/WordPressKitObjC/include/PostServiceRemoteREST.h index a278ea96..d66533df 100644 --- a/Sources/WordPressKit/Services/PostServiceRemoteREST.h +++ b/Sources/WordPressKitObjC/include/PostServiceRemoteREST.h @@ -1,10 +1,9 @@ #import -#import -#import -#import +#import "PostServiceRemote.h" +#import "SiteServiceRemoteWordPressComREST.h" +#import "RemoteMedia.h" @class RemoteUser; -@class RemoteLikeUser; @interface PostServiceRemoteREST : SiteServiceRemoteWordPressComREST @@ -56,26 +55,6 @@ success:(void (^ _Nullable)(RemotePost * _Nullable))success failure:(void (^ _Nullable)(NSError * _Nullable error))failure; -/** - * @brief Requests a list of users that liked the post with the specified ID. - * - * @discussion Due to the API limitation, up to 90 users will be returned from the - * endpoint. - * - * @param postID The ID for the post. Cannot be nil. - * @param count Number of records to retrieve. Cannot be nil. If 0, will default to endpoint max. - * @param before Filter results to Likes before this date/time string. Can be nil. - * @param excludeUserIDs Array of user IDs to exclude from response. Can be nil. - * @param success The block that will be executed on success. Can be nil. - * @param failure The block that will be executed on failure. Can be nil. - */ -- (void)getLikesForPostID:(NSNumber * _Nonnull)postID - count:(NSNumber * _Nonnull)count - before:(NSString * _Nullable)before - excludeUserIDs:(NSArray * _Nullable)excludeUserIDs - success:(void (^ _Nullable)(NSArray * _Nonnull users, NSNumber * _Nonnull found))success - failure:(void (^ _Nullable)(NSError * _Nullable))failure; - /// Returns a remote post with the given data. + (nonnull RemotePost *)remotePostFromJSONDictionary:(nonnull NSDictionary *)jsonPost; diff --git a/Sources/WordPressKit/Services/PostServiceRemoteXMLRPC.h b/Sources/WordPressKitObjC/include/PostServiceRemoteXMLRPC.h similarity index 68% rename from Sources/WordPressKit/Services/PostServiceRemoteXMLRPC.h rename to Sources/WordPressKitObjC/include/PostServiceRemoteXMLRPC.h index 89786385..3b56a493 100644 --- a/Sources/WordPressKit/Services/PostServiceRemoteXMLRPC.h +++ b/Sources/WordPressKitObjC/include/PostServiceRemoteXMLRPC.h @@ -1,6 +1,6 @@ #import -#import -#import +#import "PostServiceRemote.h" +#import "ServiceRemoteWordPressXMLRPC.h" @interface PostServiceRemoteXMLRPC : ServiceRemoteWordPressXMLRPC diff --git a/Sources/WordPressKit/Services/ReaderPostServiceRemote.h b/Sources/WordPressKitObjC/include/ReaderPostServiceRemote.h similarity index 98% rename from Sources/WordPressKit/Services/ReaderPostServiceRemote.h rename to Sources/WordPressKitObjC/include/ReaderPostServiceRemote.h index 5e135baf..5986b446 100644 --- a/Sources/WordPressKit/Services/ReaderPostServiceRemote.h +++ b/Sources/WordPressKitObjC/include/ReaderPostServiceRemote.h @@ -1,5 +1,5 @@ #import -#import +#import "ServiceRemoteWordPressComREST.h" @class RemoteReaderPost; diff --git a/Sources/WordPressKit/Services/ReaderSiteServiceRemote.h b/Sources/WordPressKitObjC/include/ReaderSiteServiceRemote.h similarity index 98% rename from Sources/WordPressKit/Services/ReaderSiteServiceRemote.h rename to Sources/WordPressKitObjC/include/ReaderSiteServiceRemote.h index 94044cfe..187d0190 100644 --- a/Sources/WordPressKit/Services/ReaderSiteServiceRemote.h +++ b/Sources/WordPressKitObjC/include/ReaderSiteServiceRemote.h @@ -1,5 +1,5 @@ #import -#import +#import "ServiceRemoteWordPressComREST.h" typedef NS_ENUM(NSUInteger, ReaderSiteServiceRemoteError) { ReaderSiteServiceRemoteInvalidHost, diff --git a/Sources/WordPressKit/Services/ReaderTopicServiceRemote.h b/Sources/WordPressKitObjC/include/ReaderTopicServiceRemote.h similarity index 98% rename from Sources/WordPressKit/Services/ReaderTopicServiceRemote.h rename to Sources/WordPressKitObjC/include/ReaderTopicServiceRemote.h index 4afc7877..cff92a65 100644 --- a/Sources/WordPressKit/Services/ReaderTopicServiceRemote.h +++ b/Sources/WordPressKitObjC/include/ReaderTopicServiceRemote.h @@ -1,5 +1,5 @@ #import -#import +#import "ServiceRemoteWordPressComREST.h" extern NSString * const WordPressComReaderEndpointURL; diff --git a/Sources/WordPressKit/Models/RemoteComment.h b/Sources/WordPressKitObjC/include/RemoteComment.h similarity index 100% rename from Sources/WordPressKit/Models/RemoteComment.h rename to Sources/WordPressKitObjC/include/RemoteComment.h diff --git a/Sources/WordPressKit/Models/RemoteMedia.h b/Sources/WordPressKitObjC/include/RemoteMedia.h similarity index 100% rename from Sources/WordPressKit/Models/RemoteMedia.h rename to Sources/WordPressKitObjC/include/RemoteMedia.h diff --git a/Sources/WordPressKit/Models/RemotePost.h b/Sources/WordPressKitObjC/include/RemotePost.h similarity index 100% rename from Sources/WordPressKit/Models/RemotePost.h rename to Sources/WordPressKitObjC/include/RemotePost.h diff --git a/Sources/WordPressKit/Models/RemotePostCategory.h b/Sources/WordPressKitObjC/include/RemotePostCategory.h similarity index 100% rename from Sources/WordPressKit/Models/RemotePostCategory.h rename to Sources/WordPressKitObjC/include/RemotePostCategory.h diff --git a/Sources/WordPressKit/Models/RemotePostTag.h b/Sources/WordPressKitObjC/include/RemotePostTag.h similarity index 100% rename from Sources/WordPressKit/Models/RemotePostTag.h rename to Sources/WordPressKitObjC/include/RemotePostTag.h diff --git a/Sources/WordPressKit/Models/RemotePostType.h b/Sources/WordPressKitObjC/include/RemotePostType.h similarity index 100% rename from Sources/WordPressKit/Models/RemotePostType.h rename to Sources/WordPressKitObjC/include/RemotePostType.h diff --git a/Sources/WordPressKit/Models/RemoteReaderPost.h b/Sources/WordPressKitObjC/include/RemoteReaderPost.h similarity index 100% rename from Sources/WordPressKit/Models/RemoteReaderPost.h rename to Sources/WordPressKitObjC/include/RemoteReaderPost.h diff --git a/Sources/WordPressKit/Models/RemoteSourcePostAttribution.h b/Sources/WordPressKitObjC/include/RemoteSourcePostAttribution.h similarity index 100% rename from Sources/WordPressKit/Models/RemoteSourcePostAttribution.h rename to Sources/WordPressKitObjC/include/RemoteSourcePostAttribution.h diff --git a/Sources/WordPressKit/Models/RemoteTaxonomyPaging.h b/Sources/WordPressKitObjC/include/RemoteTaxonomyPaging.h similarity index 100% rename from Sources/WordPressKit/Models/RemoteTaxonomyPaging.h rename to Sources/WordPressKitObjC/include/RemoteTaxonomyPaging.h diff --git a/Sources/WordPressKit/Models/RemoteTheme.h b/Sources/WordPressKitObjC/include/RemoteTheme.h similarity index 100% rename from Sources/WordPressKit/Models/RemoteTheme.h rename to Sources/WordPressKitObjC/include/RemoteTheme.h diff --git a/Sources/BasicBlogAPIObjc/ServiceRemoteWordPressComREST.h b/Sources/WordPressKitObjC/include/ServiceRemoteWordPressComREST.h similarity index 73% rename from Sources/BasicBlogAPIObjc/ServiceRemoteWordPressComREST.h rename to Sources/WordPressKitObjC/include/ServiceRemoteWordPressComREST.h index 6d7ad96a..133a1e24 100644 --- a/Sources/BasicBlogAPIObjc/ServiceRemoteWordPressComREST.h +++ b/Sources/WordPressKitObjC/include/ServiceRemoteWordPressComREST.h @@ -1,8 +1,6 @@ #import -#import -#import - -@class WordPressComRestApi; +#import "WordPressComRESTAPIInterfacing.h" +#import "WordPressComRESTAPIVersion.h" NS_ASSUME_NONNULL_BEGIN @@ -12,12 +10,6 @@ NS_ASSUME_NONNULL_BEGIN */ @interface ServiceRemoteWordPressComREST : NSObject -/** - * @brief The API object to use for communications. - */ -// TODO: This needs to go before being able to put this ObjC in a package. -@property (nonatomic, strong, readonly) WordPressComRestApi *wordPressComRestApi; - /** * @brief The interface to the WordPress.com API to use for performing REST requests. * This is meant to gradually replace `wordPressComRestApi`. @@ -31,7 +23,7 @@ NS_ASSUME_NONNULL_BEGIN * * @returns The initialized object. */ -- (instancetype)initWithWordPressComRestApi:(WordPressComRestApi *)api; +- (instancetype)initWithWordPressComRestApi:(id)api; #pragma mark - Request URL construction diff --git a/Sources/WordPressKit/Services/ServiceRemoteWordPressXMLRPC.h b/Sources/WordPressKitObjC/include/ServiceRemoteWordPressXMLRPC.h similarity index 58% rename from Sources/WordPressKit/Services/ServiceRemoteWordPressXMLRPC.h rename to Sources/WordPressKitObjC/include/ServiceRemoteWordPressXMLRPC.h index 76d6a8b2..8b740c6b 100644 --- a/Sources/WordPressKit/Services/ServiceRemoteWordPressXMLRPC.h +++ b/Sources/WordPressKitObjC/include/ServiceRemoteWordPressXMLRPC.h @@ -1,14 +1,13 @@ #import - -@class WordPressOrgXMLRPCApi; +#import "WordPressOrgXMLRPCApiInterfacing.h" NS_ASSUME_NONNULL_BEGIN @interface ServiceRemoteWordPressXMLRPC : NSObject -- (id)initWithApi:(WordPressOrgXMLRPCApi *)api username:(NSString *)username password:(NSString *)password; +- (id)initWithApi:(id)api username:(NSString *)username password:(NSString *)password; -@property (nonatomic, readonly) WordPressOrgXMLRPCApi *api; +@property (nonatomic, readonly) id api; - (NSArray *)defaultXMLRPCArguments; - (NSArray *)XMLRPCArgumentsWithExtra:(_Nullable id)extra; diff --git a/Sources/WordPressKitObjC/include/SiteServiceRemoteWordPressComREST.h b/Sources/WordPressKitObjC/include/SiteServiceRemoteWordPressComREST.h new file mode 100644 index 00000000..a6bcf581 --- /dev/null +++ b/Sources/WordPressKitObjC/include/SiteServiceRemoteWordPressComREST.h @@ -0,0 +1,15 @@ +#import +#import "ServiceRemoteWordPressComREST.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface SiteServiceRemoteWordPressComREST : ServiceRemoteWordPressComREST + +@property (nonatomic, readonly) NSNumber *siteID; + +- (instancetype)initWithWordPressComRestApi:(id)api __unavailable; +- (instancetype)initWithWordPressComRestApi:(id)api siteID:(NSNumber *)siteID; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Sources/WordPressKit/Services/TaxonomyServiceRemote.h b/Sources/WordPressKitObjC/include/TaxonomyServiceRemote.h similarity index 100% rename from Sources/WordPressKit/Services/TaxonomyServiceRemote.h rename to Sources/WordPressKitObjC/include/TaxonomyServiceRemote.h diff --git a/Sources/WordPressKit/Services/TaxonomyServiceRemoteREST.h b/Sources/WordPressKitObjC/include/TaxonomyServiceRemoteREST.h similarity index 56% rename from Sources/WordPressKit/Services/TaxonomyServiceRemoteREST.h rename to Sources/WordPressKitObjC/include/TaxonomyServiceRemoteREST.h index e3c93823..62512af7 100644 --- a/Sources/WordPressKit/Services/TaxonomyServiceRemoteREST.h +++ b/Sources/WordPressKitObjC/include/TaxonomyServiceRemoteREST.h @@ -1,6 +1,6 @@ #import -#import -#import +#import "TaxonomyServiceRemote.h" +#import "SiteServiceRemoteWordPressComREST.h" @interface TaxonomyServiceRemoteREST : SiteServiceRemoteWordPressComREST diff --git a/Sources/WordPressKit/Services/TaxonomyServiceRemoteXMLRPC.h b/Sources/WordPressKitObjC/include/TaxonomyServiceRemoteXMLRPC.h similarity index 61% rename from Sources/WordPressKit/Services/TaxonomyServiceRemoteXMLRPC.h rename to Sources/WordPressKitObjC/include/TaxonomyServiceRemoteXMLRPC.h index cf7f3a77..3d234ccb 100644 --- a/Sources/WordPressKit/Services/TaxonomyServiceRemoteXMLRPC.h +++ b/Sources/WordPressKitObjC/include/TaxonomyServiceRemoteXMLRPC.h @@ -1,6 +1,6 @@ #import -#import -#import +#import "TaxonomyServiceRemote.h" +#import "ServiceRemoteWordPressXMLRPC.h" @class RemoteCategory; diff --git a/Sources/WordPressKit/Services/ThemeServiceRemote.h b/Sources/WordPressKitObjC/include/ThemeServiceRemote.h similarity index 99% rename from Sources/WordPressKit/Services/ThemeServiceRemote.h rename to Sources/WordPressKitObjC/include/ThemeServiceRemote.h index 939cdb4d..bf0a0af2 100644 --- a/Sources/WordPressKit/Services/ThemeServiceRemote.h +++ b/Sources/WordPressKitObjC/include/ThemeServiceRemote.h @@ -1,5 +1,5 @@ #import -#import +#import "ServiceRemoteWordPressComREST.h" @class Blog; @class RemoteTheme; diff --git a/Sources/WordPressShared/WPKitDateUtils.h b/Sources/WordPressKitObjC/include/WPKitDateUtils.h similarity index 100% rename from Sources/WordPressShared/WPKitDateUtils.h rename to Sources/WordPressKitObjC/include/WPKitDateUtils.h diff --git a/Sources/WordPressKit/Logging/WPKitLogging.h b/Sources/WordPressKitObjC/include/WPKitLogging.h similarity index 100% rename from Sources/WordPressKit/Logging/WPKitLogging.h rename to Sources/WordPressKitObjC/include/WPKitLogging.h diff --git a/Sources/WordPressShared/WPMapFilterReduce.h b/Sources/WordPressKitObjC/include/WPMapFilterReduce.h similarity index 100% rename from Sources/WordPressShared/WPMapFilterReduce.h rename to Sources/WordPressKitObjC/include/WPMapFilterReduce.h diff --git a/Sources/APIInterface/include/WordPressComRESTAPIInterfacing.h b/Sources/WordPressKitObjC/include/WordPressComRESTAPIInterfacing.h similarity index 92% rename from Sources/APIInterface/include/WordPressComRESTAPIInterfacing.h rename to Sources/WordPressKitObjC/include/WordPressComRESTAPIInterfacing.h index 1f652fd6..435a2d50 100644 --- a/Sources/APIInterface/include/WordPressComRESTAPIInterfacing.h +++ b/Sources/WordPressKitObjC/include/WordPressComRESTAPIInterfacing.h @@ -27,4 +27,9 @@ success:(void (^ _Nonnull)(id _Nonnull, NSHTTPURLResponse * _Nullable))success failure:(void (^ _Nonnull)(NSError * _Nonnull, NSHTTPURLResponse * _Nullable))failure; +- (NSError * _Nonnull)unknownResponseError; +- (NSInteger)uploadFailedErrorCode; +- (NSString * _Nonnull)errorCodeKey; +- (NSString * _Nonnull)errorMessageKey; + @end diff --git a/Sources/APIInterface/include/WordPressComRESTAPIVersion.h b/Sources/WordPressKitObjC/include/WordPressComRESTAPIVersion.h similarity index 100% rename from Sources/APIInterface/include/WordPressComRESTAPIVersion.h rename to Sources/WordPressKitObjC/include/WordPressComRESTAPIVersion.h diff --git a/Sources/APIInterface/include/WordPressComRESTAPIVersionedPathBuilder.h b/Sources/WordPressKitObjC/include/WordPressComRESTAPIVersionedPathBuilder.h similarity index 86% rename from Sources/APIInterface/include/WordPressComRESTAPIVersionedPathBuilder.h rename to Sources/WordPressKitObjC/include/WordPressComRESTAPIVersionedPathBuilder.h index d9f8b816..1c268db3 100644 --- a/Sources/APIInterface/include/WordPressComRESTAPIVersionedPathBuilder.h +++ b/Sources/WordPressKitObjC/include/WordPressComRESTAPIVersionedPathBuilder.h @@ -2,7 +2,7 @@ #if SWIFT_PACKAGE #import "WordPressComRESTAPIVersion.h" #else -#import +#import "WordPressComRESTAPIVersion.h" #endif @interface WordPressComRESTAPIVersionedPathBuilder: NSObject diff --git a/Sources/APIInterface/include/WordPressComRestApiErrorDomain.h b/Sources/WordPressKitObjC/include/WordPressComRestApiErrorDomain.h similarity index 100% rename from Sources/APIInterface/include/WordPressComRestApiErrorDomain.h rename to Sources/WordPressKitObjC/include/WordPressComRestApiErrorDomain.h diff --git a/Sources/WordPressKit/Services/WordPressComServiceRemote.h b/Sources/WordPressKitObjC/include/WordPressComServiceRemote.h similarity index 98% rename from Sources/WordPressKit/Services/WordPressComServiceRemote.h rename to Sources/WordPressKitObjC/include/WordPressComServiceRemote.h index d4b51c87..87aa22e5 100644 --- a/Sources/WordPressKit/Services/WordPressComServiceRemote.h +++ b/Sources/WordPressKitObjC/include/WordPressComServiceRemote.h @@ -1,5 +1,5 @@ #import -#import +#import "ServiceRemoteWordPressComREST.h" typedef NS_ENUM(NSUInteger, WordPressComServiceBlogVisibility) { WordPressComServiceBlogVisibilityPublic = 0, diff --git a/Sources/WordPressKitObjC/include/WordPressOrgXMLRPCApiInterfacing.h b/Sources/WordPressKitObjC/include/WordPressOrgXMLRPCApiInterfacing.h new file mode 100644 index 00000000..00538309 --- /dev/null +++ b/Sources/WordPressKitObjC/include/WordPressOrgXMLRPCApiInterfacing.h @@ -0,0 +1,19 @@ +@import Foundation; + +NS_ASSUME_NONNULL_BEGIN + +@protocol WordPressOrgXMLRPCApiInterfacing + +- (NSProgress *)callMethod:(NSString *)method + parameters:(NSArray * _Nullable)parameters + success:(void (^)(id responseObject, NSHTTPURLResponse * _Nullable httpResponse))success + failure:(void (^)(NSError *error, NSHTTPURLResponse * _Nullable httpResponse))failure; + +- (NSProgress *)streamCallMethod:(NSString *)method + parameters:(NSArray * _Nullable)parameters + success:(void (^)(id responseObject, NSHTTPURLResponse * _Nullable httpResponse))success + failure:(void (^)(NSError *error, NSHTTPURLResponse * _Nullable httpResponse))failure; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Sources/WordPressShared/NSString+Helpers.m b/Sources/WordPressKitObjCUtils/NSString+Helpers.m similarity index 100% rename from Sources/WordPressShared/NSString+Helpers.m rename to Sources/WordPressKitObjCUtils/NSString+Helpers.m diff --git a/Sources/WordPressKit/Utility/NSString+MD5.m b/Sources/WordPressKitObjCUtils/NSString+MD5.m similarity index 100% rename from Sources/WordPressKit/Utility/NSString+MD5.m rename to Sources/WordPressKitObjCUtils/NSString+MD5.m diff --git a/Sources/WordPressShared/NSString+XMLExtensions.m b/Sources/WordPressKitObjCUtils/NSString+XMLExtensions.m similarity index 100% rename from Sources/WordPressShared/NSString+XMLExtensions.m rename to Sources/WordPressKitObjCUtils/NSString+XMLExtensions.m diff --git a/Sources/WordPressShared/NSString+Helpers.h b/Sources/WordPressKitObjCUtils/include/NSString+Helpers.h similarity index 100% rename from Sources/WordPressShared/NSString+Helpers.h rename to Sources/WordPressKitObjCUtils/include/NSString+Helpers.h diff --git a/Sources/WordPressKit/Utility/NSString+MD5.h b/Sources/WordPressKitObjCUtils/include/NSString+MD5.h similarity index 100% rename from Sources/WordPressKit/Utility/NSString+MD5.h rename to Sources/WordPressKitObjCUtils/include/NSString+MD5.h diff --git a/Sources/WordPressShared/NSString+XMLExtensions.h b/Sources/WordPressKitObjCUtils/include/NSString+XMLExtensions.h similarity index 100% rename from Sources/WordPressShared/NSString+XMLExtensions.h rename to Sources/WordPressKitObjCUtils/include/NSString+XMLExtensions.h diff --git a/Tests/WordPressKitTests/Tests/MenusServiceRemoteTests.m b/Tests/WordPressKitTests/Tests/MenusServiceRemoteTests.m index 6df6d304..b6dd9305 100644 --- a/Tests/WordPressKitTests/Tests/MenusServiceRemoteTests.m +++ b/Tests/WordPressKitTests/Tests/MenusServiceRemoteTests.m @@ -1,7 +1,6 @@ #import #import #import "MenusServiceRemote.h" -#import "WPKit-Swift.h" @interface MenusServicRemoteTests : XCTestCase @@ -14,7 +13,7 @@ - (void)testThatCreateMenuWithNameWorks NSNumber *dotComID = @10; WordPressComRestApi *api = OCMStrictClassMock([WordPressComRestApi class]); MenusServiceRemote *service = nil; - + RemoteMenu *menu = OCMClassMock([RemoteMenu class]); OCMStub([menu menuID]).andReturn(@(1)); OCMStub([menu name]).andReturn(@"Name"); @@ -25,13 +24,13 @@ - (void)testThatCreateMenuWithNameWorks NSString *url = [service pathForEndpoint:endpoint withVersion:WordPressComRESTAPIVersion_1_1]; NSString *name = @"SomeName"; - + BOOL (^parametersCheckBlock)(id obj) = ^BOOL(NSDictionary *parameters) { - + return ([parameters isKindOfClass:[NSDictionary class]] && [[parameters objectForKey:@"name"] isEqualToString:name]); }; - + OCMStub([api post:[OCMArg isEqual:url] parameters:[OCMArg checkWithBlock:parametersCheckBlock] success:[OCMArg isNotNil] @@ -48,7 +47,7 @@ - (void)testThatUpdateMenuWorks NSNumber *dotComID = @10; WordPressComRestApi *api = OCMStrictClassMock([WordPressComRestApi class]); MenusServiceRemote *service = nil; - + RemoteMenu *menu = OCMClassMock([RemoteMenu class]); OCMStub([menu menuID]).andReturn(@(1)); OCMStub([menu name]).andReturn(@"Name"); @@ -78,7 +77,7 @@ - (void)testThatDeleteMenuWorks NSNumber *dotComID = @10; WordPressComRestApi *api = OCMStrictClassMock([WordPressComRestApi class]); MenusServiceRemote *service = nil; - + RemoteMenu *menu = OCMClassMock([RemoteMenu class]); OCMStub([menu menuID]).andReturn(@(1)); OCMStub([menu name]).andReturn(@"Name"); @@ -116,7 +115,7 @@ - (void)testThatGetMenusWorks parameters:[OCMArg isNil] success:[OCMArg isNotNil] failure:[OCMArg isNotNil]]); - + [service getMenusForSiteID:dotComID success:^(NSArray *menus, NSArray *locations) {} diff --git a/Tests/WordPressKitTests/Tests/PostServiceRemoteRESTTests.m b/Tests/WordPressKitTests/Tests/PostServiceRemoteRESTTests.m index 51edec32..3f428b21 100644 --- a/Tests/WordPressKitTests/Tests/PostServiceRemoteRESTTests.m +++ b/Tests/WordPressKitTests/Tests/PostServiceRemoteRESTTests.m @@ -3,7 +3,6 @@ #import #import "PostServiceRemoteREST.h" #import "RemotePost.h" -#import "WPKit-Swift.h" @interface PostServiceRemoteRESTTests : XCTestCase @end @@ -53,7 +52,7 @@ - (void)testThatGetPostWithIDWorks - (void)testThatGetPostWithIDThrowsExceptionWithoutPostID { PostServiceRemoteREST *service = nil; - + XCTAssertNoThrow(service = [self service]); XCTAssertThrows([service getPostWithID:nil success:^(RemotePost *post) {} @@ -77,16 +76,16 @@ - (void)testThatGetPostsOfTypeWorks withVersion:WordPressComRESTAPIVersion_1_2]; BOOL (^parametersCheckBlock)(id obj) = ^BOOL(NSDictionary *parameters) { - + return ([parameters isKindOfClass:[NSDictionary class]] && [[parameters objectForKey:@"type"] isEqualToString:postType]); }; - + OCMStub([api get:[OCMArg isEqual:url] parameters:[OCMArg checkWithBlock:parametersCheckBlock] success:[OCMArg isNotNil] failure:[OCMArg isNotNil]]); - + [service getPostsOfType:postType success:^(NSArray *remotePosts) {} @@ -110,14 +109,14 @@ - (void)testThatGetPostsOfTypeWithOptionsWorks NSString *testOptionKey = @"SomeKey"; NSString *testOptionValue = @"SomeValue"; NSDictionary *options = @{testOptionKey: testOptionValue}; - + BOOL (^parametersCheckBlock)(id obj) = ^BOOL(NSDictionary *parameters) { - + return ([parameters isKindOfClass:[NSDictionary class]] && [[parameters objectForKey:@"type"] isEqualToString:postType] && [parameters objectForKey:testOptionKey] == testOptionValue); }; - + OCMStub([api get:[OCMArg isEqual:url] parameters:[OCMArg checkWithBlock:parametersCheckBlock] success:[OCMArg isNotNil] @@ -136,7 +135,7 @@ - (void)testThatCreatePostWorks NSNumber *dotComID = @10; WordPressComRestApi *api = OCMStrictClassMock([WordPressComRestApi class]); PostServiceRemoteREST *service = nil; - + RemotePost *post = OCMClassMock([RemotePost class]); OCMStub([post title]).andReturn(@"Title"); OCMStub([post content]).andReturn(@"Content"); @@ -166,7 +165,7 @@ - (void)testThatCreatePostWorks - (void)testThatCreatePostThrowsExceptionWithoutPost { PostServiceRemoteREST *service = nil; - + XCTAssertNoThrow(service = [self service]); XCTAssertThrows([service createPost:nil success:^(RemotePost *posts) {} @@ -180,7 +179,7 @@ - (void)testThatUpdatePostWorks NSNumber *dotComID = @10; WordPressComRestApi *api = OCMStrictClassMock([WordPressComRestApi class]); PostServiceRemoteREST *service = nil; - + RemotePost *post = OCMClassMock([RemotePost class]); OCMStub([post postID]).andReturn(@1); OCMStub([post title]).andReturn(@"Title"); @@ -211,7 +210,7 @@ - (void)testThatUpdatePostWorks - (void)testThatUpdatePostThrowsExceptionWithoutPost { PostServiceRemoteREST *service = nil; - + XCTAssertNoThrow(service = [self service]); XCTAssertThrows([service updatePost:nil success:^(RemotePost *posts) {} @@ -225,7 +224,7 @@ - (void)testThatAutoSavePostWorks NSNumber *dotComID = @10; WordPressComRestApi *api = OCMStrictClassMock([WordPressComRestApi class]); PostServiceRemoteREST *service = nil; - + RemotePost *post = OCMClassMock([RemotePost class]); OCMStub([post postID]).andReturn(@1); OCMStub([post title]).andReturn(@"Title"); @@ -236,18 +235,18 @@ - (void)testThatAutoSavePostWorks OCMStub([post metadata]).andReturn(@[]); OCMStub([post isStickyPost]).andReturn(@0); OCMStub([post parentID]).andReturn(nil); - + XCTAssertNoThrow(service = [[PostServiceRemoteREST alloc] initWithWordPressComRestApi:api siteID:dotComID]); - + NSString *endpoint = [NSString stringWithFormat:@"sites/%@/posts/%@/autosave", dotComID, post.postID]; NSString *url = [service pathForEndpoint:endpoint withVersion:WordPressComRESTAPIVersion_1_1]; - + OCMStub([api post:[OCMArg isEqual:url] parameters:[OCMArg isKindOfClass:[NSDictionary class]] success:[OCMArg isNotNil] failure:[OCMArg isNotNil]]); - + [service autoSave:post success:^(RemotePost *post, NSString *previewURL) {} failure:^(NSError *error) {}]; @@ -258,9 +257,9 @@ - (void)testThatGetAutoSaveForPostWorks NSNumber *dotComID = @10; WordPressComRestApi *api = OCMStrictClassMock([WordPressComRestApi class]); PostServiceRemoteREST *service = nil; - + XCTAssertNoThrow(service = [[PostServiceRemoteREST alloc] initWithWordPressComRestApi:api siteID:dotComID]); - + RemotePost *post = OCMClassMock([RemotePost class]); OCMStub([post postID]).andReturn(@1); OCMStub([post title]).andReturn(@"Title"); @@ -271,16 +270,16 @@ - (void)testThatGetAutoSaveForPostWorks OCMStub([post metadata]).andReturn(@[]); OCMStub([post isStickyPost]).andReturn(@1); OCMStub([post parentID]).andReturn(nil); - + NSString *endpoint = [NSString stringWithFormat:@"sites/%@/posts/%@/autosave", dotComID, post.postID]; NSString *url = [service pathForEndpoint:endpoint withVersion:WordPressComRESTAPIVersion_1_1]; - + OCMStub([api get:[OCMArg isEqual:url] parameters:[OCMArg isNotNil] success:[OCMArg isNotNil] failure:[OCMArg isNotNil]]); - + [service getAutoSaveForPost:post success:^(RemotePost *post) {} failure:^(NSError *error) {}]; @@ -294,7 +293,7 @@ - (void)testThatDeletePostWorks NSNumber *dotComID = @10; WordPressComRestApi *api = OCMStrictClassMock([WordPressComRestApi class]); PostServiceRemoteREST *service = nil; - + RemotePost *post = OCMClassMock([RemotePost class]); OCMStub([post postID]).andReturn(@1); @@ -303,7 +302,7 @@ - (void)testThatDeletePostWorks NSString *endpoint = [NSString stringWithFormat:@"sites/%@/posts/%@/delete", dotComID, post.postID]; NSString *url = [service pathForEndpoint:endpoint withVersion:WordPressComRESTAPIVersion_1_1]; - + OCMStub([api post:[OCMArg isEqual:url] parameters:[OCMArg isNil] success:[OCMArg isNotNil] @@ -317,7 +316,7 @@ - (void)testThatDeletePostWorks - (void)testThatDeletePostThrowsExceptionWithoutPost { PostServiceRemoteREST *service = nil; - + XCTAssertNoThrow(service = [self service]); XCTAssertThrows([service deletePost:nil success:^() {} @@ -331,7 +330,7 @@ - (void)testThatTrashPostWorks NSNumber *dotComID = @10; WordPressComRestApi *api = OCMStrictClassMock([WordPressComRestApi class]); PostServiceRemoteREST *service = nil; - + RemotePost *post = OCMClassMock([RemotePost class]); OCMStub([post postID]).andReturn(@1); @@ -354,7 +353,7 @@ - (void)testThatTrashPostWorks - (void)testThatTashPostThrowsExceptionWithoutPost { PostServiceRemoteREST *service = nil; - + XCTAssertNoThrow(service = [self service]); XCTAssertThrows([service trashPost:nil success:^(RemotePost *posts) {} @@ -368,7 +367,7 @@ - (void)testThatRestorePostWorks NSNumber *dotComID = @10; WordPressComRestApi *api = OCMStrictClassMock([WordPressComRestApi class]); PostServiceRemoteREST *service = nil; - + RemotePost *post = OCMClassMock([RemotePost class]); OCMStub([post postID]).andReturn(@1); @@ -391,7 +390,7 @@ - (void)testThatRestorePostWorks - (void)testThatRestorePostThrowsExceptionWithoutPost { PostServiceRemoteREST *service = nil; - + XCTAssertNoThrow(service = [self service]); XCTAssertThrows([service restorePost:nil success:^(RemotePost *posts) {} diff --git a/Tests/WordPressKitTests/Tests/ReaderPostServiceRemoteTests.m b/Tests/WordPressKitTests/Tests/ReaderPostServiceRemoteTests.m index 89ada39b..85745038 100644 --- a/Tests/WordPressKitTests/Tests/ReaderPostServiceRemoteTests.m +++ b/Tests/WordPressKitTests/Tests/ReaderPostServiceRemoteTests.m @@ -2,7 +2,6 @@ #import "ReaderTopicServiceRemote.h" #import "ReaderPostServiceRemote.h" #import "RemoteReaderPost.h" -#import "WPKit-Swift.h" @interface ReaderPostServiceRemoteTests : XCTestCase diff --git a/Tests/WordPressKitTests/Tests/RemoteReaderPostTests.m b/Tests/WordPressKitTests/Tests/RemoteReaderPostTests.m index 565020a1..8a380f6d 100644 --- a/Tests/WordPressKitTests/Tests/RemoteReaderPostTests.m +++ b/Tests/WordPressKitTests/Tests/RemoteReaderPostTests.m @@ -3,7 +3,6 @@ #import "ReaderTopicServiceRemote.h" #import "ReaderPostServiceRemote.h" #import "RemoteReaderPost.h" -#import "WPKit-Swift.h" @import WordPressKit;