Laravel и Twitch API

У меня небольшая проблема при обновлении моих потоков в моем проекте laravel, я пытаюсь определить, является ли стример активным или нет, и скрыть, если их нет в моем приложении, однако, когда есть стример, который не жив, это дает мне ..

Trying to get property of non-object

Мой постбэк cronjob выглядит так:

$twitch_api = json_decode(file_get_contents('https://api.twitch.tv/kraken/streams/'.$stream->channel));
if($twitch_api->stream == null) $live = 0;
else $live = 1;

$update = Streams::where('id', $stream->id)->firstOrFail();
$update->thumb = $twitch_api->stream->preview->large;
$update->game = $twitch_api->stream->channel->game;
$update->status = $live;
$update->save();

Twitch API в автономном режиме отображает это …

{"stream":null,"_links":{"self":"https://api.twitch.tv/kraken/streams/chan","channel":"https://api.twitch.tv/kraken/channels/chan"}}

Любая идея, почему это дает мне не объект?

Спасибо!

0

Решение

Когда поток отключен и "stream":null следующие строки вашего кода не будут работать:

$update->thumb = $twitch_api->stream->preview->large;
$update->game = $twitch_api->stream->channel->game;

Вы должны заключить это в if или же case заявление, чтобы он не запускался, когда поток находится в автономном режиме. Вы уже настраиваете $live в 1 если он живой, вам просто нужно использовать это позже в контрольном утверждении.

что-то вроде этого:

$twitch_api = json_decode(file_get_contents('https://api.twitch.tv/kraken/streams/'.$stream->channel));
if($twitch_api->stream == null) $live = 0;
else $live = 1;
$update = Streams::where('id', $stream->id)->firstOrFail();
switch($live){
case 0:
// do stuff when the stream is offline
break;
case 1:
// do stuff when the stream is online
$update->thumb = $twitch_api->stream->preview->large;
$update->game = $twitch_api->stream->channel->game;
break;
}
$update->status = $live;
$update->save();
0

Другие решения

Других решений пока нет …