Files
old-experiments/backend/wordpress/wp-content/plugins/woocommerce-services/classes/class-wc-rest-connect-shipping-rates-controller.php
2018-06-29 14:40:28 +02:00

46 lines
1.3 KiB
PHP
Executable File

<?php
if ( ! defined( 'ABSPATH' ) ) {
exit;
}
if ( class_exists( 'WC_REST_Connect_Shipping_Rates_Controller' ) ) {
return;
}
class WC_REST_Connect_Shipping_Rates_Controller extends WC_REST_Connect_Base_Controller {
protected $rest_base = 'connect/label/(?P<order_id>\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(),
);
}
}