diff --git a/lib/PiTube/Controller/Stream.pm b/lib/PiTube/Controller/Stream.pm index 5417171f58e67ba5c88167be471b2ab5f3df79f3..aabb5b05352b23d5691b56c3ee9446ee6ccd9a25 100644 --- a/lib/PiTube/Controller/Stream.pm +++ b/lib/PiTube/Controller/Stream.pm @@ -24,22 +24,22 @@ sub list { STREAM: while ( my $stream = $streams->next()) { - my $rights = $c->session->{user}{acl}{ $stream->key }; - next STREAM if ! $rights; - push @streams, { + my $rights = $c->session->{user}{acl}{ $stream->key } || next STREAM; + + my %stream = ( + $stream->get_columns(), is_live => $stream->is_live, - key => $stream->key, - name => $stream->name, - publisher => $stream->is_live ? $stream->publish_user_name : '', - is_writeable => $c->is('publisher') - && $stream->is_writeable( $rights ), - is_recordable => $c->is('publisher') - && $stream->is_recordable( $c->session->{user}{username} ), - }; + is_writeable => $stream->is_writeable( $rights ), + is_recordable => $stream->is_recordable( $c->session->{user}{username} ), + ); + + delete $stream{publish_user_name} if ! $stream->is_live; + + push @streams, \%stream; } - $c->stash->{streams} = \@streams; + $c->render( json => \@streams ); } @@ -61,16 +61,54 @@ sub player { return; } - $c->stash->{stream} = $stream; + $c->stash->{stream} = { + $stream->get_columns, + is_live => $stream->is_live, + }; if ( ! ( $c->session->{user}{acl}{ $stream->key } & 4 ) ) { # TODO:constant $c->render('stream/403'); return; } + $c->render(); } +sub info { + my $c = shift; + + # vzdy aktualizovat + $c->session->{user}{acl} = $c->schema->resultset('ACL')->user_acl( + $c->session->{user} + ); + + # stream + my $stream = $c->schema->resultset('Stream_view')->find({ + id => $c->stash->{id} + }); + + if ( ! $stream ) { + $c->render('stream/404'); + return; + } + + my $rights = $c->session->{user}{acl}{ $stream->key }; + + if ( ! $rights ) { + $c->render('stream/403'); + return; + } + + $c->stash->{stream} = { + $stream->get_columns(), + is_live => $stream->is_live, + is_writeable => $stream->is_writeable( $rights ), + is_recordable => $stream->is_recordable( $c->session->{user}{username} ), + }; + + $c->render(); +} 1;