vendor/stripe/stripe-php/lib/ApiOperations/Request.php line 106

Open in your IDE?
  1. <?php
  2. namespace Stripe\ApiOperations;
  3. /**
  4.  * Trait for resources that need to make API requests.
  5.  *
  6.  * This trait should only be applied to classes that derive from StripeObject.
  7.  */
  8. trait Request
  9. {
  10.     /**
  11.      * @param null|array|mixed $params The list of parameters to validate
  12.      *
  13.      * @throws \Stripe\Exception\InvalidArgumentException if $params exists and is not an array
  14.      */
  15.     protected static function _validateParams($params null)
  16.     {
  17.         if ($params && !\is_array($params)) {
  18.             $message 'You must pass an array as the first argument to Stripe API '
  19.                 'method calls.  (HINT: an example call to create a charge '
  20.                 "would be: \"Stripe\\Charge::create(['amount' => 100, "
  21.                 "'currency' => 'usd', 'source' => 'tok_1234'])\")";
  22.             throw new \Stripe\Exception\InvalidArgumentException($message);
  23.         }
  24.     }
  25.     /**
  26.      * @param 'delete'|'get'|'post' $method HTTP method ('get', 'post', etc.)
  27.      * @param string $url URL for the request
  28.      * @param array $params list of parameters for the request
  29.      * @param null|array|string $options
  30.      * @param string[] $usage names of tracked behaviors associated with this request
  31.      * @param 'v1'|'v2' $apiMode
  32.      *
  33.      * @throws \Stripe\Exception\ApiErrorException if the request fails
  34.      *
  35.      * @return array tuple containing (the JSON response, $options)
  36.      */
  37.     protected function _request($method$url$params = [], $options null$usage = [], $apiMode 'v1')
  38.     {
  39.         $opts $this->_opts->merge($options);
  40.         list($resp$options) = static::_staticRequest($method$url$params$opts$usage$apiMode);
  41.         $this->setLastResponse($resp);
  42.         return [$resp->json$options];
  43.     }
  44.     /**
  45.      * @param string $url URL for the request
  46.      * @param class-string< \Stripe\SearchResult|\Stripe\Collection > $resultClass indicating what type of paginated result is returned
  47.      * @param null|array $params list of parameters for the request
  48.      * @param null|array|string $options
  49.      * @param string[] $usage names of tracked behaviors associated with this request
  50.      *
  51.      * @throws \Stripe\Exception\ApiErrorException if the request fails
  52.      *
  53.      * @return \Stripe\Collection|\Stripe\SearchResult
  54.      */
  55.     protected static function _requestPage($url$resultClass$params null$options null$usage = [])
  56.     {
  57.         self::_validateParams($params);
  58.         list($response$opts) = static::_staticRequest('get'$url$params$options$usage);
  59.         $obj = \Stripe\Util\Util::convertToStripeObject($response->json$opts);
  60.         if (!($obj instanceof $resultClass)) {
  61.             throw new \Stripe\Exception\UnexpectedValueException(
  62.                 'Expected type ' $resultClass ', got "' . \get_class($obj) . '" instead.'
  63.             );
  64.         }
  65.         $obj->setLastResponse($response);
  66.         $obj->setFilters($params);
  67.         return $obj;
  68.     }
  69.     /**
  70.      * @param 'delete'|'get'|'post' $method HTTP method ('get', 'post', etc.)
  71.      * @param string $url URL for the request
  72.      * @param callable $readBodyChunk function that will receive chunks of data from a successful request body
  73.      * @param array $params list of parameters for the request
  74.      * @param null|array|string $options
  75.      * @param string[] $usage names of tracked behaviors associated with this request
  76.      *
  77.      * @throws \Stripe\Exception\ApiErrorException if the request fails
  78.      */
  79.     protected function _requestStream($method$url$readBodyChunk$params = [], $options null$usage = [])
  80.     {
  81.         $opts $this->_opts->merge($options);
  82.         static::_staticStreamingRequest($method$url$readBodyChunk$params$opts$usage);
  83.     }
  84.     /**
  85.      * @param 'delete'|'get'|'post' $method HTTP method ('get', 'post', etc.)
  86.      * @param string $url URL for the request
  87.      * @param array $params list of parameters for the request
  88.      * @param null|array|string $options
  89.      * @param string[] $usage names of tracked behaviors associated with this request
  90.      * @param 'v1'|'v2' $apiMode
  91.      *
  92.      * @throws \Stripe\Exception\ApiErrorException if the request fails
  93.      *
  94.      * @return array tuple containing (the JSON response, $options)
  95.      */
  96.     protected static function _staticRequest($method$url$params$options$usage = [], $apiMode 'v1')
  97.     {
  98.         $opts = \Stripe\Util\RequestOptions::parse($options);
  99.         $baseUrl = isset($opts->apiBase) ? $opts->apiBase : static::baseUrl();
  100.         $requestor = new \Stripe\ApiRequestor($opts->apiKey$baseUrl);
  101.         list($response$opts->apiKey) = $requestor->request($method$url$params$opts->headers$apiMode$usage);
  102.         $opts->discardNonPersistentHeaders();
  103.         return [$response$opts];
  104.     }
  105.     /**
  106.      * @param 'delete'|'get'|'post' $method HTTP method ('get', 'post', etc.)
  107.      * @param string $url URL for the request
  108.      * @param callable $readBodyChunk function that will receive chunks of data from a successful request body
  109.      * @param array $params list of parameters for the request
  110.      * @param null|array|string $options
  111.      * @param string[] $usage names of tracked behaviors associated with this request
  112.      *
  113.      * @throws \Stripe\Exception\ApiErrorException if the request fails
  114.      */
  115.     protected static function _staticStreamingRequest($method$url$readBodyChunk$params$options$usage = [])
  116.     {
  117.         $opts = \Stripe\Util\RequestOptions::parse($options);
  118.         $baseUrl = isset($opts->apiBase) ? $opts->apiBase : static::baseUrl();
  119.         $requestor = new \Stripe\ApiRequestor($opts->apiKey$baseUrl);
  120.         $requestor->requestStream($method$url$readBodyChunk$params$opts->headers);
  121.     }
  122. }