mirror of
https://github.com/Dolibarr/dolibarr.git
synced 2026-01-06 17:13:03 +01:00
NEW Upgrade Stripe library to 6.43.1
This commit is contained in:
112
htdocs/includes/stripe/stripe-php/lib/ApiResource.php
Normal file
112
htdocs/includes/stripe/stripe-php/lib/ApiResource.php
Normal file
@@ -0,0 +1,112 @@
|
||||
<?php
|
||||
|
||||
namespace Stripe;
|
||||
|
||||
/**
|
||||
* Class ApiResource
|
||||
*
|
||||
* @package Stripe
|
||||
*/
|
||||
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 ($savedNestedResources === null) {
|
||||
$savedNestedResources = new Util\Set();
|
||||
}
|
||||
return $savedNestedResources;
|
||||
}
|
||||
|
||||
/**
|
||||
* @var boolean 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;
|
||||
}
|
||||
return $v;
|
||||
}
|
||||
|
||||
/**
|
||||
* @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";
|
||||
}
|
||||
|
||||
/**
|
||||
* @return string The instance endpoint URL for the given class.
|
||||
*/
|
||||
public static function resourceUrl($id)
|
||||
{
|
||||
if ($id === null) {
|
||||
$class = get_called_class();
|
||||
$message = "Could not determine which URL to request: "
|
||||
. "$class instance has invalid ID: $id";
|
||||
throw new Error\InvalidRequest($message, null);
|
||||
}
|
||||
$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']);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user