\d+)/rates'; /** * * @param WP_REST_Request $request - See WC_Connect_API_Client::get_label_rates() * @return array|WP_Error */ public function post( $request ) { $payload = $request->get_json_params(); $order_id = $request[ 'order_id' ]; // This is the earliest point in the printing label flow where we are sure that // the merchant wants to ship from this exact address (normalized or otherwise) $this->settings_store->update_origin_address( $payload[ 'origin' ] ); $this->settings_store->update_destination_address( $order_id, $payload[ 'destination' ] ); $response = $this->api_client->get_label_rates( $payload ); if ( is_wp_error( $response ) ) { $error = new WP_Error( $response->get_error_code(), $response->get_error_message(), array( 'message' => $response->get_error_message() ) ); $this->logger->log( $error, __CLASS__ ); return $error; } return array( 'success' => true, 'rates' => property_exists( $response, 'rates' ) ? $response->rates : new stdClass(), ); } }