livekit-server-sdk 0.2.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.editorconfig +12 -0
- data/.github/workflows/test.yml +25 -0
- data/.gitignore +12 -0
- data/.gitmodules +3 -0
- data/.rspec +3 -0
- data/.rubocop.yml +16 -0
- data/.rubocop_todo.yml +22 -0
- data/.ruby-version +1 -0
- data/.tool-versions +3 -0
- data/CHANGELOG.md +5 -0
- data/CODE_OF_CONDUCT.md +84 -0
- data/Gemfile +17 -0
- data/Gemfile.lock +103 -0
- data/LICENSE.txt +21 -0
- data/README.md +45 -0
- data/Rakefile +19 -0
- data/bin/bootstrap.sh +5 -0
- data/bin/bundle +114 -0
- data/bin/coderay +29 -0
- data/bin/console +8 -0
- data/bin/htmldiff +29 -0
- data/bin/ldiff +29 -0
- data/bin/pry +29 -0
- data/bin/rake +29 -0
- data/bin/rspec +29 -0
- data/bin/rubocop +29 -0
- data/bin/ruby-parse +29 -0
- data/bin/ruby-rewrite +29 -0
- data/bin/yard +29 -0
- data/bin/yardoc +29 -0
- data/bin/yri +29 -0
- data/lib/livekit/access_token.rb +66 -0
- data/lib/livekit/auth_mixin.rb +12 -0
- data/lib/livekit/grants.rb +107 -0
- data/lib/livekit/proto/livekit_models_pb.rb +133 -0
- data/lib/livekit/proto/livekit_models_twirp.rb +8 -0
- data/lib/livekit/proto/livekit_recording_pb.rb +95 -0
- data/lib/livekit/proto/livekit_recording_twirp.rb +20 -0
- data/lib/livekit/proto/livekit_room_pb.rb +105 -0
- data/lib/livekit/proto/livekit_room_twirp.rb +27 -0
- data/lib/livekit/proto/livekit_webhook_pb.rb +26 -0
- data/lib/livekit/proto/livekit_webhook_twirp.rb +8 -0
- data/lib/livekit/room_service_client.rb +128 -0
- data/lib/livekit/token_verifier.rb +21 -0
- data/lib/livekit/utils.rb +29 -0
- data/lib/livekit/version.rb +5 -0
- data/lib/livekit.rb +12 -0
- data/livekit_server_sdk.gemspec +35 -0
- metadata +135 -0
@@ -0,0 +1,105 @@
|
|
1
|
+
# Generated by the protocol buffer compiler. DO NOT EDIT!
|
2
|
+
# source: livekit_room.proto
|
3
|
+
|
4
|
+
require 'google/protobuf'
|
5
|
+
|
6
|
+
require 'livekit_models_pb'
|
7
|
+
|
8
|
+
Google::Protobuf::DescriptorPool.generated_pool.build do
|
9
|
+
add_file("livekit_room.proto", :syntax => :proto3) do
|
10
|
+
add_message "livekit.CreateRoomRequest" do
|
11
|
+
optional :name, :string, 1
|
12
|
+
optional :empty_timeout, :uint32, 2
|
13
|
+
optional :max_participants, :uint32, 3
|
14
|
+
optional :node_id, :string, 4
|
15
|
+
optional :metadata, :string, 5
|
16
|
+
end
|
17
|
+
add_message "livekit.ListRoomsRequest" do
|
18
|
+
repeated :names, :string, 1
|
19
|
+
end
|
20
|
+
add_message "livekit.ListRoomsResponse" do
|
21
|
+
repeated :rooms, :message, 1, "livekit.Room"
|
22
|
+
end
|
23
|
+
add_message "livekit.DeleteRoomRequest" do
|
24
|
+
optional :room, :string, 1
|
25
|
+
end
|
26
|
+
add_message "livekit.DeleteRoomResponse" do
|
27
|
+
end
|
28
|
+
add_message "livekit.ListParticipantsRequest" do
|
29
|
+
optional :room, :string, 1
|
30
|
+
end
|
31
|
+
add_message "livekit.ListParticipantsResponse" do
|
32
|
+
repeated :participants, :message, 1, "livekit.ParticipantInfo"
|
33
|
+
end
|
34
|
+
add_message "livekit.RoomParticipantIdentity" do
|
35
|
+
optional :room, :string, 1
|
36
|
+
optional :identity, :string, 2
|
37
|
+
end
|
38
|
+
add_message "livekit.RemoveParticipantResponse" do
|
39
|
+
end
|
40
|
+
add_message "livekit.MuteRoomTrackRequest" do
|
41
|
+
optional :room, :string, 1
|
42
|
+
optional :identity, :string, 2
|
43
|
+
optional :track_sid, :string, 3
|
44
|
+
optional :muted, :bool, 4
|
45
|
+
end
|
46
|
+
add_message "livekit.MuteRoomTrackResponse" do
|
47
|
+
optional :track, :message, 1, "livekit.TrackInfo"
|
48
|
+
end
|
49
|
+
add_message "livekit.ParticipantPermission" do
|
50
|
+
optional :can_subscribe, :bool, 1
|
51
|
+
optional :can_publish, :bool, 2
|
52
|
+
optional :can_publish_data, :bool, 3
|
53
|
+
end
|
54
|
+
add_message "livekit.UpdateParticipantRequest" do
|
55
|
+
optional :room, :string, 1
|
56
|
+
optional :identity, :string, 2
|
57
|
+
optional :metadata, :string, 3
|
58
|
+
optional :permission, :message, 4, "livekit.ParticipantPermission"
|
59
|
+
end
|
60
|
+
add_message "livekit.UpdateSubscriptionsRequest" do
|
61
|
+
optional :room, :string, 1
|
62
|
+
optional :identity, :string, 2
|
63
|
+
repeated :track_sids, :string, 3
|
64
|
+
optional :subscribe, :bool, 4
|
65
|
+
repeated :participant_tracks, :message, 5, "livekit.ParticipantTracks"
|
66
|
+
end
|
67
|
+
add_message "livekit.UpdateSubscriptionsResponse" do
|
68
|
+
end
|
69
|
+
add_message "livekit.SendDataRequest" do
|
70
|
+
optional :room, :string, 1
|
71
|
+
optional :data, :bytes, 2
|
72
|
+
optional :kind, :enum, 3, "livekit.DataPacket.Kind"
|
73
|
+
repeated :destination_sids, :string, 4
|
74
|
+
end
|
75
|
+
add_message "livekit.SendDataResponse" do
|
76
|
+
end
|
77
|
+
add_message "livekit.UpdateRoomMetadataRequest" do
|
78
|
+
optional :room, :string, 1
|
79
|
+
optional :metadata, :string, 2
|
80
|
+
end
|
81
|
+
end
|
82
|
+
end
|
83
|
+
|
84
|
+
module LiveKit
|
85
|
+
module Proto
|
86
|
+
CreateRoomRequest = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("livekit.CreateRoomRequest").msgclass
|
87
|
+
ListRoomsRequest = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("livekit.ListRoomsRequest").msgclass
|
88
|
+
ListRoomsResponse = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("livekit.ListRoomsResponse").msgclass
|
89
|
+
DeleteRoomRequest = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("livekit.DeleteRoomRequest").msgclass
|
90
|
+
DeleteRoomResponse = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("livekit.DeleteRoomResponse").msgclass
|
91
|
+
ListParticipantsRequest = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("livekit.ListParticipantsRequest").msgclass
|
92
|
+
ListParticipantsResponse = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("livekit.ListParticipantsResponse").msgclass
|
93
|
+
RoomParticipantIdentity = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("livekit.RoomParticipantIdentity").msgclass
|
94
|
+
RemoveParticipantResponse = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("livekit.RemoveParticipantResponse").msgclass
|
95
|
+
MuteRoomTrackRequest = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("livekit.MuteRoomTrackRequest").msgclass
|
96
|
+
MuteRoomTrackResponse = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("livekit.MuteRoomTrackResponse").msgclass
|
97
|
+
ParticipantPermission = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("livekit.ParticipantPermission").msgclass
|
98
|
+
UpdateParticipantRequest = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("livekit.UpdateParticipantRequest").msgclass
|
99
|
+
UpdateSubscriptionsRequest = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("livekit.UpdateSubscriptionsRequest").msgclass
|
100
|
+
UpdateSubscriptionsResponse = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("livekit.UpdateSubscriptionsResponse").msgclass
|
101
|
+
SendDataRequest = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("livekit.SendDataRequest").msgclass
|
102
|
+
SendDataResponse = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("livekit.SendDataResponse").msgclass
|
103
|
+
UpdateRoomMetadataRequest = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("livekit.UpdateRoomMetadataRequest").msgclass
|
104
|
+
end
|
105
|
+
end
|
@@ -0,0 +1,27 @@
|
|
1
|
+
# Code generated by protoc-gen-twirp_ruby 1.9.0, DO NOT EDIT.
|
2
|
+
require 'twirp'
|
3
|
+
require_relative 'livekit_room_pb.rb'
|
4
|
+
|
5
|
+
module LiveKit
|
6
|
+
module Proto
|
7
|
+
class RoomServiceService < Twirp::Service
|
8
|
+
package 'livekit'
|
9
|
+
service 'RoomService'
|
10
|
+
rpc :CreateRoom, CreateRoomRequest, Room, :ruby_method => :create_room
|
11
|
+
rpc :ListRooms, ListRoomsRequest, ListRoomsResponse, :ruby_method => :list_rooms
|
12
|
+
rpc :DeleteRoom, DeleteRoomRequest, DeleteRoomResponse, :ruby_method => :delete_room
|
13
|
+
rpc :ListParticipants, ListParticipantsRequest, ListParticipantsResponse, :ruby_method => :list_participants
|
14
|
+
rpc :GetParticipant, RoomParticipantIdentity, ParticipantInfo, :ruby_method => :get_participant
|
15
|
+
rpc :RemoveParticipant, RoomParticipantIdentity, RemoveParticipantResponse, :ruby_method => :remove_participant
|
16
|
+
rpc :MutePublishedTrack, MuteRoomTrackRequest, MuteRoomTrackResponse, :ruby_method => :mute_published_track
|
17
|
+
rpc :UpdateParticipant, UpdateParticipantRequest, ParticipantInfo, :ruby_method => :update_participant
|
18
|
+
rpc :UpdateSubscriptions, UpdateSubscriptionsRequest, UpdateSubscriptionsResponse, :ruby_method => :update_subscriptions
|
19
|
+
rpc :SendData, SendDataRequest, SendDataResponse, :ruby_method => :send_data
|
20
|
+
rpc :UpdateRoomMetadata, UpdateRoomMetadataRequest, Room, :ruby_method => :update_room_metadata
|
21
|
+
end
|
22
|
+
|
23
|
+
class RoomServiceClient < Twirp::Client
|
24
|
+
client_for RoomServiceService
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
# Generated by the protocol buffer compiler. DO NOT EDIT!
|
2
|
+
# source: livekit_webhook.proto
|
3
|
+
|
4
|
+
require 'google/protobuf'
|
5
|
+
|
6
|
+
require 'livekit_models_pb'
|
7
|
+
require 'livekit_recording_pb'
|
8
|
+
|
9
|
+
Google::Protobuf::DescriptorPool.generated_pool.build do
|
10
|
+
add_file("livekit_webhook.proto", :syntax => :proto3) do
|
11
|
+
add_message "livekit.WebhookEvent" do
|
12
|
+
optional :event, :string, 1
|
13
|
+
optional :room, :message, 2, "livekit.Room"
|
14
|
+
optional :participant, :message, 3, "livekit.ParticipantInfo"
|
15
|
+
optional :recording_info, :message, 5, "livekit.RecordingInfo"
|
16
|
+
optional :id, :string, 6
|
17
|
+
optional :created_at, :int64, 7
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
module LiveKit
|
23
|
+
module Proto
|
24
|
+
WebhookEvent = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("livekit.WebhookEvent").msgclass
|
25
|
+
end
|
26
|
+
end
|
@@ -0,0 +1,128 @@
|
|
1
|
+
require "livekit/proto/livekit_room_twirp"
|
2
|
+
require "livekit/auth_mixin"
|
3
|
+
|
4
|
+
module LiveKit
|
5
|
+
class RoomServiceClient < Twirp::Client
|
6
|
+
client_for Proto::RoomServiceService
|
7
|
+
include AuthMixin
|
8
|
+
attr_accessor :api_key, :api_secret
|
9
|
+
|
10
|
+
def initialize(base_url, api_key: nil, api_secret: nil)
|
11
|
+
super(File.join(base_url, "/twirp"))
|
12
|
+
@api_key = api_key
|
13
|
+
@api_secret = api_secret
|
14
|
+
end
|
15
|
+
|
16
|
+
# creates a new room with name
|
17
|
+
def create_room(name, empty_timeout: nil, max_participants: nil)
|
18
|
+
self.rpc(
|
19
|
+
:CreateRoom,
|
20
|
+
Proto::ListRoomsRequest(name: name, empty_timeout: empty_timeout, max_participants: max_participants),
|
21
|
+
headers: auth_header(roomCreate: true),
|
22
|
+
)
|
23
|
+
end
|
24
|
+
|
25
|
+
# Lists rooms, when names is set, only list matching rooms
|
26
|
+
def list_rooms(names: nil)
|
27
|
+
self.rpc(
|
28
|
+
:ListRooms,
|
29
|
+
Proto::ListRoomsRequest.new(names: names),
|
30
|
+
headers: auth_header(roomList: true),
|
31
|
+
)
|
32
|
+
end
|
33
|
+
|
34
|
+
def delete_room(room:)
|
35
|
+
self.rpc(
|
36
|
+
:DeleteRoom,
|
37
|
+
Proto::DeleteRoomRequest.new(room: room),
|
38
|
+
headers: auth_header(roomCreate: true),
|
39
|
+
)
|
40
|
+
end
|
41
|
+
|
42
|
+
def update_room_metadata(room:, metadata:)
|
43
|
+
self.rpc(
|
44
|
+
:UpdateRoomMetadata,
|
45
|
+
Proto::UpdateRoomMetadataRequest.new(room: room, metadata: metadata),
|
46
|
+
headers: auth_header(roomAdmin: true, room: room),
|
47
|
+
)
|
48
|
+
end
|
49
|
+
|
50
|
+
def list_participants(room:)
|
51
|
+
self.rpc(
|
52
|
+
:ListParticipants,
|
53
|
+
Proto::ListParticipantsRequest.new(room: room),
|
54
|
+
headers: auth_header(roomAdmin: true, room: room),
|
55
|
+
)
|
56
|
+
end
|
57
|
+
|
58
|
+
def get_participant(room:, identity:)
|
59
|
+
self.rpc(
|
60
|
+
:GetParticipant,
|
61
|
+
Proto::RoomParticipantIdentity.new(room: room, identity: identity),
|
62
|
+
headers: auth_header(roomAdmin: true, room: room),
|
63
|
+
)
|
64
|
+
end
|
65
|
+
|
66
|
+
def remove_participant(room:, identity:)
|
67
|
+
self.rpc(
|
68
|
+
:RemoveParticipant,
|
69
|
+
Proto::RoomParticipantIdentity.new(room: room, identity: identity),
|
70
|
+
headers: auth_header(roomAdmin: true, room: room),
|
71
|
+
)
|
72
|
+
end
|
73
|
+
|
74
|
+
def mute_published_track(room:, identity:, track_sid:, muted:)
|
75
|
+
self.rpc(
|
76
|
+
:MutePublishedTrack,
|
77
|
+
Proto::MuteRoomTrackRequest.new(
|
78
|
+
room: room,
|
79
|
+
identity: identity,
|
80
|
+
track_sid: track_sid,
|
81
|
+
muted: muted,
|
82
|
+
),
|
83
|
+
headers: auth_header(roomAdmin: true, room: room),
|
84
|
+
)
|
85
|
+
end
|
86
|
+
|
87
|
+
def update_participant(room:, identity:, metadata: nil, permission: nil)
|
88
|
+
req = Proto::UpdateParticipantRequest.new(room: room, identity: identity)
|
89
|
+
if metadata
|
90
|
+
req.metadata = metadata
|
91
|
+
end
|
92
|
+
if permission
|
93
|
+
req.permission = permission
|
94
|
+
end
|
95
|
+
self.rpc(
|
96
|
+
:UpdateParticipant,
|
97
|
+
req,
|
98
|
+
headers: auth_header(roomAdmin: true, room: room),
|
99
|
+
)
|
100
|
+
end
|
101
|
+
|
102
|
+
def update_subscriptions(room:, identity:, track_sids:, subscribe:)
|
103
|
+
self.rpc(
|
104
|
+
:UpdateSubscriptions,
|
105
|
+
Proto::UpdateSubscriptionsRequest.new(
|
106
|
+
room: room,
|
107
|
+
identity: identity,
|
108
|
+
track_sids: track_sids,
|
109
|
+
subscribe: subscribe,
|
110
|
+
),
|
111
|
+
headers: auth_header(roomAdmin: true, room: room),
|
112
|
+
)
|
113
|
+
end
|
114
|
+
|
115
|
+
def send_data(room:, data:, kind:, destination_sids: [])
|
116
|
+
self.rpc(
|
117
|
+
:SendData,
|
118
|
+
Proto::SendDataRequest.new(
|
119
|
+
room: room,
|
120
|
+
data: data,
|
121
|
+
kind: kind,
|
122
|
+
destination_sids: destination_sids,
|
123
|
+
),
|
124
|
+
headers: auth_header(roomAdmin: true, room: room),
|
125
|
+
)
|
126
|
+
end
|
127
|
+
end
|
128
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require "jwt"
|
4
|
+
|
5
|
+
module LiveKit
|
6
|
+
class TokenVerifier
|
7
|
+
def initialize(api_key: nil, api_secret: nil)
|
8
|
+
@api_key = api_key
|
9
|
+
@api_secret = api_secret
|
10
|
+
end
|
11
|
+
|
12
|
+
def verify(token)
|
13
|
+
decoded_token = JWT.decode(token, @api_secret, true, algorithm: AccessToken::SIGNING_ALGORITHM)
|
14
|
+
decoded = decoded_token.first
|
15
|
+
if decoded["iss"] != @api_key
|
16
|
+
raise "Invalid issuer"
|
17
|
+
end
|
18
|
+
ClaimGrant.from_hash(decoded)
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
@@ -0,0 +1,29 @@
|
|
1
|
+
class ::Hash
|
2
|
+
# via https://stackoverflow.com/a/25835016/2257038
|
3
|
+
def stringify_keys
|
4
|
+
h = self.map do |k, v|
|
5
|
+
v_str = if v.instance_of? Hash
|
6
|
+
v.stringify_keys
|
7
|
+
else
|
8
|
+
v
|
9
|
+
end
|
10
|
+
|
11
|
+
[k.to_s, v_str]
|
12
|
+
end
|
13
|
+
Hash[h]
|
14
|
+
end
|
15
|
+
|
16
|
+
# via https://stackoverflow.com/a/25835016/2257038
|
17
|
+
def symbol_keys
|
18
|
+
h = self.map do |k, v|
|
19
|
+
v_sym = if v.instance_of? Hash
|
20
|
+
v.symbol_keys
|
21
|
+
else
|
22
|
+
v
|
23
|
+
end
|
24
|
+
|
25
|
+
[k.to_sym, v_sym]
|
26
|
+
end
|
27
|
+
Hash[h]
|
28
|
+
end
|
29
|
+
end
|
data/lib/livekit.rb
ADDED
@@ -0,0 +1,12 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require "livekit/access_token"
|
4
|
+
require "livekit/grants"
|
5
|
+
require "livekit/token_verifier"
|
6
|
+
require "livekit/utils"
|
7
|
+
require "livekit/version"
|
8
|
+
|
9
|
+
# required since generated protobufs does use `require` instead of `require_relative`
|
10
|
+
FOLDER = Pathname.new(File.expand_path("lib/livekit/proto"))
|
11
|
+
$LOAD_PATH.unshift(FOLDER.to_s)
|
12
|
+
require "livekit/room_service_client"
|
@@ -0,0 +1,35 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require_relative "lib/livekit/version"
|
4
|
+
|
5
|
+
Gem::Specification.new do |spec|
|
6
|
+
spec.name = "livekit-server-sdk"
|
7
|
+
spec.version = LiveKit::VERSION
|
8
|
+
spec.authors = ["Omri Gabay", "David Zhao"]
|
9
|
+
spec.email = ["omri@omrigabay.me", "dz@livekit.io"]
|
10
|
+
|
11
|
+
spec.summary = "LiveKit Server SDK for Ruby"
|
12
|
+
spec.homepage = "https://livekit.io"
|
13
|
+
spec.license = "MIT"
|
14
|
+
spec.required_ruby_version = ">= 2.6.0"
|
15
|
+
|
16
|
+
# spec.metadata["homepage_uri"] = spec.homepage
|
17
|
+
# spec.metadata["source_code_uri"] = "TODO: Put your gem's public repo URL here."
|
18
|
+
# spec.metadata["changelog_uri"] = "TODO: Put your gem's CHANGELOG.md URL here."
|
19
|
+
|
20
|
+
# Specify which files should be added to the gem when it is released.
|
21
|
+
# The `git ls-files -z` loads the files in the RubyGem that have been added into git.
|
22
|
+
spec.files = Dir.chdir(File.expand_path(__dir__)) do
|
23
|
+
`git ls-files -z`.split("\x0").reject { |f| f.match(%r{\A(?:test|spec|features)/}) }
|
24
|
+
end
|
25
|
+
spec.bindir = "exe"
|
26
|
+
spec.executables = spec.files.grep(%r{\Aexe/}) { |f| File.basename(f) }
|
27
|
+
spec.require_paths = ["lib"]
|
28
|
+
|
29
|
+
spec.add_dependency "protobuf", "~> 3.10.5"
|
30
|
+
spec.add_dependency "jwt", "~> 2.2.3"
|
31
|
+
spec.add_dependency "twirp", "~> 1.9.0"
|
32
|
+
|
33
|
+
# For more information and examples about making a new gem, checkout our
|
34
|
+
# guide at: https://bundler.io/guides/creating_gem.html
|
35
|
+
end
|
metadata
ADDED
@@ -0,0 +1,135 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: livekit-server-sdk
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.2.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Omri Gabay
|
8
|
+
- David Zhao
|
9
|
+
autorequire:
|
10
|
+
bindir: exe
|
11
|
+
cert_chain: []
|
12
|
+
date: 2022-01-09 00:00:00.000000000 Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
15
|
+
name: protobuf
|
16
|
+
requirement: !ruby/object:Gem::Requirement
|
17
|
+
requirements:
|
18
|
+
- - "~>"
|
19
|
+
- !ruby/object:Gem::Version
|
20
|
+
version: 3.10.5
|
21
|
+
type: :runtime
|
22
|
+
prerelease: false
|
23
|
+
version_requirements: !ruby/object:Gem::Requirement
|
24
|
+
requirements:
|
25
|
+
- - "~>"
|
26
|
+
- !ruby/object:Gem::Version
|
27
|
+
version: 3.10.5
|
28
|
+
- !ruby/object:Gem::Dependency
|
29
|
+
name: jwt
|
30
|
+
requirement: !ruby/object:Gem::Requirement
|
31
|
+
requirements:
|
32
|
+
- - "~>"
|
33
|
+
- !ruby/object:Gem::Version
|
34
|
+
version: 2.2.3
|
35
|
+
type: :runtime
|
36
|
+
prerelease: false
|
37
|
+
version_requirements: !ruby/object:Gem::Requirement
|
38
|
+
requirements:
|
39
|
+
- - "~>"
|
40
|
+
- !ruby/object:Gem::Version
|
41
|
+
version: 2.2.3
|
42
|
+
- !ruby/object:Gem::Dependency
|
43
|
+
name: twirp
|
44
|
+
requirement: !ruby/object:Gem::Requirement
|
45
|
+
requirements:
|
46
|
+
- - "~>"
|
47
|
+
- !ruby/object:Gem::Version
|
48
|
+
version: 1.9.0
|
49
|
+
type: :runtime
|
50
|
+
prerelease: false
|
51
|
+
version_requirements: !ruby/object:Gem::Requirement
|
52
|
+
requirements:
|
53
|
+
- - "~>"
|
54
|
+
- !ruby/object:Gem::Version
|
55
|
+
version: 1.9.0
|
56
|
+
description:
|
57
|
+
email:
|
58
|
+
- omri@omrigabay.me
|
59
|
+
- dz@livekit.io
|
60
|
+
executables: []
|
61
|
+
extensions: []
|
62
|
+
extra_rdoc_files: []
|
63
|
+
files:
|
64
|
+
- ".editorconfig"
|
65
|
+
- ".github/workflows/test.yml"
|
66
|
+
- ".gitignore"
|
67
|
+
- ".gitmodules"
|
68
|
+
- ".rspec"
|
69
|
+
- ".rubocop.yml"
|
70
|
+
- ".rubocop_todo.yml"
|
71
|
+
- ".ruby-version"
|
72
|
+
- ".tool-versions"
|
73
|
+
- CHANGELOG.md
|
74
|
+
- CODE_OF_CONDUCT.md
|
75
|
+
- Gemfile
|
76
|
+
- Gemfile.lock
|
77
|
+
- LICENSE.txt
|
78
|
+
- README.md
|
79
|
+
- Rakefile
|
80
|
+
- bin/bootstrap.sh
|
81
|
+
- bin/bundle
|
82
|
+
- bin/coderay
|
83
|
+
- bin/console
|
84
|
+
- bin/htmldiff
|
85
|
+
- bin/ldiff
|
86
|
+
- bin/pry
|
87
|
+
- bin/rake
|
88
|
+
- bin/rspec
|
89
|
+
- bin/rubocop
|
90
|
+
- bin/ruby-parse
|
91
|
+
- bin/ruby-rewrite
|
92
|
+
- bin/yard
|
93
|
+
- bin/yardoc
|
94
|
+
- bin/yri
|
95
|
+
- lib/livekit.rb
|
96
|
+
- lib/livekit/access_token.rb
|
97
|
+
- lib/livekit/auth_mixin.rb
|
98
|
+
- lib/livekit/grants.rb
|
99
|
+
- lib/livekit/proto/livekit_models_pb.rb
|
100
|
+
- lib/livekit/proto/livekit_models_twirp.rb
|
101
|
+
- lib/livekit/proto/livekit_recording_pb.rb
|
102
|
+
- lib/livekit/proto/livekit_recording_twirp.rb
|
103
|
+
- lib/livekit/proto/livekit_room_pb.rb
|
104
|
+
- lib/livekit/proto/livekit_room_twirp.rb
|
105
|
+
- lib/livekit/proto/livekit_webhook_pb.rb
|
106
|
+
- lib/livekit/proto/livekit_webhook_twirp.rb
|
107
|
+
- lib/livekit/room_service_client.rb
|
108
|
+
- lib/livekit/token_verifier.rb
|
109
|
+
- lib/livekit/utils.rb
|
110
|
+
- lib/livekit/version.rb
|
111
|
+
- livekit_server_sdk.gemspec
|
112
|
+
homepage: https://livekit.io
|
113
|
+
licenses:
|
114
|
+
- MIT
|
115
|
+
metadata: {}
|
116
|
+
post_install_message:
|
117
|
+
rdoc_options: []
|
118
|
+
require_paths:
|
119
|
+
- lib
|
120
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
121
|
+
requirements:
|
122
|
+
- - ">="
|
123
|
+
- !ruby/object:Gem::Version
|
124
|
+
version: 2.6.0
|
125
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
126
|
+
requirements:
|
127
|
+
- - ">="
|
128
|
+
- !ruby/object:Gem::Version
|
129
|
+
version: '0'
|
130
|
+
requirements: []
|
131
|
+
rubygems_version: 3.0.3.1
|
132
|
+
signing_key:
|
133
|
+
specification_version: 4
|
134
|
+
summary: LiveKit Server SDK for Ruby
|
135
|
+
test_files: []
|