2020-09-01 09:00:45 +03:00
|
|
|
<?php
|
|
|
|
/**
|
|
|
|
* The Authorization factory.
|
|
|
|
*
|
2020-09-11 14:11:10 +03:00
|
|
|
* @package WooCommerce\PayPalCommerce\ApiClient\Factory
|
2020-09-01 09:00:45 +03:00
|
|
|
*/
|
|
|
|
|
|
|
|
declare(strict_types=1);
|
|
|
|
|
2020-09-11 14:11:10 +03:00
|
|
|
namespace WooCommerce\PayPalCommerce\ApiClient\Factory;
|
2020-09-01 09:00:45 +03:00
|
|
|
|
2020-09-11 14:11:10 +03:00
|
|
|
use WooCommerce\PayPalCommerce\ApiClient\Entity\Authorization;
|
|
|
|
use WooCommerce\PayPalCommerce\ApiClient\Entity\AuthorizationStatus;
|
|
|
|
use WooCommerce\PayPalCommerce\ApiClient\Exception\RuntimeException;
|
2020-09-01 09:00:45 +03:00
|
|
|
|
|
|
|
/**
|
|
|
|
* Class AuthorizationFactory
|
|
|
|
*/
|
|
|
|
class AuthorizationFactory {
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Returns an Authorization based off a PayPal response.
|
|
|
|
*
|
|
|
|
* @param \stdClass $data The JSON object.
|
|
|
|
*
|
|
|
|
* @return Authorization
|
|
|
|
* @throws RuntimeException When JSON object is malformed.
|
|
|
|
*/
|
|
|
|
public function from_paypal_response( \stdClass $data ): Authorization {
|
|
|
|
if ( ! isset( $data->id ) ) {
|
|
|
|
throw new RuntimeException(
|
2020-10-08 20:03:07 -03:00
|
|
|
__( 'Does not contain an id.', 'woocommerce-paypal-payments' )
|
2020-09-01 09:00:45 +03:00
|
|
|
);
|
|
|
|
}
|
|
|
|
|
|
|
|
if ( ! isset( $data->status ) ) {
|
|
|
|
throw new RuntimeException(
|
2020-10-08 20:03:07 -03:00
|
|
|
__( 'Does not contain status.', 'woocommerce-paypal-payments' )
|
2020-09-01 09:00:45 +03:00
|
|
|
);
|
|
|
|
}
|
|
|
|
|
|
|
|
return new Authorization(
|
|
|
|
$data->id,
|
|
|
|
new AuthorizationStatus( $data->status )
|
|
|
|
);
|
|
|
|
}
|
|
|
|
}
|