@@ -64,6 +64,35 @@ public class OrdersRemote: Remote {
6464 enqueue ( request, mapper: mapper, completion: completion)
6565 }
6666
67+ /// Retrieves all of the `Orders` available.
68+ ///
69+ /// - Parameters:
70+ /// - siteID: Site for which we'll fetch remote orders.
71+ /// - keyword: Search string that should be matched by the orders.
72+ /// - pageNumber: Number of page that should be retrieved.
73+ /// - pageSize: Number of Orders to be retrieved per page.
74+ /// - completion: Closure to be executed upon completion.
75+ ///
76+ public func searchOrders( for siteID: Int ,
77+ keyword: String ,
78+ pageNumber: Int = Defaults . pageNumber,
79+ pageSize: Int = Defaults . pageSize,
80+ completion: @escaping ( [ Order ] ? , Error ? ) -> Void )
81+ {
82+ let parameters = [
83+ ParameterKeys . keyword: keyword,
84+ ParameterKeys . page: String ( pageNumber) ,
85+ ParameterKeys . perPage: String ( pageSize) ,
86+ ParameterKeys . status: Defaults . statusAny
87+ ]
88+
89+ let path = Constants . ordersPath
90+ let request = JetpackRequest ( wooApiVersion: . mark3, method: . get, siteID: siteID, path: path, parameters: parameters)
91+ let mapper = OrderListMapper ( siteID: siteID)
92+
93+ enqueue ( request, mapper: mapper, completion: completion)
94+ }
95+
6796 /// Updates the `OrderStatus` of a given Order.
6897 ///
6998 /// - Parameters:
@@ -121,6 +150,7 @@ public extension OrdersRemote {
121150 private enum ParameterKeys {
122151 static let addedByUser : String = " added_by_user "
123152 static let customerNote : String = " customer_note "
153+ static let keyword : String = " search "
124154 static let note : String = " note "
125155 static let page : String = " page "
126156 static let perPage : String = " per_page "
0 commit comments