88 SoapConfig $apiConfig,
97 $this->_apiConfig = $apiConfig;
99 $this->_dataObjectConverter = $dataObjectConverter;
101 $this->_dataObjectProcessor = $dataObjectProcessor;
117 $requestedServices = $this->_request->getRequestedServices();
118 $serviceMethodInfo = $this->_apiConfig->getServiceMethodInfo($operation, $requestedServices);
119 $serviceClass = $serviceMethodInfo[ServiceMetadata::KEY_CLASS];
120 $serviceMethod = $serviceMethodInfo[ServiceMetadata::KEY_METHOD];
123 if ($serviceMethodInfo[ServiceMetadata::KEY_IS_SECURE] && !$this->_request->isSecure()) {
124 throw new WebapiException(
__(
"Operation allowed only in HTTPS"));
127 if (!$this->authorization->isAllowed($serviceMethodInfo[ServiceMetadata::KEY_ACL_RESOURCES])) {
130 "The consumer isn't authorized to access %resources.",
131 [
'resources' => implode(
', ', $serviceMethodInfo[ServiceMetadata::KEY_ACL_RESOURCES])]
135 $service = $this->_objectManager->get($serviceClass);
137 $outputData = call_user_func_array([
$service, $serviceMethod], $inputData);
138 return $this->_prepareResponseData($outputData, $serviceClass, $serviceMethod);
154 return $this->serviceInputProcessor->process($serviceClass, $serviceMethod,
$arguments);
166 protected function _prepareResponseData(
$data, $serviceClassName, $serviceMethodName)
169 $dataType = $this->methodsMapProcessor->getMethodReturnType($serviceClassName, $serviceMethodName);
171 if (is_object(
$data)) {
172 $result = $this->_dataObjectConverter
173 ->convertKeysToCamelCase($this->_dataObjectProcessor->buildOutputDataArray(
$data, $dataType));
175 $dataType = substr($dataType, 0, -2);
177 if (
$value instanceof $dataType
179 ||
$value instanceof ExtensibleDataInterface
180 ||
$value instanceof MetadataObjectInterface
182 $result[] = $this->_dataObjectConverter
183 ->convertKeysToCamelCase($this->_dataObjectProcessor->buildOutputDataArray(
$value, $dataType));
191 throw new \InvalidArgumentException(
"Service returned result in invalid format.");
193 return [self::RESULT_NODE_NAME =>
$result];
elseif(isset( $params[ 'redirect_parent']))
__call($operation, $arguments)
__construct(SoapRequest $request, \Magento\Framework\ObjectManagerInterface $objectManager, SoapConfig $apiConfig, Authorization $authorization, SimpleDataObjectConverter $dataObjectConverter, ServiceInputProcessor $serviceInputProcessor, DataObjectProcessor $dataObjectProcessor, MethodsMap $methodsMapProcessor)
_prepareRequestData($serviceClass, $serviceMethod, $arguments)