diff --git a/.swiftlint.yml b/.swiftlint.yml index cac6bdf55..e288ca795 100644 --- a/.swiftlint.yml +++ b/.swiftlint.yml @@ -1,7 +1,12 @@ swiftlint_version: 0.53.0 +strict: true +included: + - native/swift excluded: # paths to ignore during linting. Takes precedence over `included`. - - .cargo # Local Cargo cache - - .build # Compiled Code - native/swift/Sources/wordpress-api-wrapper/wp_api.swift # auto-generated code - - target # Compiled Code - - Dockerfile.swift # Not a Swift file +disabled_rules: + # Don't think we should enable this rule. + # See https://github.com/realm/SwiftLint/issues/5263 for context. + - non_optional_string_data_conversion + # Allow using short names (i.e. T, U, ID) for generic types. + - type_name diff --git a/native/swift/Sources/wordpress-api/Endpoints/Plugins.swift b/native/swift/Sources/wordpress-api/Endpoints/Plugins.swift index bc5c4f2ac..acfb6dd0e 100644 --- a/native/swift/Sources/wordpress-api/Endpoints/Plugins.swift +++ b/native/swift/Sources/wordpress-api/Endpoints/Plugins.swift @@ -15,23 +15,42 @@ extension SparsePlugin: Contextual { public typealias EditContext = PluginWithEditContext public typealias EmbedContext = PluginWithEmbedContext - public static func retrieveRequest(id: PluginSlug, using requestBuilder: any WpRequestBuilderProtocol, context: WpContext) -> WpNetworkRequest { + public static func retrieveRequest( + id: PluginSlug, + using requestBuilder: any WpRequestBuilderProtocol, + context: WpContext + ) -> WpNetworkRequest { requestBuilder.plugins().retrieve(context: context, plugin: id) } - public static func listRequest(params: PluginListParams?, using requestBuilder: any WpRequestBuilderProtocol, context: WpContext) -> WpNetworkRequest { + public static func listRequest( + params: PluginListParams?, + using requestBuilder: any WpRequestBuilderProtocol, + context: WpContext + ) -> WpNetworkRequest { requestBuilder.plugins().list(context: context, params: params) } - public static func updateRequest(id: PluginSlug, params: PluginUpdateParams, using requestBuilder: any WpRequestBuilderProtocol) -> WpNetworkRequest { + public static func updateRequest( + id: PluginSlug, + params: PluginUpdateParams, + using requestBuilder: any WpRequestBuilderProtocol + ) -> WpNetworkRequest { requestBuilder.plugins().update(plugin: id, params: params) } - public static func createRequest(params: PluginCreateParams, using requestBuilder: any WpRequestBuilderProtocol) -> WpNetworkRequest { + public static func createRequest( + params: PluginCreateParams, + using requestBuilder: any WpRequestBuilderProtocol + ) -> WpNetworkRequest { requestBuilder.plugins().create(params: params) } - public static func deleteRequest(id: PluginSlug, params: Void, using requestBuilder: any WpRequestBuilderProtocol) -> WpNetworkRequest { + public static func deleteRequest( + id: PluginSlug, + params: Void, + using requestBuilder: any WpRequestBuilderProtocol + ) -> WpNetworkRequest { requestBuilder.plugins().delete(plugin: id) } @@ -100,4 +119,3 @@ extension ContextualNamespace where T == SparsePlugin { return try parseFilterRetrievePluginResponse(response: response) } } - diff --git a/native/swift/Sources/wordpress-api/Endpoints/Users.swift b/native/swift/Sources/wordpress-api/Endpoints/Users.swift index 52782ef87..c5e9771cc 100644 --- a/native/swift/Sources/wordpress-api/Endpoints/Users.swift +++ b/native/swift/Sources/wordpress-api/Endpoints/Users.swift @@ -9,23 +9,42 @@ extension SparseUser: Contextual { public typealias EditContext = UserWithEditContext public typealias EmbedContext = UserWithEmbedContext - public static func retrieveRequest(id: UserId, using requestBuilder: WpRequestBuilderProtocol, context: WpContext) -> WpNetworkRequest { + public static func retrieveRequest( + id: UserId, + using requestBuilder: WpRequestBuilderProtocol, + context: WpContext + ) -> WpNetworkRequest { requestBuilder.users().retrieve(userId: id, context: context) } - public static func listRequest(params: UserListParams?, using requestBuilder: WpRequestBuilderProtocol, context: WpContext) -> WpNetworkRequest { + public static func listRequest( + params: UserListParams?, + using requestBuilder: WpRequestBuilderProtocol, + context: WpContext + ) -> WpNetworkRequest { requestBuilder.users().list(context: context, params: params) } - public static func updateRequest(id: UserId, params: UserUpdateParams, using requestBuilder: any WpRequestBuilderProtocol) -> WpNetworkRequest { + public static func updateRequest( + id: UserId, + params: UserUpdateParams, + using requestBuilder: any WpRequestBuilderProtocol + ) -> WpNetworkRequest { requestBuilder.users().update(userId: id, params: params) } - public static func createRequest(params: UserCreateParams, using requestBuilder: any WpRequestBuilderProtocol) -> WpNetworkRequest { + public static func createRequest( + params: UserCreateParams, + using requestBuilder: any WpRequestBuilderProtocol + ) -> WpNetworkRequest { requestBuilder.users().create(params: params) } - public static func deleteRequest(id: ID, params: UserDeleteParams, using requestBuilder: WpRequestBuilderProtocol) -> WpNetworkRequest { + public static func deleteRequest( + id: ID, + params: UserDeleteParams, + using requestBuilder: WpRequestBuilderProtocol + ) -> WpNetworkRequest { requestBuilder.users().delete(userId: id, params: params) } diff --git a/native/swift/Sources/wordpress-api/Namespace.swift b/native/swift/Sources/wordpress-api/Namespace.swift index 97f8d0608..dcd637014 100644 --- a/native/swift/Sources/wordpress-api/Namespace.swift +++ b/native/swift/Sources/wordpress-api/Namespace.swift @@ -26,11 +26,30 @@ public protocol Contextual { associatedtype CreateParams associatedtype DeleteParams - static func retrieveRequest(id: ID, using requestBuilder: WpRequestBuilderProtocol, context: WpContext) -> WpNetworkRequest - static func listRequest(params: ListParams, using requestBuilder: WpRequestBuilderProtocol, context: WpContext) -> WpNetworkRequest - static func updateRequest(id: ID, params: UpdateParams, using requestBuilder: WpRequestBuilderProtocol) -> WpNetworkRequest - static func createRequest(params: CreateParams, using requestBuilder: WpRequestBuilderProtocol) -> WpNetworkRequest - static func deleteRequest(id: ID, params: DeleteParams, using requestBuilder: WpRequestBuilderProtocol) -> WpNetworkRequest + static func retrieveRequest( + id: ID, + using requestBuilder: WpRequestBuilderProtocol, + context: WpContext + ) -> WpNetworkRequest + static func listRequest( + params: ListParams, + using requestBuilder: WpRequestBuilderProtocol, + context: WpContext + ) -> WpNetworkRequest + static func updateRequest( + id: ID, + params: UpdateParams, + using requestBuilder: WpRequestBuilderProtocol + ) -> WpNetworkRequest + static func createRequest( + params: CreateParams, + using requestBuilder: WpRequestBuilderProtocol + ) -> WpNetworkRequest + static func deleteRequest( + id: ID, + params: DeleteParams, + using requestBuilder: WpRequestBuilderProtocol + ) -> WpNetworkRequest static func parseResponse(_ response: WpNetworkResponse) throws -> ViewContext static func parseResponse(_ response: WpNetworkResponse) throws -> EditContext @@ -121,7 +140,7 @@ extension ContextualNamespace { return try parseResponse(response) } - public func list() async throws -> [R] where T.ListParams == Optional { + public func list() async throws -> [R] where T.ListParams == U? { try await list(with: nil) } } diff --git a/native/swift/Tests/wordpress-api/WordPressAPITests.swift b/native/swift/Tests/wordpress-api/WordPressAPITests.swift index 4b45641bd..7c921bf54 100644 --- a/native/swift/Tests/wordpress-api/WordPressAPITests.swift +++ b/native/swift/Tests/wordpress-api/WordPressAPITests.swift @@ -9,7 +9,7 @@ final class WordPressAPITests: XCTestCase { func testExample() throws { let request = try WpRequestBuilder(siteUrl: "https://wordpress.org", authentication: .none) - .users().list(context: .view, params: nil) + .users().list(context: .view, params: nil) XCTAssertTrue(try XCTUnwrap(request).url.hasPrefix("https://wordpress.org/wp-json/wp/v2/users")) } }