scheduled = $scheduled; $this->config = $config; $this->speedtestProvider = $speedtestProvider; } /** * Runs a speedtest * * @return \App\Speedtest */ public function handle() { if ($this->config['healthchecks_enabled'] === true) { $this->healthcheck('start'); } $output = $this->speedtestProvider->output(); $speedtest = $this->speedtestProvider->run($output, $this->scheduled); if ($speedtest == false) { if ($this->config['healthchecks_enabled'] === true) { $this->healthcheck('fail'); } event(new SpeedtestFailedEvent()); } else { if ($this->config['healthchecks_enabled'] === true) { $this->healthcheck('success'); } event(new SpeedtestCompleteEvent($speedtest)); } return $speedtest; } /** * Wrapper to reduce duplication of try/catch for hc * * @param String $method * @return void */ private function healthcheck(String $method) { try { $hc = new Healthchecks(SettingsHelper::get('healthchecks_uuid')->value, SettingsHelper::get('healthchecks_server_url')->value); if ($method === 'start') { $hc->start(); } if ($method === 'success') { $hc->success(); } if ($method === 'fail') { $hc->fail(); } } catch (Exception $e) { Log::error($e->getMessage()); } } }