35 private $entityObject;
42 private $operationDefinition;
70 private static $curlMethodMapping = [
84 public function __construct($operation, $entityObject, $storeCode =
null)
86 $this->operation = $operation;
87 $this->entityObject = $entityObject;
88 $this->storeCode = $storeCode;
92 $this->entityObject->getType()
94 $this->isJson =
false;
108 $successRegex =
null;
111 if ((
null !== $dependentEntities) && is_array($dependentEntities)) {
112 $entities = array_merge([$this->entityObject], $dependentEntities);
114 $entities = [$this->entityObject];
116 $apiUrl = $this->resolveUrlReference($this->operationDefinition->getApiUrl(), $entities);
117 $headers = $this->operationDefinition->getHeaders();
118 $authorization = $this->operationDefinition->getAuth();
119 $contentType = $this->operationDefinition->getContentType();
120 $successRegex = $this->operationDefinition->getSuccessRegex();
121 $returnRegex = $this->operationDefinition->getReturnRegex();
124 $this->requestData = $operationDataResolver->resolveOperationDataArray(
126 $this->operationDefinition->getOperationMetadata(),
127 $this->operationDefinition->getOperation(),
131 if (($contentType ===
'application/json') && ($authorization ===
'adminOauth')) {
132 $this->isJson =
true;
134 }
elseif ($authorization ===
'adminFormKey') {
135 $executor =
new AdminExecutor($this->operationDefinition->removeUrlBackend());
136 }
elseif ($authorization ===
'customerFormKey') {
138 $this->requestData[
'customer_email'],
139 $this->requestData[
'customer_password']
141 }
elseif ($authorization ===
'anonymous') {
142 $this->isJson =
true;
149 "Invalid content type and/or auth type. content type = %s, auth type = %s\n",
159 self::$curlMethodMapping[$this->operation],
163 $response = $executor->read($successRegex, $returnRegex);
176 return $this->requestData;
186 return $this->isJson;
196 private function resolveUrlReference($urlIn, $entityObjects)
200 preg_match_all(
"/[{](.+?)[}]/", $urlIn, $matchedParams);
202 if (!empty($matchedParams)) {
203 foreach ($matchedParams[0] as $paramKey => $paramValue) {
204 foreach ($entityObjects as $entityObject) {
205 $param = $entityObject->getDataByName(
206 $matchedParams[1][$paramKey],
209 if (
null !== $param) {
210 $urlOut = str_replace($paramValue, $param, $urlOut);
elseif(isset( $params[ 'redirect_parent']))
executeRequest($dependentEntities)
__construct($operation, $entityObject, $storeCode=null)