Skip to content
This repository was archived by the owner on Sep 15, 2025. It is now read-only.
Merged
4 changes: 2 additions & 2 deletions Package.swift
Original file line number Diff line number Diff line change
Expand Up @@ -11,8 +11,8 @@ let package = Package(
targets: [
.binaryTarget(
name: "WordPressKit",
url: "https://github.com/user-attachments/files/19949939/WordPressKit.zip",
checksum: "ba06ff0716595023dd6c98b6a5bc74d4abb35bfb668e24026ffd041460f59137"
url: "https://github.com/user-attachments/files/20175119/WordPressKit.zip",
checksum: "13aa0e5952616a2f01a0f0db370ee7925d58253c2aab6e216671e8a013ab471b"
),
]
)
23 changes: 0 additions & 23 deletions Sources/WordPressKit/Models/RemoteSubscriber.swift

This file was deleted.

85 changes: 0 additions & 85 deletions Sources/WordPressKit/Services/PeopleServiceRemote.swift
Original file line number Diff line number Diff line change
Expand Up @@ -173,91 +173,6 @@ public class PeopleServiceRemote: ServiceRemoteWordPressComREST {
})
}

public struct SubscribersParameters {
public var sortField: SortField?
public var sortOrder: SortOrder?
public var filters: [Filter]

public enum SortField: String {
case dateSubscribed = "date_subscribed"
case email = "email"
case name = "name"
case plan = "plan"
case subscriptionStatus = "subscription_status"
}

public enum SortOrder: String {
case ascending = "asc"
case descending = "dsc"
}

public protocol Filter: CustomStringConvertible {}

public enum FilterSubscriptionType: String, Filter {
case email = "email_subscriber"
case reader = "reader_subscriber"
case unconfirmed = "unconfirmed_subscriber"
case blocked = "blocked_subscriber"

public var description: String { rawValue }
}

public enum FilterPaymentType: String, Filter {
case free
case paid

public var description: String { rawValue }
}

public init(sortField: SortField? = nil, sortOrder: SortOrder? = nil, filters: [Filter] = []) {
self.sortField = sortField
self.sortOrder = sortOrder
self.filters = filters
}
}

public struct SubscribersResponse: Decodable {
public var total: Int
public var pages: Int
public var page: Int
public var subscribers: [RemoteSubscriber]
}

public func getSubscribers(
siteID: Int,
page: Int? = nil,
perPage: Int? = 25,
parameters: SubscribersParameters = .init()
) async throws -> SubscribersResponse {
let url = self.path(forEndpoint: "sites/\(siteID)/subscribers", withVersion: ._2_0)
var query: [String: Any] = [:]
if let page {
query["page"] = page
}
if let perPage {
query["per_page"] = perPage
}
if let sortField = parameters.sortField {
query["sort"] = sortField.rawValue
}
if let sortOrder = parameters.sortOrder {
query["sort_order"] = sortOrder.rawValue
}
if !parameters.filters.isEmpty {
query["filters"] = parameters.filters.map { $0.description }
}

let decoder = JSONDecoder()
decoder.dateDecodingStrategy = JSONDecoder.DateDecodingStrategy.supportMultipleDateFormats

return try await wordPressComRestApi.perform(
.get,
URLString: url,
jsonDecoder: decoder,
type: SubscribersResponse.self
).get().body
}

/// Updates a specified User's Role
///
/// - Parameters:
Expand Down
Loading