rtsp 0.1.2 → 0.2.0
Sign up to get free protection for your applications and to get access to all the features.
- 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
|