diff options
Diffstat (limited to 'vendor/stripe/stripe-php/lib/ApiResource.php')
-rw-r--r-- | vendor/stripe/stripe-php/lib/ApiResource.php | 242 |
1 files changed, 122 insertions, 120 deletions
diff --git a/vendor/stripe/stripe-php/lib/ApiResource.php b/vendor/stripe/stripe-php/lib/ApiResource.php index 521010b..2b4dc65 100644 --- a/vendor/stripe/stripe-php/lib/ApiResource.php +++ b/vendor/stripe/stripe-php/lib/ApiResource.php @@ -1,120 +1,122 @@ -<?php - -namespace Stripe; - -/** - * Class ApiResource. - */ -abstract class ApiResource extends StripeObject -{ - use ApiOperations\Request; - - /** - * @return \Stripe\Util\Set A list of fields that can be their own type of - * API resource (say a nested card under an account for example), and if - * that resource is set, it should be transmitted to the API on a create or - * update. Doing so is not the default behavior because API resources - * should normally be persisted on their own RESTful endpoints. - */ - public static function getSavedNestedResources() - { - static $savedNestedResources = null; - if (null === $savedNestedResources) { - $savedNestedResources = new Util\Set(); - } - - return $savedNestedResources; - } - - /** - * @var bool A flag that can be set a behavior that will cause this - * resource to be encoded and sent up along with an update of its parent - * resource. This is usually not desirable because resources are updated - * individually on their own endpoints, but there are certain cases, - * replacing a customer's source for example, where this is allowed. - */ - public $saveWithParent = false; - - public function __set($k, $v) - { - parent::__set($k, $v); - $v = $this->{$k}; - if ((static::getSavedNestedResources()->includes($k)) - && ($v instanceof ApiResource)) { - $v->saveWithParent = true; - } - } - - /** - * @throws Exception\ApiErrorException - * - * @return ApiResource the refreshed resource - */ - public function refresh() - { - $requestor = new ApiRequestor($this->_opts->apiKey, static::baseUrl()); - $url = $this->instanceUrl(); - - list($response, $this->_opts->apiKey) = $requestor->request( - 'get', - $url, - $this->_retrieveOptions, - $this->_opts->headers - ); - $this->setLastResponse($response); - $this->refreshFrom($response->json, $this->_opts); - - return $this; - } - - /** - * @return string the base URL for the given class - */ - public static function baseUrl() - { - return Stripe::$apiBase; - } - - /** - * @return string the endpoint URL for the given class - */ - public static function classUrl() - { - // Replace dots with slashes for namespaced resources, e.g. if the object's name is - // "foo.bar", then its URL will be "/v1/foo/bars". - $base = \str_replace('.', '/', static::OBJECT_NAME); - - return "/v1/{$base}s"; - } - - /** - * @param null|string $id the ID of the resource - * - * @throws Exception\UnexpectedValueException if $id is null - * - * @return string the instance endpoint URL for the given class - */ - public static function resourceUrl($id) - { - if (null === $id) { - $class = static::class; - $message = 'Could not determine which URL to request: ' - . "{$class} instance has invalid ID: {$id}"; - - throw new Exception\UnexpectedValueException($message); - } - $id = Util\Util::utf8($id); - $base = static::classUrl(); - $extn = \urlencode($id); - - return "{$base}/{$extn}"; - } - - /** - * @return string the full API URL for this API resource - */ - public function instanceUrl() - { - return static::resourceUrl($this['id']); - } -} +<?php
+
+namespace Stripe;
+
+/**
+ * Class ApiResource.
+ */
+abstract class ApiResource extends StripeObject
+{
+ use ApiOperations\Request;
+
+ /**
+ * @return \Stripe\Util\Set A list of fields that can be their own type of
+ * API resource (say a nested card under an account for example), and if
+ * that resource is set, it should be transmitted to the API on a create or
+ * update. Doing so is not the default behavior because API resources
+ * should normally be persisted on their own RESTful endpoints.
+ */
+ public static function getSavedNestedResources()
+ {
+ static $savedNestedResources = null;
+ if (null === $savedNestedResources) {
+ $savedNestedResources = new Util\Set();
+ }
+
+ return $savedNestedResources;
+ }
+
+ /**
+ * @var bool A flag that can be set a behavior that will cause this
+ * resource to be encoded and sent up along with an update of its parent
+ * resource. This is usually not desirable because resources are updated
+ * individually on their own endpoints, but there are certain cases,
+ * replacing a customer's source for example, where this is allowed.
+ */
+ public $saveWithParent = false;
+
+ public function __set($k, $v)
+ {
+ parent::__set($k, $v);
+ $v = $this->{$k};
+ if ((static::getSavedNestedResources()->includes($k))
+ && ($v instanceof ApiResource)) {
+ $v->saveWithParent = true;
+ }
+ }
+
+ /**
+ * @throws Exception\ApiErrorException
+ *
+ * @return ApiResource the refreshed resource
+ */
+ public function refresh()
+ {
+ $requestor = new ApiRequestor($this->_opts->apiKey, static::baseUrl());
+ $url = $this->instanceUrl();
+
+ list($response, $this->_opts->apiKey) = $requestor->request(
+ 'get',
+ $url,
+ $this->_retrieveOptions,
+ $this->_opts->headers
+ );
+ $this->setLastResponse($response);
+ $this->refreshFrom($response->json, $this->_opts);
+
+ return $this;
+ }
+
+ /**
+ * @return string the base URL for the given class
+ */
+ public static function baseUrl()
+ {
+ return Stripe::$apiBase;
+ }
+
+ /**
+ * @return string the endpoint URL for the given class
+ */
+ public static function classUrl()
+ {
+ // Replace dots with slashes for namespaced resources, e.g. if the object's name is
+ // "foo.bar", then its URL will be "/v1/foo/bars".
+
+ /** @phpstan-ignore-next-line */
+ $base = \str_replace('.', '/', static::OBJECT_NAME);
+
+ return "/v1/{$base}s";
+ }
+
+ /**
+ * @param null|string $id the ID of the resource
+ *
+ * @throws Exception\UnexpectedValueException if $id is null
+ *
+ * @return string the instance endpoint URL for the given class
+ */
+ public static function resourceUrl($id)
+ {
+ if (null === $id) {
+ $class = static::class;
+ $message = 'Could not determine which URL to request: '
+ . "{$class} instance has invalid ID: {$id}";
+
+ throw new Exception\UnexpectedValueException($message);
+ }
+ $id = Util\Util::utf8($id);
+ $base = static::classUrl();
+ $extn = \urlencode($id);
+
+ return "{$base}/{$extn}";
+ }
+
+ /**
+ * @return string the full API URL for this API resource
+ */
+ public function instanceUrl()
+ {
+ return static::resourceUrl($this['id']);
+ }
+}
|