Example #1
0
 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);
     }
 }