/** * Execute the console command. * * @return mixed */ public function fire() { if (!DebugHelpers::shouldSiteBeLive()) { $this->info('Not running because site should not be live at the moment.'); return; } $this->info('Sending ping command to any dvr bridge service servers that are being used.'); // go though all dvrLiveStreamUris, get their dvr bridge service url, and send ping to it $dvrLiveStreamUriModels = DvrLiveStreamUri::with("liveStreamUri", "mediaItemLiveStream")->get(); foreach ($dvrLiveStreamUriModels as $a) { $liveStreamUriModel = $a->liveStreamUri; $mediaItemLiveStream = $a->mediaItemLiveStream; $url = $liveStreamUriModel->uri; $this->info("Sending ping command to dvr bridge service at url \"" . $url . "\"."); $responseInfo = MediaItemLiveStream::makeDvrBridgeServiceRequest($url, "PING", intval($a->id)); if ($responseInfo["statusCode"] !== 200) { // error occurred. Remove dvrLiveStreamUri as something's wrong with it. $a->delete(); $this->info("Error occurred/response returned from ping command to dvr bridge service at url \"" . $url . "\". Removing dvr link."); } else { $this->info("Sent ping command to dvr bridge service at url \"" . $url . "\"."); } } $this->info("Finished."); }
private function startDvrs() { $liveStreamModel = $this->liveStream; if (is_null($liveStreamModel)) { // could be null if just external stream on external site return; } // there shouldn't already be one in progress but clear anyway to be sure $this->dvrLiveStreamUris()->delete(); foreach ($liveStreamModel->liveStreamUris as $uriModel) { $enabled = (bool) $uriModel->enabled; $uriForDvrBridgeService = (bool) $uriModel->dvr_bridge_service_uri; if ($enabled && $uriForDvrBridgeService) { $dvrLiveStreamUriModel = new DvrLiveStreamUri(); $dvrLiveStreamUriModel->liveStreamUri()->associate($uriModel); $dvrLiveStreamUriModel->mediaItemLiveStream()->associate($this); $this->dvrLiveStreamUris()->save($dvrLiveStreamUriModel); $responseInfo = self::makeDvrBridgeServiceRequest($uriModel->uri, "START", $dvrLiveStreamUriModel->id); if ($responseInfo["statusCode"] === 200 && !is_null($responseInfo['data']) && !is_null($responseInfo['data']['url'])) { // success. dvr has started // add url to dvr_live_stream_uris entry $dvrLiveStreamUriModel->uri = $responseInfo['data']['url']; $dvrLiveStreamUriModel->save(); } else { $dvrLiveStreamUriModel->delete(); } } } // there may be new domains now from the urls retrieved from the dvr bridge services Cache::forget("liveStreamDomains"); }