Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Возможность получить request/response #47

Open
EgorGruzdev opened this issue May 25, 2022 · 4 comments
Open

Возможность получить request/response #47

EgorGruzdev opened this issue May 25, 2022 · 4 comments

Comments

@EgorGruzdev
Copy link
Contributor

Прошу рассмотреть добавление еще одного параметра при создании клиента, т.е. не только $debugMode = false, но возможно и $cacheMode = true, чтоб при работе в prod режиме оставалась возможность фиксировать логи (получать их через getLastRequest()/getLastReponse(), но притом не отключать кэширование WSDL файла.

Спасибо.

@SklyarLand
Copy link
Collaborator

Добрый день. Это вопрос все еще актуален?

@EgorGruzdev
Copy link
Contributor Author

EgorGruzdev commented Mar 9, 2023

да, актуален

т.к. изменения не было внесены и при debug mode, все также выключается cache WSDL

'cache_wsdl' => $this->isDebugMode() ? WSDL_CACHE_NONE : WSDL_CACHE_BOTH,

Возможно ли это разделить на две опции, что было isWsdlCache() и isDebugMode()

Спасибо.

@SklyarLand
Copy link
Collaborator

SklyarLand commented Mar 16, 2023

Добрый день.

Какой версией коннектора вы пользуетесь?

@EgorGruzdev
Copy link
Contributor Author

EgorGruzdev commented Nov 21, 2023

Не увидел ответа, пользуемся последней версией.

Вернулся к проблеме, т.к. потребовалось понять по какой причине не отображается extra цена с типом "Rack or BAR", оказалось что он не везде доступен.

Проблема в том, что при включении debug мы получаем возможность получить request / response, но теряем возможность включить кэширование WSDL.

В итоге решено через наследование и использование своего класса.

class BronevikClent extends HotelsConnector
{
    public function __construct($endpoint, $secureEndpoint, $debugMode = false)
    {
        parent::__construct($endpoint, $secureEndpoint, $debugMode);

        $this->soapClient = $this->makeSoapClient(
            $endpoint,
            ClassMaps::CLASSMAP_FOR_BASE_ENDPOINT
        );
    }

    protected function makeSoapClient($endpoint, array $classMap): SoapClient
    {
        return new SoapClient(
            Endpoints::$wsdlUrls[$endpoint],
            [
                'location'    => $endpoint,
                'compression' => SOAP_COMPRESSION_ACCEPT | SOAP_COMPRESSION_DEFLATE,
                'cache_wsdl'  => config('app.debug') ? WSDL_CACHE_NONE : WSDL_CACHE_BOTH,
                'trace'       => $this->isDebugMode(),
                'features'    => SOAP_SINGLE_ELEMENT_ARRAYS,
                'classmap'    => $classMap,
            ]
        );
    }
}

Но у данного способа есть свои недостатки, но при нашей текущей нагрузке это не существенно.

Спасибо.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants