/home/techb158/immovalet.ca/report/Client/stripe-php/lib
NameSizeModeActions
ApiOperations/-0777rm
Checkout/-0777rm
Error/-0777rm
HttpClient/-0777rm
Issuing/-0777rm
Radar/-0777rm
Reporting/-0777rm
Sigma/-0777rm
Terminal/-0777rm
Util/-0777rm
Account.php108200666editdlrm
AccountLink.php3230666editdlrm
AlipayAccount.php23470666editdlrm
ApiRequestor.php167740666editdlrm
ApiResource.php34060666editdlrm
ApiResponse.php5810666editdlrm
ApplePayDomain.php5780666editdlrm
ApplicationFee.php29320666editdlrm
ApplicationFeeRefund.php13860666editdlrm
Balance.php5350666editdlrm
BalanceTransaction.php9320666editdlrm
BankAccount.php32020666editdlrm
BitcoinReceiver.php13910666editdlrm
BitcoinTransaction.php1950666editdlrm
Card.php44690666editdlrm
Charge.php80280666editdlrm
Collection.php30670666editdlrm
CountrySpec.php5860666editdlrm
Coupon.php7770666editdlrm
Customer.php61180666editdlrm
Discount.php3410666editdlrm
Dispute.php27760666editdlrm
EphemeralKey.php9350666editdlrm
Event.php99320666editdlrm
ExchangeRate.php2400666editdlrm
File.php14230666editdlrm
FileLink.php5520666editdlrm
FileUpload.php1600666editdlrm
Invoice.php57670666editdlrm
InvoiceItem.php8790666editdlrm
InvoiceLineItem.php6730666editdlrm
IssuerFraudRecord.php4610666editdlrm
LoginLink.php2540666editdlrm
OAuth.php32930666editdlrm
Order.php17110666editdlrm
OrderItem.php3770666editdlrm
OrderReturn.php4980666editdlrm
PaymentIntent.php27370666editdlrm
PaymentMethod.php15360666editdlrm
Payout.php31660666editdlrm
Person.php26500666editdlrm
Plan.php9110666editdlrm
Product.php11650666editdlrm
Recipient.php11100666editdlrm
RecipientTransfer.php9580666editdlrm
Refund.php18750666editdlrm
RequestTelemetry.php5860666editdlrm
Review.php17010666editdlrm
SingletonApiResource.php9750666editdlrm
SKU.php7270666editdlrm
Source.php46100666editdlrm
SourceTransaction.php4380666editdlrm
Stripe.php70180666editdlrm
StripeObject.php182800666editdlrm
Subscription.php27060666editdlrm
SubscriptionItem.php11300666editdlrm
SubscriptionSchedule.php34220666editdlrm
SubscriptionScheduleRevision.php22770666editdlrm
ThreeDSecure.php3540666editdlrm
Token.php8030666editdlrm
Topup.php16180666editdlrm
Transfer.php38260666editdlrm
TransferReversal.php15150666editdlrm
UsageRecord.php12880666editdlrm
UsageRecordSummary.php4050666editdlrm
Webhook.php15340666editdlrm
WebhookEndpoint.php5790666editdlrm
WebhookSignature.php43690666editdlrm
Edit: /home/techb158/immovalet.ca/report/Client/stripe-php/lib/ApiRequestor.php (16774B)
_apiKey = $apiKey; if (!$apiBase) { $apiBase = Stripe::$apiBase; } $this->_apiBase = $apiBase; } /** * Creates a telemetry json blob for use in 'X-Stripe-Client-Telemetry' headers * @static * * @param RequestTelemetry $requestTelemetry * @return string */ private static function _telemetryJson($requestTelemetry) { $payload = array( 'last_request_metrics' => array( 'request_id' => $requestTelemetry->requestId, 'request_duration_ms' => $requestTelemetry->requestDuration, )); $result = json_encode($payload); if ($result != false) { return $result; } else { Stripe::getLogger()->error("Serializing telemetry payload failed!"); return "{}"; } } /** * @static * * @param ApiResource|bool|array|mixed $d * * @return ApiResource|array|string|mixed */ private static function _encodeObjects($d) { if ($d instanceof ApiResource) { return Util\Util::utf8($d->id); } elseif ($d === true) { return 'true'; } elseif ($d === false) { return 'false'; } elseif (is_array($d)) { $res = []; foreach ($d as $k => $v) { $res[$k] = self::_encodeObjects($v); } return $res; } else { return Util\Util::utf8($d); } } /** * @param string $method * @param string $url * @param array|null $params * @param array|null $headers * * @return array An array whose first element is an API response and second * element is the API key used to make the request. * @throws Error\Api * @throws Error\Authentication * @throws Error\Card * @throws Error\InvalidRequest * @throws Error\OAuth\InvalidClient * @throws Error\OAuth\InvalidGrant * @throws Error\OAuth\InvalidRequest * @throws Error\OAuth\InvalidScope * @throws Error\OAuth\UnsupportedGrantType * @throws Error\OAuth\UnsupportedResponseType * @throws Error\Permission * @throws Error\RateLimit * @throws Error\Idempotency * @throws Error\ApiConnection */ public function request($method, $url, $params = null, $headers = null) { $params = $params ?: []; $headers = $headers ?: []; list($rbody, $rcode, $rheaders, $myApiKey) = $this->_requestRaw($method, $url, $params, $headers); $json = $this->_interpretResponse($rbody, $rcode, $rheaders); $resp = new ApiResponse($rbody, $rcode, $rheaders, $json); return [$resp, $myApiKey]; } /** * @param string $rbody A JSON string. * @param int $rcode * @param array $rheaders * @param array $resp * * @throws Error\InvalidRequest if the error is caused by the user. * @throws Error\Authentication if the error is caused by a lack of * permissions. * @throws Error\Permission if the error is caused by insufficient * permissions. * @throws Error\Card if the error is the error code is 402 (payment * required) * @throws Error\InvalidRequest if the error is caused by the user. * @throws Error\Idempotency if the error is caused by an idempotency key. * @throws Error\OAuth\InvalidClient * @throws Error\OAuth\InvalidGrant * @throws Error\OAuth\InvalidRequest * @throws Error\OAuth\InvalidScope * @throws Error\OAuth\UnsupportedGrantType * @throws Error\OAuth\UnsupportedResponseType * @throws Error\Permission if the error is caused by insufficient * permissions. * @throws Error\RateLimit if the error is caused by too many requests * hitting the API. * @throws Error\Api otherwise. */ public function handleErrorResponse($rbody, $rcode, $rheaders, $resp) { if (!is_array($resp) || !isset($resp['error'])) { $msg = "Invalid response object from API: $rbody " . "(HTTP response code was $rcode)"; throw new Error\Api($msg, $rcode, $rbody, $resp, $rheaders); } $errorData = $resp['error']; $error = null; if (is_string($errorData)) { $error = self::_specificOAuthError($rbody, $rcode, $rheaders, $resp, $errorData); } if (!$error) { $error = self::_specificAPIError($rbody, $rcode, $rheaders, $resp, $errorData); } throw $error; } /** * @static * * @param string $rbody * @param int $rcode * @param array $rheaders * @param array $resp * @param array $errorData * * @return Error\RateLimit|Error\Idempotency|Error\InvalidRequest|Error\Authentication|Error\Card|Error\Permission|Error\Api */ private static function _specificAPIError($rbody, $rcode, $rheaders, $resp, $errorData) { $msg = isset($errorData['message']) ? $errorData['message'] : null; $param = isset($errorData['param']) ? $errorData['param'] : null; $code = isset($errorData['code']) ? $errorData['code'] : null; $type = isset($errorData['type']) ? $errorData['type'] : null; switch ($rcode) { case 400: // 'rate_limit' code is deprecated, but left here for backwards compatibility // for API versions earlier than 2015-09-08 if ($code == 'rate_limit') { return new Error\RateLimit($msg, $param, $rcode, $rbody, $resp, $rheaders); } if ($type == 'idempotency_error') { return new Error\Idempotency($msg, $rcode, $rbody, $resp, $rheaders); } // intentional fall-through case 404: return new Error\InvalidRequest($msg, $param, $rcode, $rbody, $resp, $rheaders); case 401: return new Error\Authentication($msg, $rcode, $rbody, $resp, $rheaders); case 402: return new Error\Card($msg, $param, $code, $rcode, $rbody, $resp, $rheaders); case 403: return new Error\Permission($msg, $rcode, $rbody, $resp, $rheaders); case 429: return new Error\RateLimit($msg, $param, $rcode, $rbody, $resp, $rheaders); default: return new Error\Api($msg, $rcode, $rbody, $resp, $rheaders); } } /** * @static * * @param string|bool $rbody * @param int $rcode * @param array $rheaders * @param array $resp * @param string $errorCode * * @return null|Error\OAuth\InvalidClient|Error\OAuth\InvalidGrant|Error\OAuth\InvalidRequest|Error\OAuth\InvalidScope|Error\OAuth\UnsupportedGrantType|Error\OAuth\UnsupportedResponseType */ private static function _specificOAuthError($rbody, $rcode, $rheaders, $resp, $errorCode) { $description = isset($resp['error_description']) ? $resp['error_description'] : $errorCode; switch ($errorCode) { case 'invalid_client': return new Error\OAuth\InvalidClient($errorCode, $description, $rcode, $rbody, $resp, $rheaders); case 'invalid_grant': return new Error\OAuth\InvalidGrant($errorCode, $description, $rcode, $rbody, $resp, $rheaders); case 'invalid_request': return new Error\OAuth\InvalidRequest($errorCode, $description, $rcode, $rbody, $resp, $rheaders); case 'invalid_scope': return new Error\OAuth\InvalidScope($errorCode, $description, $rcode, $rbody, $resp, $rheaders); case 'unsupported_grant_type': return new Error\OAuth\UnsupportedGrantType($errorCode, $description, $rcode, $rbody, $resp, $rheaders); case 'unsupported_response_type': return new Error\OAuth\UnsupportedResponseType($errorCode, $description, $rcode, $rbody, $resp, $rheaders); } return null; } /** * @static * * @param null|array $appInfo * * @return null|string */ private static function _formatAppInfo($appInfo) { if ($appInfo !== null) { $string = $appInfo['name']; if ($appInfo['version'] !== null) { $string .= '/' . $appInfo['version']; } if ($appInfo['url'] !== null) { $string .= ' (' . $appInfo['url'] . ')'; } return $string; } else { return null; } } /** * @static * * @param string $apiKey * @param null $clientInfo * * @return array */ private static function _defaultHeaders($apiKey, $clientInfo = null) { $uaString = 'Stripe/v1 PhpBindings/' . Stripe::VERSION; $langVersion = phpversion(); $uname = php_uname(); $appInfo = Stripe::getAppInfo(); $ua = [ 'bindings_version' => Stripe::VERSION, 'lang' => 'php', 'lang_version' => $langVersion, 'publisher' => 'stripe', 'uname' => $uname, ]; if ($clientInfo) { $ua = array_merge($clientInfo, $ua); } if ($appInfo !== null) { $uaString .= ' ' . self::_formatAppInfo($appInfo); $ua['application'] = $appInfo; } $defaultHeaders = [ 'X-Stripe-Client-User-Agent' => json_encode($ua), 'User-Agent' => $uaString, 'Authorization' => 'Bearer ' . $apiKey, ]; return $defaultHeaders; } /** * @param string $method * @param string $url * @param array $params * @param array $headers * * @return array * @throws Error\Api * @throws Error\ApiConnection * @throws Error\Authentication */ private function _requestRaw($method, $url, $params, $headers) { $myApiKey = $this->_apiKey; if (!$myApiKey) { $myApiKey = Stripe::$apiKey; } if (!$myApiKey) { $msg = 'No API key provided. (HINT: set your API key using ' . '"Stripe::setApiKey()". You can generate API keys from ' . 'the Stripe web interface. See https://stripe.com/api for ' . 'details, or email support@stripe.com if you have any questions.'; throw new Error\Authentication($msg); } // Clients can supply arbitrary additional keys to be included in the // X-Stripe-Client-User-Agent header via the optional getUserAgentInfo() // method $clientUAInfo = null; if (method_exists($this->httpClient(), 'getUserAgentInfo')) { $clientUAInfo = $this->httpClient()->getUserAgentInfo(); } $absUrl = $this->_apiBase.$url; $params = self::_encodeObjects($params); $defaultHeaders = $this->_defaultHeaders($myApiKey, $clientUAInfo); if (Stripe::$apiVersion) { $defaultHeaders['Stripe-Version'] = Stripe::$apiVersion; } if (Stripe::$accountId) { $defaultHeaders['Stripe-Account'] = Stripe::$accountId; } if (Stripe::$enableTelemetry && self::$requestTelemetry != null) { $defaultHeaders["X-Stripe-Client-Telemetry"] = self::_telemetryJson(self::$requestTelemetry); } $hasFile = false; $hasCurlFile = class_exists('\CURLFile', false); foreach ($params as $k => $v) { if (is_resource($v)) { $hasFile = true; $params[$k] = self::_processResourceParam($v, $hasCurlFile); } elseif ($hasCurlFile && $v instanceof \CURLFile) { $hasFile = true; } } if ($hasFile) { $defaultHeaders['Content-Type'] = 'multipart/form-data'; } else { $defaultHeaders['Content-Type'] = 'application/x-www-form-urlencoded'; } $combinedHeaders = array_merge($defaultHeaders, $headers); $rawHeaders = []; foreach ($combinedHeaders as $header => $value) { $rawHeaders[] = $header . ': ' . $value; } $requestStartMs = Util\Util::currentTimeMillis(); list($rbody, $rcode, $rheaders) = $this->httpClient()->request( $method, $absUrl, $rawHeaders, $params, $hasFile ); if (array_key_exists('request-id', $rheaders)) { self::$requestTelemetry = new RequestTelemetry( $rheaders['request-id'], Util\Util::currentTimeMillis() - $requestStartMs ); } return [$rbody, $rcode, $rheaders, $myApiKey]; } /** * @param resource $resource * @param bool $hasCurlFile * * @return \CURLFile|string * @throws Error\Api */ private function _processResourceParam($resource, $hasCurlFile) { if (get_resource_type($resource) !== 'stream') { throw new Error\Api( 'Attempted to upload a resource that is not a stream' ); } $metaData = stream_get_meta_data($resource); if ($metaData['wrapper_type'] !== 'plainfile') { throw new Error\Api( 'Only plainfile resource streams are supported' ); } if ($hasCurlFile) { // We don't have the filename or mimetype, but the API doesn't care return new \CURLFile($metaData['uri']); } else { return '@'.$metaData['uri']; } } /** * @param string $rbody * @param int $rcode * @param array $rheaders * * @return mixed * @throws Error\Api * @throws Error\Authentication * @throws Error\Card * @throws Error\InvalidRequest * @throws Error\OAuth\InvalidClient * @throws Error\OAuth\InvalidGrant * @throws Error\OAuth\InvalidRequest * @throws Error\OAuth\InvalidScope * @throws Error\OAuth\UnsupportedGrantType * @throws Error\OAuth\UnsupportedResponseType * @throws Error\Permission * @throws Error\RateLimit * @throws Error\Idempotency */ private function _interpretResponse($rbody, $rcode, $rheaders) { $resp = json_decode($rbody, true); $jsonError = json_last_error(); if ($resp === null && $jsonError !== JSON_ERROR_NONE) { $msg = "Invalid response body from API: $rbody " . "(HTTP response code was $rcode, json_last_error() was $jsonError)"; throw new Error\Api($msg, $rcode, $rbody); } if ($rcode < 200 || $rcode >= 300) { $this->handleErrorResponse($rbody, $rcode, $rheaders, $resp); } return $resp; } /** * @static * * @param HttpClient\ClientInterface $client */ public static function setHttpClient($client) { self::$_httpClient = $client; } /** * @static * * Resets any stateful telemetry data */ public static function resetTelemetry() { self::$requestTelemetry = null; } /** * @return HttpClient\ClientInterface */ private function httpClient() { if (!self::$_httpClient) { self::$_httpClient = HttpClient\CurlClient::instance(); } return self::$_httpClient; } }