params = $params; $this->httpClient = $httpClient; $this->requestStack = $requestStack; $this->respondService = $respondService; } public function findByElementTypes(array $elementTypes): array { $elements = []; foreach ($elementTypes as $elementType) { $result = $this->httpClient->data( 'GET', $this->params->get('domain_pim') . '/element_type/' . $elementType . '/elements.json', [ 'headers' => [ 'x-auth-token' => $this->requestStack->getCurrentRequest()->headers->get('x-auth-token'), ], ] ); if (array_key_exists('data', $result) && (is_array($result['data']) || $result['data'])) { $elements = array_merge($elements, $result['data']); } elseif ($result) { $elements = array_merge($elements, $result); } } return $elements; } /** * @param int $idElement * * @return array */ public function getElementType(int $idElement): array { $result = $this->httpClient->data( 'GET', $this->params->get('domain_pim') . '/element/' . $idElement . '/element_type.json', [ 'headers' => [ 'x-auth-token' => $this->requestStack->getCurrentRequest()->headers->get('x-auth-token'), ], ] ); if (array_key_exists('data', $result) && (is_array($result['data']) || $result['data'])) { return $result['data']; } else { return $result; } } /** * @param array $idElements * * @return array [array elements] */ public function readMultiple(array $idElements): array { $result = $this->httpClient->data( 'POST', $this->params->get('domain_pim') . '/element/read/multiple.json', [ 'headers' => [ 'x-auth-token' => $this->requestStack->getCurrentRequest()->headers->get('x-auth-token'), ], 'json' => [ 'ids' => $idElements, ], ] ); if (array_key_exists('data', $result) && (is_array($result['data']) || $result['data'])) { return $result['data']; } else { return $result; } } public function getJsonExport(array $idElements, array $fields): string { $result = $this->httpClient->data( 'POST', $this->params->get('domain_pim') . '/element/exportjson.json', [ 'headers' => [ 'x-auth-token' => $this->requestStack->getCurrentRequest()->headers->get('x-auth-token'), ], 'json' => [ 'ids' => $idElements, 'fields' => $fields, ], ] ); if (array_key_exists('data', $result) && (is_array($result['data']) || $result['data'])) { return $result['data']; } else { return $result; } } /** * @param int $versionIdPim * @param int $elementTypeId * * @return array [array element for this version] */ public function findElementsByVersion(int $versionIdPim, int $elementTypeId): array { $response = $this->httpClient->data( 'POST', $this->params->get('domain_pim') . '/version/' . $versionIdPim . '/elements.json', [ 'headers' => [ 'x-auth-token' => $this->requestStack->getCurrentRequest()->headers->get('x-auth-token'), ], 'json' => [ 'id' => $elementTypeId, 'tags' => true ], ] ); return $this->respondService->checkProviderResponse($response); } /** * @param int $elementId [element id] * * @return object|null [object element or null] */ public function findById(int $elementId): ?array { $result = $this->httpClient->data( 'GET', $this->params->get('domain_pim') . '/element/' . $elementId . '.json', [ 'headers' => [ 'x-auth-token' => $this->requestStack->getCurrentRequest()->headers->get('x-auth-token'), ], ] ); if (isset($result['data']) && $result['data']) { $result = $result['data']; } return $result; } }