File Coverage

blib/lib/SignalWire/Agents/REST/Namespaces/Video.pm
Criterion Covered Total %
statement 40 89 44.9
branch 0 18 0.0
condition n/a
subroutine 18 38 47.3
pod 0 20 0.0
total 58 165 35.1


line stmt bran cond sub pod time code
1             package SignalWire::Agents::REST::Namespaces::Video;
2 4     4   26 use strict;
  4         24  
  4         151  
3 4     4   21 use warnings;
  4         9  
  4         181  
4 4     4   37 use Moo;
  4         30  
  4         84  
5              
6             # --- VideoRooms ---
7             package SignalWire::Agents::REST::Namespaces::Video::Rooms;
8 4     4   1705 use Moo;
  4         8  
  4         16  
9             extends 'SignalWire::Agents::REST::Namespaces::CrudResource';
10             has '+_update_method' => ( default => sub { 'PUT' } );
11              
12             sub list_streams {
13 0     0 0 0 my ($self, $room_id, %params) = @_;
14 0 0       0 my $p = %params ? \%params : undef;
15 0         0 return $self->_http->get($self->_path($room_id, 'streams'), params => $p);
16             }
17              
18             sub create_stream {
19 0     0 0 0 my ($self, $room_id, %kwargs) = @_;
20 0         0 return $self->_http->post($self->_path($room_id, 'streams'), body => \%kwargs);
21             }
22              
23             # --- VideoRoomTokens ---
24             package SignalWire::Agents::REST::Namespaces::Video::RoomTokens;
25 4     4   2394 use Moo;
  4         11  
  4         16  
26             extends 'SignalWire::Agents::REST::Namespaces::Base';
27              
28             sub create {
29 0     0 0 0 my ($self, %kwargs) = @_;
30 0         0 return $self->_http->post($self->_base_path, body => \%kwargs);
31             }
32              
33             # --- VideoRoomSessions ---
34             package SignalWire::Agents::REST::Namespaces::Video::RoomSessions;
35 4     4   2034 use Moo;
  4         9  
  4         19  
36             extends 'SignalWire::Agents::REST::Namespaces::Base';
37              
38             sub list {
39 0     0 0 0 my ($self, %params) = @_;
40 0 0       0 my $p = %params ? \%params : undef;
41 0         0 return $self->_http->get($self->_base_path, params => $p);
42             }
43              
44             sub get {
45 0     0 0 0 my ($self, $session_id) = @_;
46 0         0 return $self->_http->get($self->_path($session_id));
47             }
48              
49             sub list_events {
50 0     0 0 0 my ($self, $session_id, %params) = @_;
51 0 0       0 my $p = %params ? \%params : undef;
52 0         0 return $self->_http->get($self->_path($session_id, 'events'), params => $p);
53             }
54              
55             sub list_members {
56 0     0 0 0 my ($self, $session_id, %params) = @_;
57 0 0       0 my $p = %params ? \%params : undef;
58 0         0 return $self->_http->get($self->_path($session_id, 'members'), params => $p);
59             }
60              
61             sub list_recordings {
62 0     0 0 0 my ($self, $session_id, %params) = @_;
63 0 0       0 my $p = %params ? \%params : undef;
64 0         0 return $self->_http->get($self->_path($session_id, 'recordings'), params => $p);
65             }
66              
67             # --- VideoRoomRecordings ---
68             package SignalWire::Agents::REST::Namespaces::Video::RoomRecordings;
69 4     4   3008 use Moo;
  4         8  
  4         19  
70             extends 'SignalWire::Agents::REST::Namespaces::Base';
71              
72             sub list {
73 0     0 0 0 my ($self, %params) = @_;
74 0 0       0 my $p = %params ? \%params : undef;
75 0         0 return $self->_http->get($self->_base_path, params => $p);
76             }
77              
78             sub get {
79 0     0 0 0 my ($self, $recording_id) = @_;
80 0         0 return $self->_http->get($self->_path($recording_id));
81             }
82              
83             sub delete_recording {
84 0     0 0 0 my ($self, $recording_id) = @_;
85 0         0 return $self->_http->delete_request($self->_path($recording_id));
86             }
87              
88             sub list_events {
89 0     0 0 0 my ($self, $recording_id, %params) = @_;
90 0 0       0 my $p = %params ? \%params : undef;
91 0         0 return $self->_http->get($self->_path($recording_id, 'events'), params => $p);
92             }
93              
94             # --- VideoConferences ---
95             package SignalWire::Agents::REST::Namespaces::Video::Conferences;
96 4     4   2618 use Moo;
  4         12  
  4         18  
97             extends 'SignalWire::Agents::REST::Namespaces::CrudResource';
98             has '+_update_method' => ( default => sub { 'PUT' } );
99              
100             sub list_conference_tokens {
101 0     0 0 0 my ($self, $conference_id, %params) = @_;
102 0 0       0 my $p = %params ? \%params : undef;
103 0         0 return $self->_http->get($self->_path($conference_id, 'conference_tokens'), params => $p);
104             }
105              
106             sub list_streams {
107 0     0 0 0 my ($self, $conference_id, %params) = @_;
108 0 0       0 my $p = %params ? \%params : undef;
109 0         0 return $self->_http->get($self->_path($conference_id, 'streams'), params => $p);
110             }
111              
112             sub create_stream {
113 0     0 0 0 my ($self, $conference_id, %kwargs) = @_;
114 0         0 return $self->_http->post($self->_path($conference_id, 'streams'), body => \%kwargs);
115             }
116              
117             # --- VideoConferenceTokens ---
118             package SignalWire::Agents::REST::Namespaces::Video::ConferenceTokens;
119 4     4   2651 use Moo;
  4         13  
  4         17  
120             extends 'SignalWire::Agents::REST::Namespaces::Base';
121              
122             sub get {
123 0     0 0 0 my ($self, $token_id) = @_;
124 0         0 return $self->_http->get($self->_path($token_id));
125             }
126              
127             sub reset {
128 0     0 0 0 my ($self, $token_id) = @_;
129 0         0 return $self->_http->post($self->_path($token_id, 'reset'));
130             }
131              
132             # --- VideoStreams ---
133             package SignalWire::Agents::REST::Namespaces::Video::Streams;
134 4     4   2354 use Moo;
  4         8  
  4         19  
135             extends 'SignalWire::Agents::REST::Namespaces::Base';
136              
137             sub get {
138 0     0 0 0 my ($self, $stream_id) = @_;
139 0         0 return $self->_http->get($self->_path($stream_id));
140             }
141              
142             sub update {
143 0     0 0 0 my ($self, $stream_id, %kwargs) = @_;
144 0         0 return $self->_http->put($self->_path($stream_id), body => \%kwargs);
145             }
146              
147             sub delete_stream {
148 0     0 0 0 my ($self, $stream_id) = @_;
149 0         0 return $self->_http->delete_request($self->_path($stream_id));
150             }
151              
152             # --- VideoNamespace ---
153             package SignalWire::Agents::REST::Namespaces::Video;
154 4     4   2293 use Moo;
  4         9  
  4         30  
155              
156             has '_http' => ( is => 'ro', required => 1 );
157             has 'rooms' => ( is => 'lazy' );
158             has 'room_tokens' => ( is => 'lazy' );
159             has 'room_sessions' => ( is => 'lazy' );
160             has 'room_recordings' => ( is => 'lazy' );
161             has 'conferences' => ( is => 'lazy' );
162             has 'conference_tokens' => ( is => 'lazy' );
163             has 'streams' => ( is => 'lazy' );
164              
165             my $base = '/api/video';
166              
167 2     2   4785 sub _build_rooms { SignalWire::Agents::REST::Namespaces::Video::Rooms->new(_http => $_[0]->_http, _base_path => "$base/rooms") }
168 2     2   94 sub _build_room_tokens { SignalWire::Agents::REST::Namespaces::Video::RoomTokens->new(_http => $_[0]->_http, _base_path => "$base/room_tokens") }
169 2     2   4957 sub _build_room_sessions { SignalWire::Agents::REST::Namespaces::Video::RoomSessions->new(_http => $_[0]->_http, _base_path => "$base/room_sessions") }
170 2     2   4859 sub _build_room_recordings { SignalWire::Agents::REST::Namespaces::Video::RoomRecordings->new(_http => $_[0]->_http, _base_path => "$base/room_recordings") }
171 2     2   4814 sub _build_conferences { SignalWire::Agents::REST::Namespaces::Video::Conferences->new(_http => $_[0]->_http, _base_path => "$base/conferences") }
172 2     2   122 sub _build_conference_tokens { SignalWire::Agents::REST::Namespaces::Video::ConferenceTokens->new(_http => $_[0]->_http, _base_path => "$base/conference_tokens") }
173 2     2   5206 sub _build_streams { SignalWire::Agents::REST::Namespaces::Video::Streams->new(_http => $_[0]->_http, _base_path => "$base/streams") }
174              
175             1;