Class: LiveKit::RoomServiceClient

Inherits:
Twirp::Client
  • Object
show all
Includes:
AuthMixin
Defined in:
lib/livekit/room_service_client.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods included from AuthMixin

#auth_header

Constructor Details

#initialize(base_url, api_key: nil, api_secret: nil) ⇒ RoomServiceClient

Returns a new instance of RoomServiceClient.



10
11
12
13
14
# File 'lib/livekit/room_service_client.rb', line 10

def initialize(base_url, api_key: nil, api_secret: nil)
  super(File.join(base_url, "/twirp"))
  @api_key = api_key
  @api_secret = api_secret
end

Instance Attribute Details

#api_keyObject

Returns the value of attribute api_key.



8
9
10
# File 'lib/livekit/room_service_client.rb', line 8

def api_key
  @api_key
end

#api_secretObject

Returns the value of attribute api_secret.



8
9
10
# File 'lib/livekit/room_service_client.rb', line 8

def api_secret
  @api_secret
end

Instance Method Details

#create_room(name, empty_timeout: nil, max_participants: nil, egress: nil, metadata: nil, min_playout_delay: nil, max_playout_delay: nil, sync_streams: nil) ⇒ Object



16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
# File 'lib/livekit/room_service_client.rb', line 16

def create_room(name,
    empty_timeout: nil,
    max_participants: nil,
    egress: nil,
    metadata: nil,
    min_playout_delay: nil,
    max_playout_delay: nil,
    sync_streams: nil
  )
  self.rpc(
    :CreateRoom,
    Proto::CreateRoomRequest.new(
      name: name,
      empty_timeout: empty_timeout,
      max_participants: max_participants,
      egress: egress,
      metadata: ,
      min_playout_delay: min_playout_delay,
      max_playout_delay: max_playout_delay,
      sync_streams: sync_streams
    ),
    headers: auth_header(roomCreate: true),
  )
end

#delete_room(room:) ⇒ Object



49
50
51
52
53
54
55
# File 'lib/livekit/room_service_client.rb', line 49

def delete_room(room:)
  self.rpc(
    :DeleteRoom,
    Proto::DeleteRoomRequest.new(room: room),
    headers: auth_header(roomCreate: true),
  )
end

#get_participant(room:, identity:) ⇒ Object



73
74
75
76
77
78
79
# File 'lib/livekit/room_service_client.rb', line 73

def get_participant(room:, identity:)
  self.rpc(
    :GetParticipant,
    Proto::RoomParticipantIdentity.new(room: room, identity: identity),
    headers: auth_header(roomAdmin: true, room: room),
  )
end

#list_participants(room:) ⇒ Object



65
66
67
68
69
70
71
# File 'lib/livekit/room_service_client.rb', line 65

def list_participants(room:)
  self.rpc(
    :ListParticipants,
    Proto::ListParticipantsRequest.new(room: room),
    headers: auth_header(roomAdmin: true, room: room),
  )
end

#list_rooms(names: nil) ⇒ Object



41
42
43
44
45
46
47
# File 'lib/livekit/room_service_client.rb', line 41

def list_rooms(names: nil)
  self.rpc(
    :ListRooms,
    Proto::ListRoomsRequest.new(names: names),
    headers: auth_header(roomList: true),
  )
end

#mute_published_track(room:, identity:, track_sid:, muted:) ⇒ Object



89
90
91
92
93
94
95
96
97
98
99
100
# File 'lib/livekit/room_service_client.rb', line 89

def mute_published_track(room:, identity:, track_sid:, muted:)
  self.rpc(
    :MutePublishedTrack,
    Proto::MuteRoomTrackRequest.new(
      room: room,
      identity: identity,
      track_sid: track_sid,
      muted: muted,
    ),
    headers: auth_header(roomAdmin: true, room: room),
  )
end

#remove_participant(room:, identity:) ⇒ Object



81
82
83
84
85
86
87
# File 'lib/livekit/room_service_client.rb', line 81

def remove_participant(room:, identity:)
  self.rpc(
    :RemoveParticipant,
    Proto::RoomParticipantIdentity.new(room: room, identity: identity),
    headers: auth_header(roomAdmin: true, room: room),
  )
end

#send_data(room:, data:, kind:, destination_sids: [], destination_identities: []) ⇒ Object



133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
# File 'lib/livekit/room_service_client.rb', line 133

def send_data(room:, data:, kind:,
    destination_sids: [],
    destination_identities: []
  )
  self.rpc(
    :SendData,
    Proto::SendDataRequest.new(
      room: room,
      data: data,
      kind: kind,
      destination_sids: destination_sids,
      destination_identities: destination_identities,
    ),
    headers: auth_header(roomAdmin: true, room: room),
  )
end

#update_participant(room:, identity:, metadata: nil, permission: nil, name: nil) ⇒ Object



102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
# File 'lib/livekit/room_service_client.rb', line 102

def update_participant(room:, identity:, metadata: nil, permission: nil, name: nil)
  req = Proto::UpdateParticipantRequest.new(room: room, identity: identity)
  if 
    req. = 
  end
  if permission
    req.permission = permission
  end
  if name
    req.name = name
  end
  self.rpc(
    :UpdateParticipant,
    req,
    headers: auth_header(roomAdmin: true, room: room),
  )
end

#update_room_metadata(room:, metadata:) ⇒ Object



57
58
59
60
61
62
63
# File 'lib/livekit/room_service_client.rb', line 57

def (room:, metadata:)
  self.rpc(
    :UpdateRoomMetadata,
    Proto::UpdateRoomMetadataRequest.new(room: room, metadata: ),
    headers: auth_header(roomAdmin: true, room: room),
  )
end

#update_subscriptions(room:, identity:, track_sids:, subscribe:) ⇒ Object



120
121
122
123
124
125
126
127
128
129
130
131
# File 'lib/livekit/room_service_client.rb', line 120

def update_subscriptions(room:, identity:, track_sids:, subscribe:)
  self.rpc(
    :UpdateSubscriptions,
    Proto::UpdateSubscriptionsRequest.new(
      room: room,
      identity: identity,
      track_sids: track_sids,
      subscribe: subscribe,
    ),
    headers: auth_header(roomAdmin: true, room: room),
  )
end