rtsp 0.1.2 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/.gemtest +0 -0
- data/ChangeLog.rdoc +12 -0
- data/Gemfile +0 -18
- data/Rakefile +1 -4
- data/lib/rtsp.rb +1 -2
- data/lib/rtsp/capturer.rb +68 -18
- data/lib/rtsp/client.rb +4 -1
- data/lib/rtsp/version.rb +1 -1
- data/spec/rtsp/capturer_spec.rb +228 -0
- data/spec/rtsp/client_spec.rb +5 -0
- data/spec/rtsp/message_spec.rb +10 -10
- data/spec/rtsp_spec.rb +2 -2
- data/spec/spec_helper.rb +11 -0
- data/spec/support/fake_rtsp_server.rb +1 -1
- metadata +63 -103
- data/.document +0 -3
- data/.infinity_test +0 -4
- data/.rspec +0 -3
- data/.yardopts +0 -4
- data/Gemfile.lock +0 -134
- data/rtsp.gemspec +0 -127
- data/spec/.rspec +0 -1
data/.gemtest
ADDED
File without changes
|
data/ChangeLog.rdoc
CHANGED
@@ -1,3 +1,15 @@
|
|
1
|
+
=== 0.2.0 / 2011-09-19
|
2
|
+
|
3
|
+
* Changed RTSP::Capturer init_*_server methods to take params in order to reduce
|
4
|
+
dependency on state of the Capturer object.
|
5
|
+
* Improvements:
|
6
|
+
* If RTSP::Capturer can't open port 9000, it increments by 1 and tries again,
|
7
|
+
50 times, then raises.
|
8
|
+
* gh-4: Remove dependency on ore en lieu of standard gem commands.
|
9
|
+
* Participate in http://test.rubygems.org!
|
10
|
+
* Fixed bugs:
|
11
|
+
* gh-5: Fixed 'Bad file descriptor' bug when capturing to file.
|
12
|
+
|
1
13
|
=== 0.1.2 / 2011-04-14
|
2
14
|
|
3
15
|
* Manually released; the gemspec that Ore created didn't install bin/rtsp_client.
|
data/Gemfile
CHANGED
@@ -1,21 +1,3 @@
|
|
1
|
-
require 'ore/specification'
|
2
|
-
|
3
1
|
source :rubygems
|
4
2
|
|
5
3
|
gemspec
|
6
|
-
gem 'sdp', '~> 0.2.2'
|
7
|
-
|
8
|
-
gem 'simplecov', '>= 0.4.0', :require => false, :group => :test
|
9
|
-
|
10
|
-
group :development do
|
11
|
-
gem 'bundler', '~> 1.0.0'
|
12
|
-
gem 'code_statistics', '~> 0.2.13'
|
13
|
-
gem 'cucumber'
|
14
|
-
gem 'metric_fu', '>= 2.0.0'
|
15
|
-
gem 'ore', '~> 0.7.2'
|
16
|
-
gem 'ore-core', '~> 0.1.5'
|
17
|
-
gem 'ore-tasks', '~> 0.5.0'
|
18
|
-
gem 'rake', '~> 0.8.7'
|
19
|
-
gem "rspec", '~> 2.5.0'
|
20
|
-
gem 'yard', '~> 0.6.0'
|
21
|
-
end
|
data/Rakefile
CHANGED
@@ -1,4 +1,3 @@
|
|
1
|
-
require 'rubygems' if RUBY_VERSION < "1.9.0"
|
2
1
|
require 'rake'
|
3
2
|
|
4
3
|
begin
|
@@ -17,15 +16,13 @@ rescue Bundler::BundlerError => e
|
|
17
16
|
exit e.status_code
|
18
17
|
end
|
19
18
|
|
20
|
-
require 'ore/tasks'
|
21
|
-
Ore::Tasks.new
|
22
|
-
|
23
19
|
require 'rspec/core/rake_task'
|
24
20
|
RSpec::Core::RakeTask.new(:spec) do |t|
|
25
21
|
t.ruby_opts = "-w"
|
26
22
|
t.rspec_opts = ['--format', 'documentation', '--color']
|
27
23
|
end
|
28
24
|
task :default => :spec
|
25
|
+
task :test => :spec # for `gem test`
|
29
26
|
|
30
27
|
require 'yard'
|
31
28
|
YARD::Rake::YardocTask.new do |t|
|
data/lib/rtsp.rb
CHANGED
data/lib/rtsp/capturer.rb
CHANGED
@@ -23,6 +23,9 @@ module RTSP
|
|
23
23
|
# Maximum number of bytes to receive on the socket.
|
24
24
|
MAX_BYTES_TO_RECEIVE = 3000
|
25
25
|
|
26
|
+
# Maximum times to retry using the next greatest port number.
|
27
|
+
MAX_PORT_NUMBER_RETRIES = 50
|
28
|
+
|
26
29
|
# @param [File] rtp_file The file to capture the RTP data to.
|
27
30
|
# @return [File]
|
28
31
|
attr_accessor :rtp_file
|
@@ -55,11 +58,11 @@ module RTSP
|
|
55
58
|
# @return [UDPSocket, TCPSocket]
|
56
59
|
# @raise [RTSP::Error] If +@transport_protocol was not set to +:UDP+ or
|
57
60
|
# +:TCP+.
|
58
|
-
def init_server
|
59
|
-
if
|
60
|
-
server = init_udp_server
|
61
|
-
elsif
|
62
|
-
server = init_tcp_server
|
61
|
+
def init_server(protocol, port=9000)
|
62
|
+
if protocol == :UDP
|
63
|
+
server = init_udp_server(port)
|
64
|
+
elsif protocol == :TCP
|
65
|
+
server = init_tcp_server(port)
|
63
66
|
else
|
64
67
|
raise RTSP::Error, "Unknown streaming_protocol requested: #{@transport_protocol}"
|
65
68
|
end
|
@@ -68,51 +71,98 @@ module RTSP
|
|
68
71
|
end
|
69
72
|
|
70
73
|
# Starts capturing data on +@rtp_port+ and writes it to +@rtp_file+.
|
74
|
+
# @todo Allow to yield received data.
|
71
75
|
def run
|
72
|
-
@server = init_server
|
76
|
+
@server = init_server(@transport_protocol, @rtp_port)
|
73
77
|
@run = true
|
78
|
+
log "Starting #{self.class} on port #{@rtp_port}..."
|
74
79
|
|
75
|
-
RTSP::Client.log "Starting #{self.class} on port #{@rtp_port}..."
|
76
80
|
while @run
|
77
81
|
data = @server.recvfrom(MAX_BYTES_TO_RECEIVE).first
|
78
|
-
|
82
|
+
log "received data with size: #{data.size}"
|
79
83
|
@rtp_file.write data
|
80
84
|
end
|
85
|
+
|
86
|
+
ensure
|
87
|
+
@server.close unless @server.nil?
|
81
88
|
end
|
82
89
|
|
83
90
|
# Returns if the run loop is in action.
|
84
91
|
#
|
85
92
|
# @return [Boolean] true if the run loop is running.
|
86
93
|
def running?
|
87
|
-
@run
|
94
|
+
@server.nil? ? @run : (@run || @server.closed?)
|
88
95
|
end
|
89
96
|
|
90
97
|
# Breaks out of the run loop.
|
91
98
|
def stop
|
92
|
-
|
99
|
+
log "Stopping #{self.class} on port #{@rtp_port}..."
|
93
100
|
@run = false
|
94
|
-
|
101
|
+
|
102
|
+
until !running?
|
103
|
+
sleep 0.01
|
104
|
+
end
|
95
105
|
end
|
96
106
|
|
97
107
|
# Sets up to receive data on a UDP socket, using +@rtp_port+.
|
98
108
|
#
|
109
|
+
# @param [Fixnum] port Port number to listen for RTP data on.
|
99
110
|
# @return [UDPSocket]
|
100
|
-
def init_udp_server
|
101
|
-
|
102
|
-
|
103
|
-
|
111
|
+
def init_udp_server(port)
|
112
|
+
port_retries = 0
|
113
|
+
|
114
|
+
begin
|
115
|
+
server = UDPSocket.open
|
116
|
+
server.bind('0.0.0.0', port)
|
117
|
+
rescue Errno::EADDRINUSE
|
118
|
+
log "RTP port #{port} in use, trying #{port + 1}..."
|
119
|
+
port += 1
|
120
|
+
port_retries += 1
|
121
|
+
retry until port_retries == MAX_PORT_NUMBER_RETRIES + 1
|
122
|
+
port = 9000
|
123
|
+
raise
|
124
|
+
end
|
125
|
+
|
126
|
+
@rtp_port = port
|
127
|
+
log "UDP server setup to receive on port #{@rtp_port}"
|
104
128
|
|
105
129
|
server
|
106
130
|
end
|
107
131
|
|
108
132
|
# Sets up to receive data on a TCP socket, using +@rtp_port+.
|
109
133
|
#
|
134
|
+
# @param [Fixnum] port Port number to listen for RTP data on.
|
110
135
|
# @return [TCPSocket]
|
111
|
-
def init_tcp_server
|
112
|
-
|
113
|
-
|
136
|
+
def init_tcp_server(port)
|
137
|
+
port_retries = 0
|
138
|
+
|
139
|
+
begin
|
140
|
+
server = TCPServer.new(port)
|
141
|
+
rescue Errno::EADDRINUSE
|
142
|
+
log "RTP port #{port} in use, trying #{port + 1}..."
|
143
|
+
port += 1
|
144
|
+
port_retries += 1
|
145
|
+
retry until port_retries == MAX_PORT_NUMBER_RETRIES + 1
|
146
|
+
port = 9000
|
147
|
+
raise
|
148
|
+
end
|
149
|
+
|
150
|
+
@rtp_port = port
|
151
|
+
log "TCP server setup to receive on port #{@rtp_port}"
|
114
152
|
|
115
153
|
server
|
116
154
|
end
|
155
|
+
|
156
|
+
# PRIVATES!
|
157
|
+
private
|
158
|
+
|
159
|
+
# Quick wrapper for when not using RTSP::Client (i.e. during tests).
|
160
|
+
#
|
161
|
+
# @param [String] message The String to log.
|
162
|
+
def log(message)
|
163
|
+
if defined? RTSP::Client
|
164
|
+
RTSP::Client.log "<#{self.class}> #{message}"
|
165
|
+
end
|
166
|
+
end
|
117
167
|
end
|
118
168
|
end
|
data/lib/rtsp/client.rb
CHANGED
@@ -105,8 +105,11 @@ module RTSP
|
|
105
105
|
def initialize(server_url=nil)
|
106
106
|
Thread.abort_on_exception = true
|
107
107
|
|
108
|
-
Struct
|
108
|
+
unless defined? Struct::Connection
|
109
|
+
Struct.new("Connection", :server_url, :timeout, :socket,
|
109
110
|
:do_capture, :interleave)
|
111
|
+
end
|
112
|
+
|
110
113
|
@connection = Struct::Connection.new
|
111
114
|
@capturer = RTSP::Capturer.new
|
112
115
|
|
data/lib/rtsp/version.rb
CHANGED
@@ -0,0 +1,228 @@
|
|
1
|
+
require_relative '../spec_helper'
|
2
|
+
require 'rtsp/capturer'
|
3
|
+
|
4
|
+
Thread.abort_on_exception = true
|
5
|
+
|
6
|
+
def use_udp_ports(range)
|
7
|
+
sockets = []
|
8
|
+
|
9
|
+
range.each do |port|
|
10
|
+
begin
|
11
|
+
socket = UDPSocket.open
|
12
|
+
socket.bind('0.0.0.0', port)
|
13
|
+
sockets << socket
|
14
|
+
rescue Errno::EADDRINUSE
|
15
|
+
# That's ok
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
sockets
|
20
|
+
end
|
21
|
+
|
22
|
+
describe RTSP::Capturer do
|
23
|
+
before do
|
24
|
+
if defined? RTSP::Client
|
25
|
+
RTSP::Client.log = false
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
describe "#initialize" do
|
30
|
+
context "with default parameters" do
|
31
|
+
before { @capturer = RTSP::Capturer.new }
|
32
|
+
|
33
|
+
it "uses UDP" do
|
34
|
+
@capturer.instance_variable_get(:@transport_protocol).should == :UDP
|
35
|
+
end
|
36
|
+
|
37
|
+
it "uses port 9000" do
|
38
|
+
@capturer.instance_variable_get(:@rtp_port).should == 9000
|
39
|
+
end
|
40
|
+
|
41
|
+
it "creates a new Tempfile" do
|
42
|
+
@capturer.instance_variable_get(:@rtp_file).should be_a Tempfile
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
46
|
+
context "non-default parameters" do
|
47
|
+
it "can use TCP" do
|
48
|
+
capturer = RTSP::Capturer.new(:TCP)
|
49
|
+
capturer.instance_variable_get(:@transport_protocol).should == :TCP
|
50
|
+
end
|
51
|
+
|
52
|
+
it "can take another port" do
|
53
|
+
capturer = RTSP::Capturer.new(:UDP, 12345)
|
54
|
+
capturer.instance_variable_get(:@rtp_port).should == 12345
|
55
|
+
end
|
56
|
+
|
57
|
+
it "can take an IO object" do
|
58
|
+
fd = IO.sysopen("/dev/null", "w")
|
59
|
+
io = IO.new(fd, 'w')
|
60
|
+
capturer = RTSP::Capturer.new(:UDP, 12345, io)
|
61
|
+
capturer.instance_variable_get(:@rtp_file).should be_a IO
|
62
|
+
end
|
63
|
+
end
|
64
|
+
|
65
|
+
it "isn't running" do
|
66
|
+
RTSP::Capturer.new.should_not be_running
|
67
|
+
end
|
68
|
+
end
|
69
|
+
|
70
|
+
describe "#init_server" do
|
71
|
+
after :each do
|
72
|
+
@capturer.stop
|
73
|
+
end
|
74
|
+
|
75
|
+
it "creates a UDPSocket when initialized with :UDP" do
|
76
|
+
@capturer = RTSP::Capturer.new
|
77
|
+
@capturer.init_server(:UDP).should be_a UDPSocket
|
78
|
+
end
|
79
|
+
|
80
|
+
it "creates a TCPSocket when initialized with :TCP" do
|
81
|
+
TCPServer.new('0.0.0.0', 9000)
|
82
|
+
@capturer = RTSP::Capturer.new
|
83
|
+
@capturer.init_server(:TCP).should be_a TCPSocket
|
84
|
+
end
|
85
|
+
end
|
86
|
+
|
87
|
+
describe "#run" do
|
88
|
+
context "default capturer settings" do
|
89
|
+
before do
|
90
|
+
@capturer = RTSP::Capturer.new
|
91
|
+
@receiver_thread = Thread.start(@capturer) { |capturer| capturer.run }
|
92
|
+
|
93
|
+
@client = UDPSocket.open
|
94
|
+
@sender_thread = Thread.start(@client) do |client|
|
95
|
+
loop do
|
96
|
+
client.send "x", 0, 'localhost', @capturer.rtp_port
|
97
|
+
end
|
98
|
+
end
|
99
|
+
|
100
|
+
sleep 0.1
|
101
|
+
end
|
102
|
+
|
103
|
+
after do
|
104
|
+
@sender_thread.exit
|
105
|
+
@receiver_thread.exit
|
106
|
+
end
|
107
|
+
|
108
|
+
it "gets access to a UDPSocket via @server" do
|
109
|
+
@capturer.instance_variable_get(:@server).should be_a UDPSocket
|
110
|
+
end
|
111
|
+
|
112
|
+
it "sets @run to true" do
|
113
|
+
@capturer.instance_variable_get(:@run).should be_true
|
114
|
+
end
|
115
|
+
|
116
|
+
it "receives data and writes to @rtp_file" do
|
117
|
+
@capturer.rtp_file.size.should > 0
|
118
|
+
end
|
119
|
+
|
120
|
+
it "closes the @server after issuing a #stop" do
|
121
|
+
@capturer.instance_variable_get(:@server).should_not be_closed
|
122
|
+
@capturer.stop
|
123
|
+
sleep 0.1
|
124
|
+
@capturer.instance_variable_get(:@server).should be_closed
|
125
|
+
end
|
126
|
+
end
|
127
|
+
end
|
128
|
+
|
129
|
+
describe "#running?" do
|
130
|
+
before { @capturer = RTSP::Capturer.new }
|
131
|
+
|
132
|
+
it "returns false before issuing #run" do
|
133
|
+
@capturer.running?.should be_false
|
134
|
+
end
|
135
|
+
|
136
|
+
it "returns true after running" do
|
137
|
+
cap_thread = Thread.new(@capturer) { |capturer| capturer.run }
|
138
|
+
sleep 0.1
|
139
|
+
@capturer.running?.should be_true
|
140
|
+
cap_thread.exit
|
141
|
+
end
|
142
|
+
|
143
|
+
it "returns false after running, then stopping" do
|
144
|
+
cap_thread = Thread.new(@capturer) { |capturer| capturer.run }
|
145
|
+
sleep 0.1
|
146
|
+
@capturer.running?.should be_true
|
147
|
+
@capturer.stop
|
148
|
+
@capturer.running?.should be_false
|
149
|
+
cap_thread.exit
|
150
|
+
end
|
151
|
+
end
|
152
|
+
|
153
|
+
describe "#stop" do
|
154
|
+
before { @capturer = RTSP::Capturer.new }
|
155
|
+
|
156
|
+
context "not running yet" do
|
157
|
+
it "sets @run to false" do
|
158
|
+
@capturer.stop
|
159
|
+
@capturer.instance_variable_get(:@run).should == false
|
160
|
+
end
|
161
|
+
end
|
162
|
+
|
163
|
+
context "running" do
|
164
|
+
it "sets @run to false" do
|
165
|
+
Thread.new(@capturer) { |c| c.run }
|
166
|
+
sleep 0.1
|
167
|
+
@capturer.stop
|
168
|
+
@capturer.instance_variable_get(:@run).should == false
|
169
|
+
end
|
170
|
+
end
|
171
|
+
end
|
172
|
+
|
173
|
+
describe "#init_udp_server" do
|
174
|
+
after :each do
|
175
|
+
unless @sockets.nil?
|
176
|
+
@sockets.each { |s| s.close }
|
177
|
+
end
|
178
|
+
end
|
179
|
+
|
180
|
+
it "returns a UDPSocket" do
|
181
|
+
capturer = RTSP::Capturer.new
|
182
|
+
server = capturer.init_udp_server(capturer.rtp_port)
|
183
|
+
server.should be_a UDPSocket
|
184
|
+
end
|
185
|
+
|
186
|
+
it "retries MAX_PORT_NUMBER_RETRIES to get a port" do
|
187
|
+
@sockets = use_udp_ports 9000...(9000 + RTSP::Capturer::MAX_PORT_NUMBER_RETRIES)
|
188
|
+
#@sockets.each { |s| puts "meow: #{s.addr[1]}" }
|
189
|
+
|
190
|
+
capturer = RTSP::Capturer.new
|
191
|
+
capturer.init_udp_server(capturer.rtp_port)
|
192
|
+
capturer.rtp_port.should == 9000 + RTSP::Capturer::MAX_PORT_NUMBER_RETRIES
|
193
|
+
end
|
194
|
+
|
195
|
+
context "when no available ports, it retries MAX_PORT_NUMBER_RETRIES times, then" do
|
196
|
+
before do
|
197
|
+
@sockets = use_udp_ports 9000..(9000 + RTSP::Capturer::MAX_PORT_NUMBER_RETRIES)
|
198
|
+
|
199
|
+
@capturer = RTSP::Capturer.new
|
200
|
+
end
|
201
|
+
|
202
|
+
it "retries MAX_PORT_NUMBER_RETRIES times then raises" do
|
203
|
+
expect { @capturer.init_udp_server(@capturer.rtp_port) }.to raise_error Errno::EADDRINUSE
|
204
|
+
end
|
205
|
+
|
206
|
+
it "sets @rtp_port back to 9000 after trying all" do
|
207
|
+
expect { @capturer.init_udp_server(@capturer.rtp_port) }.to raise_error Errno::EADDRINUSE
|
208
|
+
@capturer.rtp_port.should == 9000
|
209
|
+
end
|
210
|
+
end
|
211
|
+
end
|
212
|
+
|
213
|
+
describe "#init_tcp_server" do
|
214
|
+
before do
|
215
|
+
@capturer = RTSP::Capturer.new(:TCP)
|
216
|
+
@server = @capturer.init_tcp_server(@capturer.rtp_port)
|
217
|
+
end
|
218
|
+
|
219
|
+
it "returns a TCPSocket" do
|
220
|
+
@server.should be_a TCPSocket
|
221
|
+
end
|
222
|
+
|
223
|
+
it "uses port a port between 9000 and 9000 + MAX_PORT_NUMBER_RETRIES" do
|
224
|
+
@capturer.rtp_port.should >= 9000
|
225
|
+
@capturer.rtp_port.should <= 9000 + RTSP::Capturer::MAX_PORT_NUMBER_RETRIES
|
226
|
+
end
|
227
|
+
end
|
228
|
+
end
|
data/spec/rtsp/client_spec.rb
CHANGED
data/spec/rtsp/message_spec.rb
CHANGED
@@ -10,11 +10,11 @@ describe "RTSP::Message" do
|
|
10
10
|
it "raises if the header type isn't a Symbol" do
|
11
11
|
message = RTSP::Message.options(@stream)
|
12
12
|
lambda { message.header "hi", "everyone"
|
13
|
-
|
13
|
+
}.should raise_error RTSP::Error
|
14
14
|
end
|
15
15
|
|
16
|
-
|
17
|
-
|
16
|
+
RTSP::Message.instance_variable_get(:@message_types).each do |method|
|
17
|
+
it "adds a User-Agent header to the #{method} method" do
|
18
18
|
message = RTSP::Message.send(method, @stream)
|
19
19
|
message.to_s.should include "User-Agent: RubyRTSP/"
|
20
20
|
end
|
@@ -56,7 +56,7 @@ describe "RTSP::Message" do
|
|
56
56
|
it "with new sequence and accept values" do
|
57
57
|
message = RTSP::Message.describe(@stream).with_headers({
|
58
58
|
accept: 'application/sdp, application/rtsl',
|
59
|
-
cseq:
|
59
|
+
cseq: 2345 })
|
60
60
|
|
61
61
|
message.to_s.should match /^DESCRIBE rtsp:/
|
62
62
|
message.to_s.should include "DESCRIBE rtsp://1.2.3.4:554/stream1 RTSP/1.0\r\n"
|
@@ -81,7 +81,7 @@ describe "RTSP::Message" do
|
|
81
81
|
it "with passed-in session and content type but no body" do
|
82
82
|
message = RTSP::Message.announce(@stream).with_headers({
|
83
83
|
session: 123456789,
|
84
|
-
content_type: 'application/sdp, application/rtsl'})
|
84
|
+
content_type: 'application/sdp, application/rtsl' })
|
85
85
|
|
86
86
|
message.to_s.should match /^ANNOUNCE rtsp:/
|
87
87
|
message.to_s.should include "ANNOUNCE rtsp://1.2.3.4:554/stream1 RTSP/1.0\r\n"
|
@@ -95,7 +95,7 @@ describe "RTSP::Message" do
|
|
95
95
|
message = RTSP::Message.announce(@stream).with_headers({
|
96
96
|
session: 123456789,
|
97
97
|
content_type: 'application/sdp, application/rtsl',
|
98
|
-
cseq: 2345})
|
98
|
+
cseq: 2345 })
|
99
99
|
|
100
100
|
message.to_s.should match /^ANNOUNCE rtsp:/
|
101
101
|
message.to_s.should include "ANNOUNCE rtsp://1.2.3.4:554/stream1 RTSP/1.0\r\n"
|
@@ -347,7 +347,7 @@ describe "RTSP::Message" do
|
|
347
347
|
context "#to_s turns a Hash into an String of header strings" do
|
348
348
|
it "single header, non-hyphenated name, hash value" do
|
349
349
|
message = RTSP::Message.play(@stream).with_headers({
|
350
|
-
|
350
|
+
range: { npt: "0.000-" }
|
351
351
|
})
|
352
352
|
|
353
353
|
string = message.to_s
|
@@ -357,7 +357,7 @@ describe "RTSP::Message" do
|
|
357
357
|
|
358
358
|
it "single header, hyphenated, non-hash value" do
|
359
359
|
message = RTSP::Message.play(@stream).with_headers({
|
360
|
-
|
360
|
+
:if_modified_since => "Sat, 29 Oct 1994 19:43:31 GMT"
|
361
361
|
})
|
362
362
|
|
363
363
|
string = message.to_s
|
@@ -367,8 +367,8 @@ describe "RTSP::Message" do
|
|
367
367
|
|
368
368
|
it "two headers, mixed hyphenated, array & hash values" do
|
369
369
|
message = RTSP::Message.redirect(@stream).with_headers({
|
370
|
-
|
371
|
-
|
370
|
+
:cache_control => ["no-cache", { :max_age => 12345 }],
|
371
|
+
:content_type => ['application/sdp', 'application/x-rtsp-mh']
|
372
372
|
})
|
373
373
|
|
374
374
|
string = message.to_s
|
data/spec/rtsp_spec.rb
CHANGED
data/spec/spec_helper.rb
CHANGED
@@ -68,3 +68,14 @@ Server: DSS/5.5 (Build/489.7; Platform/Linux; Release/Darwin; )\r\n
|
|
68
68
|
Cseq: \r\n
|
69
69
|
Connection: Close\r\n
|
70
70
|
\r\n}
|
71
|
+
|
72
|
+
|
73
|
+
# Define #describe so when RTSP::Message calls #method_missing, RSpec doesn't
|
74
|
+
# get in the way (and cause tests to fail).
|
75
|
+
module RTSP
|
76
|
+
class Message
|
77
|
+
def self.describe request_uri
|
78
|
+
self.new(:describe, request_uri)
|
79
|
+
end
|
80
|
+
end
|
81
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rtsp
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -11,9 +11,20 @@ bindir: bin
|
|
11
11
|
cert_chain: []
|
12
12
|
date: 2011-04-14 00:00:00.000000000Z
|
13
13
|
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
15
|
+
name: sdp
|
16
|
+
requirement: &70295097540840 !ruby/object:Gem::Requirement
|
17
|
+
none: false
|
18
|
+
requirements:
|
19
|
+
- - ~>
|
20
|
+
- !ruby/object:Gem::Version
|
21
|
+
version: 0.2.2
|
22
|
+
type: :runtime
|
23
|
+
prerelease: false
|
24
|
+
version_requirements: *70295097540840
|
14
25
|
- !ruby/object:Gem::Dependency
|
15
26
|
name: bundler
|
16
|
-
requirement: &
|
27
|
+
requirement: &70295097539860 !ruby/object:Gem::Requirement
|
17
28
|
none: false
|
18
29
|
requirements:
|
19
30
|
- - ~>
|
@@ -21,10 +32,10 @@ dependencies:
|
|
21
32
|
version: 1.0.0
|
22
33
|
type: :development
|
23
34
|
prerelease: false
|
24
|
-
version_requirements: *
|
35
|
+
version_requirements: *70295097539860
|
25
36
|
- !ruby/object:Gem::Dependency
|
26
37
|
name: code_statistics
|
27
|
-
requirement: &
|
38
|
+
requirement: &70295097539280 !ruby/object:Gem::Requirement
|
28
39
|
none: false
|
29
40
|
requirements:
|
30
41
|
- - ~>
|
@@ -32,10 +43,10 @@ dependencies:
|
|
32
43
|
version: 0.2.13
|
33
44
|
type: :development
|
34
45
|
prerelease: false
|
35
|
-
version_requirements: *
|
46
|
+
version_requirements: *70295097539280
|
36
47
|
- !ruby/object:Gem::Dependency
|
37
48
|
name: metric_fu
|
38
|
-
requirement: &
|
49
|
+
requirement: &70295097538660 !ruby/object:Gem::Requirement
|
39
50
|
none: false
|
40
51
|
requirements:
|
41
52
|
- - ! '>='
|
@@ -43,65 +54,21 @@ dependencies:
|
|
43
54
|
version: 2.0.0
|
44
55
|
type: :development
|
45
56
|
prerelease: false
|
46
|
-
version_requirements: *
|
47
|
-
- !ruby/object:Gem::Dependency
|
48
|
-
name: ore
|
49
|
-
requirement: &2156797700 !ruby/object:Gem::Requirement
|
50
|
-
none: false
|
51
|
-
requirements:
|
52
|
-
- - ~>
|
53
|
-
- !ruby/object:Gem::Version
|
54
|
-
version: 0.7.2
|
55
|
-
type: :development
|
56
|
-
prerelease: false
|
57
|
-
version_requirements: *2156797700
|
58
|
-
- !ruby/object:Gem::Dependency
|
59
|
-
name: ore-core
|
60
|
-
requirement: &2156797060 !ruby/object:Gem::Requirement
|
61
|
-
none: false
|
62
|
-
requirements:
|
63
|
-
- - ~>
|
64
|
-
- !ruby/object:Gem::Version
|
65
|
-
version: 0.1.5
|
66
|
-
type: :development
|
67
|
-
prerelease: false
|
68
|
-
version_requirements: *2156797060
|
69
|
-
- !ruby/object:Gem::Dependency
|
70
|
-
name: ore-tasks
|
71
|
-
requirement: &2156796360 !ruby/object:Gem::Requirement
|
72
|
-
none: false
|
73
|
-
requirements:
|
74
|
-
- - ~>
|
75
|
-
- !ruby/object:Gem::Version
|
76
|
-
version: 0.5.0
|
77
|
-
type: :development
|
78
|
-
prerelease: false
|
79
|
-
version_requirements: *2156796360
|
80
|
-
- !ruby/object:Gem::Dependency
|
81
|
-
name: rake
|
82
|
-
requirement: &2156795580 !ruby/object:Gem::Requirement
|
83
|
-
none: false
|
84
|
-
requirements:
|
85
|
-
- - ~>
|
86
|
-
- !ruby/object:Gem::Version
|
87
|
-
version: 0.8.7
|
88
|
-
type: :development
|
89
|
-
prerelease: false
|
90
|
-
version_requirements: *2156795580
|
57
|
+
version_requirements: *70295097538660
|
91
58
|
- !ruby/object:Gem::Dependency
|
92
59
|
name: rspec
|
93
|
-
requirement: &
|
60
|
+
requirement: &70295097537880 !ruby/object:Gem::Requirement
|
94
61
|
none: false
|
95
62
|
requirements:
|
96
|
-
- -
|
63
|
+
- - ! '>='
|
97
64
|
- !ruby/object:Gem::Version
|
98
65
|
version: 2.5.0
|
99
66
|
type: :development
|
100
67
|
prerelease: false
|
101
|
-
version_requirements: *
|
68
|
+
version_requirements: *70295097537880
|
102
69
|
- !ruby/object:Gem::Dependency
|
103
70
|
name: simplecov
|
104
|
-
requirement: &
|
71
|
+
requirement: &70295097537360 !ruby/object:Gem::Requirement
|
105
72
|
none: false
|
106
73
|
requirements:
|
107
74
|
- - ! '>='
|
@@ -109,36 +76,25 @@ dependencies:
|
|
109
76
|
version: 0.4.0
|
110
77
|
type: :development
|
111
78
|
prerelease: false
|
112
|
-
version_requirements: *
|
79
|
+
version_requirements: *70295097537360
|
113
80
|
- !ruby/object:Gem::Dependency
|
114
81
|
name: yard
|
115
|
-
requirement: &
|
82
|
+
requirement: &70295097536880 !ruby/object:Gem::Requirement
|
116
83
|
none: false
|
117
84
|
requirements:
|
118
|
-
- -
|
85
|
+
- - ! '>='
|
119
86
|
- !ruby/object:Gem::Version
|
120
87
|
version: 0.6.0
|
121
88
|
type: :development
|
122
89
|
prerelease: false
|
123
|
-
version_requirements: *
|
124
|
-
|
125
|
-
|
126
|
-
|
127
|
-
none: false
|
128
|
-
requirements:
|
129
|
-
- - ~>
|
130
|
-
- !ruby/object:Gem::Version
|
131
|
-
version: 0.2.2
|
132
|
-
type: :runtime
|
133
|
-
prerelease: false
|
134
|
-
version_requirements: *2156792700
|
135
|
-
description: ! 'This library intends to follow the RTSP RFC document (2326) to allow
|
136
|
-
for working with RTSP servers. At this point, it''s up to you to parse the data
|
137
|
-
from a play call, but we''ll get there. ...eventually.
|
90
|
+
version_requirements: *70295097536880
|
91
|
+
description: ! 'This library intends to follow the RTSP RFC document (2326)
|
92
|
+
|
93
|
+
to allow for working with RTSP servers. At this point, it''s up to you to parse
|
138
94
|
|
139
|
-
|
95
|
+
the data from a play call, but we''ll get there. ...eventually.
|
140
96
|
|
141
|
-
|
97
|
+
For more information see: http://www.ietf.org/rfc/rfc2326.txt'
|
142
98
|
email:
|
143
99
|
- steve.loveless@gmail.com, mkiby@gmail.com
|
144
100
|
executables:
|
@@ -149,27 +105,7 @@ extra_rdoc_files:
|
|
149
105
|
- LICENSE.rdoc
|
150
106
|
- README.rdoc
|
151
107
|
files:
|
152
|
-
- .document
|
153
|
-
- .infinity_test
|
154
|
-
- .rspec
|
155
|
-
- .yardopts
|
156
|
-
- ChangeLog.rdoc
|
157
|
-
- Gemfile
|
158
|
-
- Gemfile.lock
|
159
|
-
- LICENSE.rdoc
|
160
|
-
- README.rdoc
|
161
|
-
- Rakefile
|
162
|
-
- bin/rtsp_client
|
163
|
-
- features/client_changes_state.feature
|
164
|
-
- features/client_requests.feature
|
165
|
-
- features/control_streams_as_client.feature
|
166
|
-
- features/step_definitions/client_changes_state_steps.rb
|
167
|
-
- features/step_definitions/client_requests_steps.rb
|
168
|
-
- features/step_definitions/control_streams_as_client_steps.rb
|
169
|
-
- features/support/env.rb
|
170
|
-
- features/support/hooks.rb
|
171
108
|
- lib/ext/logger.rb
|
172
|
-
- lib/rtsp.rb
|
173
109
|
- lib/rtsp/capturer.rb
|
174
110
|
- lib/rtsp/client.rb
|
175
111
|
- lib/rtsp/error.rb
|
@@ -179,8 +115,18 @@ files:
|
|
179
115
|
- lib/rtsp/response.rb
|
180
116
|
- lib/rtsp/transport_parser.rb
|
181
117
|
- lib/rtsp/version.rb
|
182
|
-
- rtsp.
|
183
|
-
-
|
118
|
+
- lib/rtsp.rb
|
119
|
+
- bin/rtsp_client
|
120
|
+
- tasks/metrics.rake
|
121
|
+
- tasks/roodi_config.yml
|
122
|
+
- tasks/stats.rake
|
123
|
+
- .gemtest
|
124
|
+
- Gemfile
|
125
|
+
- ChangeLog.rdoc
|
126
|
+
- LICENSE.rdoc
|
127
|
+
- README.rdoc
|
128
|
+
- Rakefile
|
129
|
+
- spec/rtsp/capturer_spec.rb
|
184
130
|
- spec/rtsp/client_spec.rb
|
185
131
|
- spec/rtsp/helpers_spec.rb
|
186
132
|
- spec/rtsp/message_spec.rb
|
@@ -189,9 +135,14 @@ files:
|
|
189
135
|
- spec/rtsp_spec.rb
|
190
136
|
- spec/spec_helper.rb
|
191
137
|
- spec/support/fake_rtsp_server.rb
|
192
|
-
-
|
193
|
-
-
|
194
|
-
-
|
138
|
+
- features/client_changes_state.feature
|
139
|
+
- features/client_requests.feature
|
140
|
+
- features/control_streams_as_client.feature
|
141
|
+
- features/step_definitions/client_changes_state_steps.rb
|
142
|
+
- features/step_definitions/client_requests_steps.rb
|
143
|
+
- features/step_definitions/control_streams_as_client_steps.rb
|
144
|
+
- features/support/env.rb
|
145
|
+
- features/support/hooks.rb
|
195
146
|
homepage: http://rubygems.org/gems/rtsp
|
196
147
|
licenses:
|
197
148
|
- MIT
|
@@ -213,16 +164,25 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
213
164
|
version: 1.3.6
|
214
165
|
requirements: []
|
215
166
|
rubyforge_project: rtsp
|
216
|
-
rubygems_version: 1.
|
167
|
+
rubygems_version: 1.8.10
|
217
168
|
signing_key:
|
218
169
|
specification_version: 3
|
219
170
|
summary: Library to allow RTSP streaming from RTSP-enabled devices.
|
220
171
|
test_files:
|
221
|
-
- spec/
|
172
|
+
- spec/rtsp/capturer_spec.rb
|
222
173
|
- spec/rtsp/client_spec.rb
|
223
174
|
- spec/rtsp/helpers_spec.rb
|
224
175
|
- spec/rtsp/message_spec.rb
|
225
176
|
- spec/rtsp/response_spec.rb
|
226
177
|
- spec/rtsp/transport_parser_spec.rb
|
227
178
|
- spec/rtsp_spec.rb
|
228
|
-
|
179
|
+
- spec/spec_helper.rb
|
180
|
+
- spec/support/fake_rtsp_server.rb
|
181
|
+
- features/client_changes_state.feature
|
182
|
+
- features/client_requests.feature
|
183
|
+
- features/control_streams_as_client.feature
|
184
|
+
- features/step_definitions/client_changes_state_steps.rb
|
185
|
+
- features/step_definitions/client_requests_steps.rb
|
186
|
+
- features/step_definitions/control_streams_as_client_steps.rb
|
187
|
+
- features/support/env.rb
|
188
|
+
- features/support/hooks.rb
|
data/.document
DELETED
data/.infinity_test
DELETED
data/.rspec
DELETED
data/.yardopts
DELETED
data/Gemfile.lock
DELETED
@@ -1,134 +0,0 @@
|
|
1
|
-
PATH
|
2
|
-
remote: .
|
3
|
-
specs:
|
4
|
-
rtsp (0.1.2)
|
5
|
-
sdp (~> 0.2.2)
|
6
|
-
|
7
|
-
GEM
|
8
|
-
remote: http://rubygems.org/
|
9
|
-
specs:
|
10
|
-
Saikuro (1.1.0)
|
11
|
-
abstract (1.0.0)
|
12
|
-
activesupport (3.0.6)
|
13
|
-
arrayfields (4.7.4)
|
14
|
-
blankslate (2.1.2.4)
|
15
|
-
builder (3.0.0)
|
16
|
-
chronic (0.3.0)
|
17
|
-
churn (0.0.13)
|
18
|
-
chronic (>= 0.2.3)
|
19
|
-
hirb
|
20
|
-
json_pure
|
21
|
-
main
|
22
|
-
ruby_parser (~> 2.0.4)
|
23
|
-
sexp_processor (~> 3.0.3)
|
24
|
-
code_statistics (0.2.13)
|
25
|
-
colored (1.2)
|
26
|
-
cucumber (0.10.2)
|
27
|
-
builder (>= 2.1.2)
|
28
|
-
diff-lcs (>= 1.1.2)
|
29
|
-
gherkin (>= 2.3.5)
|
30
|
-
json (>= 1.4.6)
|
31
|
-
term-ansicolor (>= 1.0.5)
|
32
|
-
diff-lcs (1.1.2)
|
33
|
-
erubis (2.6.6)
|
34
|
-
abstract (>= 1.0.0)
|
35
|
-
fattr (2.2.0)
|
36
|
-
flay (1.4.2)
|
37
|
-
ruby_parser (~> 2.0)
|
38
|
-
sexp_processor (~> 3.0)
|
39
|
-
flog (2.5.1)
|
40
|
-
ruby_parser (~> 2.0)
|
41
|
-
sexp_processor (~> 3.0)
|
42
|
-
gherkin (2.3.5)
|
43
|
-
json (>= 1.4.6)
|
44
|
-
gherkin (2.3.5-java)
|
45
|
-
json (>= 1.4.6)
|
46
|
-
haml (3.0.25)
|
47
|
-
hirb (0.4.3)
|
48
|
-
i18n (0.5.0)
|
49
|
-
json (1.5.1)
|
50
|
-
json (1.5.1-java)
|
51
|
-
json_pure (1.5.1)
|
52
|
-
main (4.4.0)
|
53
|
-
arrayfields (>= 4.7.4)
|
54
|
-
fattr (>= 2.1.0)
|
55
|
-
metric_fu (2.1.1)
|
56
|
-
Saikuro (>= 1.1.0)
|
57
|
-
activesupport (>= 2.0.0)
|
58
|
-
chronic (~> 0.3.0)
|
59
|
-
churn (>= 0.0.7)
|
60
|
-
flay (>= 1.2.1)
|
61
|
-
flog (>= 2.3.0)
|
62
|
-
rails_best_practices (>= 0.6.4)
|
63
|
-
rcov (>= 0.8.3.3)
|
64
|
-
reek (>= 1.2.6)
|
65
|
-
roodi (>= 2.1.0)
|
66
|
-
syntax
|
67
|
-
ore (0.7.2)
|
68
|
-
ore-core (>= 0.1.4, ~> 0.1)
|
69
|
-
thor (~> 0.14.3)
|
70
|
-
ore-core (0.1.5)
|
71
|
-
ore-tasks (0.5.0)
|
72
|
-
ore-core (>= 0.1.3, ~> 0.1)
|
73
|
-
parslet (1.1.1)
|
74
|
-
blankslate (~> 2.0)
|
75
|
-
rails_best_practices (0.7.5)
|
76
|
-
activesupport
|
77
|
-
colored (~> 1.2)
|
78
|
-
erubis (~> 2.6.6)
|
79
|
-
haml (~> 3.0.18)
|
80
|
-
i18n
|
81
|
-
ruby-progressbar (~> 0.0.9)
|
82
|
-
ruby_parser (~> 2.0.4)
|
83
|
-
rake (0.8.7)
|
84
|
-
rcov (0.9.9)
|
85
|
-
rcov (0.9.9-java)
|
86
|
-
reek (1.2.8)
|
87
|
-
ruby2ruby (~> 1.2)
|
88
|
-
ruby_parser (~> 2.0)
|
89
|
-
sexp_processor (~> 3.0)
|
90
|
-
roodi (2.1.0)
|
91
|
-
ruby_parser
|
92
|
-
rspec (2.5.0)
|
93
|
-
rspec-core (~> 2.5.0)
|
94
|
-
rspec-expectations (~> 2.5.0)
|
95
|
-
rspec-mocks (~> 2.5.0)
|
96
|
-
rspec-core (2.5.1)
|
97
|
-
rspec-expectations (2.5.0)
|
98
|
-
diff-lcs (~> 1.1.2)
|
99
|
-
rspec-mocks (2.5.0)
|
100
|
-
ruby-progressbar (0.0.9)
|
101
|
-
ruby2ruby (1.2.5)
|
102
|
-
ruby_parser (~> 2.0)
|
103
|
-
sexp_processor (~> 3.0)
|
104
|
-
ruby_parser (2.0.6)
|
105
|
-
sexp_processor (~> 3.0)
|
106
|
-
sdp (0.2.2)
|
107
|
-
parslet (~> 1.1.0)
|
108
|
-
sexp_processor (3.0.5)
|
109
|
-
simplecov (0.4.2)
|
110
|
-
simplecov-html (~> 0.4.4)
|
111
|
-
simplecov-html (0.4.4)
|
112
|
-
syntax (1.0.0)
|
113
|
-
term-ansicolor (1.0.5)
|
114
|
-
thor (0.14.6)
|
115
|
-
yard (0.6.8)
|
116
|
-
|
117
|
-
PLATFORMS
|
118
|
-
java
|
119
|
-
ruby
|
120
|
-
|
121
|
-
DEPENDENCIES
|
122
|
-
bundler (~> 1.0.0)
|
123
|
-
code_statistics (~> 0.2.13)
|
124
|
-
cucumber
|
125
|
-
metric_fu (>= 2.0.0)
|
126
|
-
ore (~> 0.7.2)
|
127
|
-
ore-core (~> 0.1.5)
|
128
|
-
ore-tasks (~> 0.5.0)
|
129
|
-
rake (~> 0.8.7)
|
130
|
-
rspec (~> 2.5.0)
|
131
|
-
rtsp!
|
132
|
-
sdp (~> 0.2.2)
|
133
|
-
simplecov (>= 0.4.0)
|
134
|
-
yard (~> 0.6.0)
|
data/rtsp.gemspec
DELETED
@@ -1,127 +0,0 @@
|
|
1
|
-
# -*- encoding: utf-8 -*-
|
2
|
-
lib = File.expand_path('lib/', File.dirname(__FILE__))
|
3
|
-
$:.unshift lib unless $:.include?(lib)
|
4
|
-
|
5
|
-
require 'rtsp/version'
|
6
|
-
|
7
|
-
Gem::Specification.new do |s|
|
8
|
-
s.name = "rtsp"
|
9
|
-
s.version = RTSP::VERSION
|
10
|
-
|
11
|
-
s.required_rubygems_version = Gem::Requirement.new(">= 1.3.6") if s.respond_to? :required_rubygems_version=
|
12
|
-
s.authors = ["Steve Loveless, Mike Kirby"]
|
13
|
-
s.date = %q{2011-04-14}
|
14
|
-
s.description = %q{This library intends to follow the RTSP RFC document (2326) to allow for working with RTSP servers. At this point, it's up to you to parse the data from a play call, but we'll get there. ...eventually.
|
15
|
-
For more information
|
16
|
-
RTSP: http://www.ietf.org/rfc/rfc2326.txt}
|
17
|
-
s.email = ["steve.loveless@gmail.com, mkiby@gmail.com"]
|
18
|
-
s.executables = ["rtsp_client"]
|
19
|
-
s.extra_rdoc_files = [
|
20
|
-
"ChangeLog.rdoc",
|
21
|
-
"LICENSE.rdoc",
|
22
|
-
"README.rdoc"
|
23
|
-
]
|
24
|
-
s.files = [
|
25
|
-
".document",
|
26
|
-
".infinity_test",
|
27
|
-
".rspec",
|
28
|
-
".yardopts",
|
29
|
-
"ChangeLog.rdoc",
|
30
|
-
"Gemfile",
|
31
|
-
"Gemfile.lock",
|
32
|
-
"LICENSE.rdoc",
|
33
|
-
"README.rdoc",
|
34
|
-
"Rakefile",
|
35
|
-
"bin/rtsp_client",
|
36
|
-
"features/client_changes_state.feature",
|
37
|
-
"features/client_requests.feature",
|
38
|
-
"features/control_streams_as_client.feature",
|
39
|
-
"features/step_definitions/client_changes_state_steps.rb",
|
40
|
-
"features/step_definitions/client_requests_steps.rb",
|
41
|
-
"features/step_definitions/control_streams_as_client_steps.rb",
|
42
|
-
"features/support/env.rb",
|
43
|
-
"features/support/hooks.rb",
|
44
|
-
"lib/ext/logger.rb",
|
45
|
-
"lib/rtsp.rb",
|
46
|
-
"lib/rtsp/capturer.rb",
|
47
|
-
"lib/rtsp/client.rb",
|
48
|
-
"lib/rtsp/error.rb",
|
49
|
-
"lib/rtsp/global.rb",
|
50
|
-
"lib/rtsp/helpers.rb",
|
51
|
-
"lib/rtsp/message.rb",
|
52
|
-
"lib/rtsp/response.rb",
|
53
|
-
"lib/rtsp/transport_parser.rb",
|
54
|
-
"lib/rtsp/version.rb",
|
55
|
-
"rtsp.gemspec",
|
56
|
-
"spec/.rspec",
|
57
|
-
"spec/rtsp/client_spec.rb",
|
58
|
-
"spec/rtsp/helpers_spec.rb",
|
59
|
-
"spec/rtsp/message_spec.rb",
|
60
|
-
"spec/rtsp/response_spec.rb",
|
61
|
-
"spec/rtsp/transport_parser_spec.rb",
|
62
|
-
"spec/rtsp_spec.rb",
|
63
|
-
"spec/spec_helper.rb",
|
64
|
-
"spec/support/fake_rtsp_server.rb",
|
65
|
-
"tasks/metrics.rake",
|
66
|
-
"tasks/roodi_config.yml",
|
67
|
-
"tasks/stats.rake"
|
68
|
-
]
|
69
|
-
s.homepage = %q{http://rubygems.org/gems/rtsp}
|
70
|
-
s.licenses = ["MIT"]
|
71
|
-
s.require_paths = ["lib"]
|
72
|
-
s.rubyforge_project = %q{rtsp}
|
73
|
-
s.rubygems_version = %q{1.7.2}
|
74
|
-
s.summary = %q{Library to allow RTSP streaming from RTSP-enabled devices.}
|
75
|
-
s.test_files = [
|
76
|
-
"spec/rtsp_spec.rb",
|
77
|
-
"spec/rtsp/client_spec.rb",
|
78
|
-
"spec/rtsp/helpers_spec.rb",
|
79
|
-
"spec/rtsp/message_spec.rb",
|
80
|
-
"spec/rtsp/response_spec.rb",
|
81
|
-
"spec/rtsp/transport_parser_spec.rb",
|
82
|
-
"spec/rtsp_spec.rb"
|
83
|
-
]
|
84
|
-
|
85
|
-
if s.respond_to? :specification_version then
|
86
|
-
s.specification_version = 3
|
87
|
-
|
88
|
-
if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
|
89
|
-
s.add_development_dependency(%q<bundler>, ["~> 1.0.0"])
|
90
|
-
s.add_development_dependency(%q<code_statistics>, ["~> 0.2.13"])
|
91
|
-
s.add_development_dependency(%q<metric_fu>, [">= 2.0.0"])
|
92
|
-
s.add_development_dependency(%q<ore>, ["~> 0.7.2"])
|
93
|
-
s.add_development_dependency(%q<ore-core>, ["~> 0.1.5"])
|
94
|
-
s.add_development_dependency(%q<ore-tasks>, ["~> 0.5.0"])
|
95
|
-
s.add_development_dependency(%q<rake>, ["~> 0.8.7"])
|
96
|
-
s.add_development_dependency(%q<rspec>, ["~> 2.5.0"])
|
97
|
-
s.add_development_dependency(%q<simplecov>, [">= 0.4.0"])
|
98
|
-
s.add_development_dependency(%q<yard>, ["~> 0.6.0"])
|
99
|
-
s.add_runtime_dependency(%q<sdp>, ["~> 0.2.2"])
|
100
|
-
else
|
101
|
-
s.add_dependency(%q<bundler>, ["~> 1.0.0"])
|
102
|
-
s.add_dependency(%q<code_statistics>, ["~> 0.2.13"])
|
103
|
-
s.add_dependency(%q<metric_fu>, [">= 2.0.0"])
|
104
|
-
s.add_dependency(%q<ore>, ["~> 0.7.2"])
|
105
|
-
s.add_dependency(%q<ore-core>, ["~> 0.1.5"])
|
106
|
-
s.add_dependency(%q<ore-tasks>, ["~> 0.5.0"])
|
107
|
-
s.add_dependency(%q<rake>, ["~> 0.8.7"])
|
108
|
-
s.add_dependency(%q<rspec>, ["~> 2.5.0"])
|
109
|
-
s.add_dependency(%q<simplecov>, [">= 0.4.0"])
|
110
|
-
s.add_dependency(%q<yard>, ["~> 0.6.0"])
|
111
|
-
s.add_dependency(%q<sdp>, ["~> 0.2.2"])
|
112
|
-
end
|
113
|
-
else
|
114
|
-
s.add_dependency(%q<bundler>, ["~> 1.0.0"])
|
115
|
-
s.add_dependency(%q<code_statistics>, ["~> 0.2.13"])
|
116
|
-
s.add_dependency(%q<metric_fu>, [">= 2.0.0"])
|
117
|
-
s.add_dependency(%q<ore>, ["~> 0.7.2"])
|
118
|
-
s.add_dependency(%q<ore-core>, ["~> 0.1.5"])
|
119
|
-
s.add_dependency(%q<ore-tasks>, ["~> 0.5.0"])
|
120
|
-
s.add_dependency(%q<rake>, ["~> 0.8.7"])
|
121
|
-
s.add_dependency(%q<rspec>, ["~> 2.5.0"])
|
122
|
-
s.add_dependency(%q<simplecov>, [">= 0.4.0"])
|
123
|
-
s.add_dependency(%q<yard>, ["~> 0.6.0"])
|
124
|
-
s.add_dependency(%q<sdp>, ["~> 0.2.2"])
|
125
|
-
end
|
126
|
-
end
|
127
|
-
|
data/spec/.rspec
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
--format documentation --color
|