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.



13
14
15
16
17
# File 'lib/livekit/room_service_client.rb', line 13

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

Instance Attribute Details

#api_keyObject

Returns the value of attribute api_key.



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

def api_key
  @api_key
end

#api_secretObject

Returns the value of attribute api_secret.



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

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, departure_timeout: nil) ⇒ Object



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

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,
    departure_timeout: nil
  )
  self.rpc(
    :CreateRoom,
    Proto::CreateRoomRequest.new(
      name: name,
      empty_timeout: empty_timeout,
      departure_timeout: departure_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



54
55
56
57
58
59
60
# File 'lib/livekit/room_service_client.rb', line 54

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

#get_participant(room:, identity:) ⇒ Object



78
79
80
81
82
83
84
# File 'lib/livekit/room_service_client.rb', line 78

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



70
71
72
73
74
75
76
# File 'lib/livekit/room_service_client.rb', line 70

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



46
47
48
49
50
51
52
# File 'lib/livekit/room_service_client.rb', line 46

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



94
95
96
97
98
99
100
101
102
103
104
105
# File 'lib/livekit/room_service_client.rb', line 94

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



86
87
88
89
90
91
92
# File 'lib/livekit/room_service_client.rb', line 86

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



138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
# File 'lib/livekit/room_service_client.rb', line 138

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



107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
# File 'lib/livekit/room_service_client.rb', line 107

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



62
63
64
65
66
67
68
# File 'lib/livekit/room_service_client.rb', line 62

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



125
126
127
128
129
130
131
132
133
134
135
136
# File 'lib/livekit/room_service_client.rb', line 125

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