Вход Регистрация
Файл: monst/Xsolla/Xsolla/SDK/Webhook/WebhookResponse.php
Строк: 101
<?php

namespace XsollaSDKWebhook;

use 
SymfonyComponentHttpFoundationResponse;
use 
XsollaSDKAPIXsollaClient;
use 
XsollaSDKExceptionWebhookXsollaWebhookException;
use 
XsollaSDKVersion;

class 
WebhookResponse
{
    
/**
     * @var int
     */
    
protected $httpStatusCode;

    
/**
     * @var string
     */
    
protected $body;

    
/**
     * @var Response
     */
    
protected $symfonyResponse;

    
/**
     * @param Exception $e
     *
     * @return WebhookResponse
     */
    
public static function fromException(Exception $e)
    {
        if (
$e instanceof XsollaWebhookException) {
            return static::
fromErrorCode($e->getXsollaErrorCode(), $e->getMessage(), $e->getHttpStatusCode());
        } else {
            return static::
fromErrorCode('FATAL_ERROR'$e->getMessage());
        }
    }

    
/**
     * @param string $xsollaErrorCode
     * @param string $message
     * @param int    $httpStatus
     *
     * @return WebhookResponse
     */
    
public static function fromErrorCode($xsollaErrorCode$message ''$httpStatus 500)
    {
        
$body = array(
            
'error' => array(
                
'code' => $xsollaErrorCode,
                
'message' => $message,
            ),
        );
        
$encodedBody XsollaClient::jsonEncode($body);

        return new static(
$httpStatus$encodedBody);
    }

    
/**
     * @param int    $httpStatusCode
     * @param string $body
     */
    
public function __construct($httpStatusCode 204$body null)
    {
        
$this->symfonyResponse = new Response($body$httpStatusCode);
        
$this->symfonyResponse->headers->set('x-xsolla-sdk'Version::getVersion());
        if (
$body) {
            
$contentType 'application/json';
        } else {
            
$contentType 'text/plain';
        }
        
$this->symfonyResponse->headers->set('content-type'$contentType);
    }

    
/**
     * @return Response
     */
    
public function getSymfonyResponse()
    {
        return 
$this->symfonyResponse;
    }

    protected function 
validateStringParameter($name$value)
    {
        if (!
is_string($value)) {
            throw new 
XsollaWebhookException(sprintf(
                
'%s should be non-empty string. %s given',
                
$name,
                
is_object($value) ? get_class($value) : gettype($value)
            ));
        }
        if (
'' === $value) {
            throw new 
XsollaWebhookException($name.' should be non-empty string. Empty string given');
        }
    }
}
Онлайн: 1
Реклама