/**
* @param AbstractJob $job
*
* @throws ResultException
*/
protected function doJob(AbstractJob $job)
{
/** @var $job Job */
$resultData = null;
try {
$curl = new CurlWrapper();
$curl->request($job->getUrl(), $job->getMethod(), $job->getRequestParams());
$response['content'] = $curl->getResponse();
$response['info'] = $curl->getTransferInfo();
} catch (CurlWrapperCurlException $a) {
$job->addDebug(['CurlWrapperCurlException' => $a->getMessage()]);
throw new ResultException(ResultException::ERROR_CURL);
} catch (CurlWrapperException $a) {
$job->addDebug(['CurlWrapperCurlException' => $a->getMessage()]);
throw new ResultException(ResultException::ERROR_CURL);
} catch (\Exception $a) {
$job->addDebug(['CurlWrapperCurlException' => $a->getMessage()]);
throw new ResultException(ResultException::ERROR_CURL);
}
/**
* saving data
*/
if ($job->getSaveContent()) {
$resultData['content'] = $response['content'];
}
if ($job->getSaveInfo()) {
$resultData['info'] = $response['info'];
}
/**
* analise response
*/
if ($job->getExpectCode() && $job->getExpectCode() != $response['info']['http_code']) {
throw new ResultException(ResultException::RETRY_EXPECTED_HTTP_CODE, $resultData);
} elseif ($job->getExpectContent() && !$this->isContain($job->getExpectContent(), $response['content'])) {
throw new ResultException(ResultException::RETRY_EXPECTED_CONTENT, $resultData);
}
/**
* success result
*/
throw new ResultException(ResultException::R_SUCCESS, $resultData);
}