@@ -173,10 +173,11 @@ public class PeopleServiceRemote: ServiceRemoteWordPressComREST {
173173 } )
174174 }
175175
176- public struct SubscribersParameters {
176+ public struct SubscribersParameters : Hashable {
177177 public var sortField : SortField ?
178178 public var sortOrder : SortOrder ?
179- public var filters : [ Filter ]
179+ public var filters : Set < Filter >
180+ public var search : String ?
180181
181182 public enum SortField : String {
182183 case dateSubscribed = " date_subscribed "
@@ -191,25 +192,31 @@ public class PeopleServiceRemote: ServiceRemoteWordPressComREST {
191192 case descending = " dsc "
192193 }
193194
194- public protocol Filter : CustomStringConvertible { }
195+ public enum Filter : Hashable {
196+ case subscription( FilterSubscriptionType )
197+ case payment( FilterPaymentType )
195198
196- public enum FilterSubscriptionType : String , Filter {
199+ var rawValue : String {
200+ switch self {
201+ case . subscription( let filter) : filter. rawValue
202+ case . payment( let filter) : filter. rawValue
203+ }
204+ }
205+ }
206+
207+ public enum FilterSubscriptionType : String {
197208 case email = " email_subscriber "
198209 case reader = " reader_subscriber "
199210 case unconfirmed = " unconfirmed_subscriber "
200211 case blocked = " blocked_subscriber "
201-
202- public var description : String { rawValue }
203212 }
204213
205- public enum FilterPaymentType : String , Filter {
214+ public enum FilterPaymentType : String {
206215 case free
207216 case paid
208-
209- public var description : String { rawValue }
210217 }
211218
212- public init ( sortField: SortField ? = nil , sortOrder: SortOrder ? = nil , filters: [ Filter ] = [ ] ) {
219+ public init ( sortField: SortField ? = nil , sortOrder: SortOrder ? = nil , filters: Set < Filter > = [ ] ) {
213220 self . sortField = sortField
214221 self . sortOrder = sortOrder
215222 self . filters = filters
@@ -244,7 +251,10 @@ public class PeopleServiceRemote: ServiceRemoteWordPressComREST {
244251 query [ " sort_order " ] = sortOrder. rawValue
245252 }
246253 if !parameters. filters. isEmpty {
247- query [ " filters " ] = parameters. filters. map { $0. description }
254+ query [ " filters " ] = parameters. filters. map ( \. rawValue)
255+ }
256+ if let search = parameters. search, !search. isEmpty {
257+ query [ " search " ] = search
248258 }
249259
250260 let decoder = JSONDecoder ( )
0 commit comments