public function loadData($pid, $dirName) { $uri = "/gdc/md/{$pid}/etl/pull2"; $result = $this->client->post($uri, ['pullIntegration' => $dirName]); if (isset($result['pull2Task']['links']['poll'])) { $try = 1; do { sleep(10 * $try); $taskResponse = $this->client->get($result['pull2Task']['links']['poll']); if (!isset($taskResponse['wTaskStatus']['status'])) { throw Exception::unexpectedResponseError('ETL task could not be checked', 'GET', $result['pull2Task']['links']['poll'], $taskResponse); } $try++; } while ($taskResponse['wTaskStatus']['status'] == 'RUNNING'); if ($taskResponse['wTaskStatus']['status'] == 'ERROR') { $errors = []; if (isset($taskResponse['messages'])) { foreach ($taskResponse['messages'] as $m) { if (isset($m['error'])) { $errors[] = Exception::parseMessage($m['error']); } } } if (isset($taskResponse['wTaskStatus']['messages'])) { foreach ($taskResponse['wTaskStatus']['messages'] as $m) { if (isset($m['error'])) { $errors[] = Exception::parseMessage($m['error']); } } } throw new Exception($errors); } return isset($taskResponse['messages']) ? $taskResponse['messages'] : []; } else { throw Exception::unexpectedResponseError('ETL task failed', 'POST', $uri, $result); } }