@@ -12,14 +12,31 @@ public class OrdersRemote: Remote {
1212 /// - siteID: Site for which we'll fetch remote orders.
1313 /// - completion: Closure to be executed upon completion.
1414 ///
15- public func loadAllOrders( for siteID: Int , completion: @escaping ( [ Order ] ? , Error ? ) -> Void ) {
16- let path = " orders "
17- let request = JetpackRequest ( wooApiVersion: . mark2, method: . get, siteID: siteID, path: path)
15+ public func loadAllOrders( for siteID: Int , page: Int = 1 , completion: @escaping ( [ Order ] ? , Error ? ) -> Void ) {
16+ let path = Constants . ordersPath
17+ let parameters = [ ParameterKeys . page: String ( page) ,
18+ ParameterKeys . perPage: String ( Constants . defaultPageSize) ]
19+ let request = JetpackRequest ( wooApiVersion: . mark2, method: . get, siteID: siteID, path: path, parameters: parameters)
1820 let mapper = OrderListMapper ( )
1921
2022 enqueue ( request, mapper: mapper, completion: completion)
2123 }
2224
25+ /// Retrieves a specific `Order`
26+ ///
27+ /// - Parameters:
28+ /// - siteID: Site for which we'll fetch remote orders.
29+ /// - orderID: Order for which we'll fetch remote orders.
30+ /// - completion: Closure to be executed upon completion.
31+ ///
32+ public func loadOrder( for siteID: Int , orderID: Int , completion: @escaping ( Order ? , Error ? ) -> Void ) {
33+ let path = " \( Constants . ordersPath) / \( orderID) "
34+ let request = JetpackRequest ( wooApiVersion: . mark2, method: . get, siteID: siteID, path: path, parameters: nil )
35+ let mapper = OrderMapper ( )
36+
37+ enqueue ( request, mapper: mapper, completion: completion)
38+ }
39+
2340 /// Updates the `OrderStatus` of a given Order.
2441 ///
2542 /// - Parameters:
@@ -29,11 +46,27 @@ public class OrdersRemote: Remote {
2946 /// - completion: Closure to be executed upon completion.
3047 ///
3148 public func updateOrder( from siteID: Int , orderID: Int , status: String , completion: @escaping ( Order ? , Error ? ) -> Void ) {
32- let path = " orders /" + String( orderID)
33- let parameters = [ " status " : status]
49+ let path = " \( Constants . ordersPath ) / " + String( orderID)
50+ let parameters = [ ParameterKeys . status: status]
3451 let mapper = OrderMapper ( )
3552
3653 let request = JetpackRequest ( wooApiVersion: . mark2, method: . post, siteID: siteID, path: path, parameters: parameters)
3754 enqueue ( request, mapper: mapper, completion: completion)
3855 }
3956}
57+
58+
59+ // MARK: - Constants!
60+ //
61+ private extension OrdersRemote {
62+ enum Constants {
63+ static let defaultPageSize : Int = 75
64+ static let ordersPath : String = " orders "
65+ }
66+
67+ enum ParameterKeys {
68+ static let status : String = " status "
69+ static let page : String = " page "
70+ static let perPage : String = " per_page "
71+ }
72+ }
0 commit comments