diff --git a/apps/lookup_server_connector/lib/BackgroundJobs/RetryJob.php b/apps/lookup_server_connector/lib/BackgroundJobs/RetryJob.php index faeef05da1..3bc955f2fc 100644 --- a/apps/lookup_server_connector/lib/BackgroundJobs/RetryJob.php +++ b/apps/lookup_server_connector/lib/BackgroundJobs/RetryJob.php @@ -19,13 +19,14 @@ * */ - namespace OCA\LookupServerConnector\BackgroundJobs; use OC\BackgroundJob\Job; +use OC\BackgroundJob\JobList; use OCP\BackgroundJob\IJobList; use OCP\Http\Client\IClientService; +use OCP\IConfig; use OCP\ILogger; class RetryJob extends Job { @@ -34,16 +35,24 @@ class RetryJob extends Job { /** @var IJobList */ private $jobList; /** @var string */ - private $lookupServer = 'https://lookup.nextcloud.com/users'; + private $lookupServer; + /** @var int how much time should be between two tries (10 minutes) */ + private $interval = 600; /** * @param IClientService $clientService * @param IJobList $jobList + * @param IConfig $config */ public function __construct(IClientService $clientService, - IJobList $jobList) { + IJobList $jobList, + IConfig $config) { $this->clientService = $clientService; $this->jobList = $jobList; + + $this->lookupServer = $config->getSystemValue('lookup_server', 'https://lookup.nextcloud.com'); + $this->lookupServer = rtrim($this->lookupServer, '/'); + $this->lookupServer .= '/users'; } /** @@ -53,12 +62,10 @@ class RetryJob extends Job { * @param ILogger $logger */ public function execute($jobList, ILogger $logger = null) { - if ($this->shouldRun($this->argument)) { parent::execute($jobList, $logger); $jobList->remove($this, $this->argument); } - } protected function run($argument) { @@ -81,9 +88,20 @@ class RetryJob extends Job { [ 'dataArray' => $argument['dataArray'], 'retryNo' => $argument['retryNo'] + 1, + 'lastRun' => time(), ] ); } } + + /** + * test if it is time for the next run + * + * @param array $argument + * @return bool + */ + protected function shouldRun($argument) { + return !isset($argument['lastRun']) || ((time() - $argument['lastRun']) > $this->interval); + } }