woocommerce-paypal-payments/modules/ppcp-api-client/src/Factory/class-authorizationfactory.php
2020-10-09 19:00:00 -03:00

47 lines
1.1 KiB
PHP

<?php
/**
* The Authorization factory.
*
* @package WooCommerce\PayPalCommerce\ApiClient\Factory
*/
declare(strict_types=1);
namespace WooCommerce\PayPalCommerce\ApiClient\Factory;
use WooCommerce\PayPalCommerce\ApiClient\Entity\Authorization;
use WooCommerce\PayPalCommerce\ApiClient\Entity\AuthorizationStatus;
use WooCommerce\PayPalCommerce\ApiClient\Exception\RuntimeException;
/**
* 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(
__( 'Does not contain an id.', 'woocommerce-paypal-payments' )
);
}
if ( ! isset( $data->status ) ) {
throw new RuntimeException(
__( 'Does not contain status.', 'woocommerce-paypal-payments' )
);
}
return new Authorization(
$data->id,
new AuthorizationStatus( $data->status )
);
}
}