raop-client 0.1.0 → 0.1.1
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/CHANGELOG.txt +6 -0
- data/examples/read_stdin.rb +2 -0
- data/lib/raop/client.rb +13 -4
- data/lib/raop/rtsp.rb +32 -3
- metadata +2 -2
data/CHANGELOG.txt
CHANGED
data/examples/read_stdin.rb
CHANGED
data/lib/raop/client.rb
CHANGED
@@ -4,7 +4,7 @@ require 'socket'
|
|
4
4
|
class Net::RAOP::Client
|
5
5
|
##
|
6
6
|
# The version of Net::RAOP::Client you're using
|
7
|
-
VERSION = '0.1.
|
7
|
+
VERSION = '0.1.1'
|
8
8
|
|
9
9
|
##
|
10
10
|
# Create a new Net::RAOP::Client to connect to +host+ Airport Express
|
@@ -55,8 +55,8 @@ class Net::RAOP::Client
|
|
55
55
|
##
|
56
56
|
# Set the +volume+ on the Airport Express. -144 is quiet, 0 is loud.
|
57
57
|
def volume=(volume)
|
58
|
-
volume =
|
59
|
-
raise ArgumentError if volume
|
58
|
+
volume = volume.abs
|
59
|
+
raise ArgumentError if volume > 144
|
60
60
|
params = Net::RTSP::SetParameter.new(@session_id,
|
61
61
|
{ :volume => "-#{volume}".to_i }
|
62
62
|
)
|
@@ -78,6 +78,15 @@ class Net::RAOP::Client
|
|
78
78
|
end
|
79
79
|
|
80
80
|
private
|
81
|
+
def flush
|
82
|
+
puts @seq
|
83
|
+
@rtsp_client.request(Net::RTSP::Flush.new(@session_id, @seq))
|
84
|
+
end
|
85
|
+
|
86
|
+
def options
|
87
|
+
@rtsp_client.request(Net::RTSP::Options.new)
|
88
|
+
end
|
89
|
+
|
81
90
|
@@data_cache = {}
|
82
91
|
def send_sample(sample, pos = 0, count = sample.length)
|
83
92
|
# FIXME do we really need +pos+ or +count+?
|
@@ -103,7 +112,7 @@ class Net::RAOP::Client
|
|
103
112
|
@aes_crypt.update(sample.slice(0, crypt_length)) +
|
104
113
|
sample.slice(crypt_length, sample.length)
|
105
114
|
|
106
|
-
@data_socket.
|
115
|
+
@data_socket.write(data)
|
107
116
|
end
|
108
117
|
|
109
118
|
def rsa_encrypt(plain_text)
|
data/lib/raop/rtsp.rb
CHANGED
@@ -105,9 +105,9 @@ module Net
|
|
105
105
|
end
|
106
106
|
|
107
107
|
private
|
108
|
-
def write_header(sock, client_id, cseq)
|
108
|
+
def write_header(sock, client_id, cseq, url = nil)
|
109
109
|
self['Content-Length'] = @body.length.to_s if @body
|
110
|
-
url
|
110
|
+
url ||= sprintf("rtsp://%s/%s", sock.io.addr.last, client_id)
|
111
111
|
buf = "#{@method} #{url} RTSP/1.0\r\n" +
|
112
112
|
"CSeq: #{cseq}\r\n"
|
113
113
|
each_capitalized do |k,v|
|
@@ -124,12 +124,40 @@ module Net
|
|
124
124
|
end
|
125
125
|
end
|
126
126
|
|
127
|
+
class GetParameter < RTSPGenericRequest
|
128
|
+
def initialize(session_id, parameters)
|
129
|
+
super('GET_PARAMETER')
|
130
|
+
self['Content-Type'] = 'text/parameters'
|
131
|
+
self['Session'] = session_id
|
132
|
+
@body = parameters.join("\r\n") + "\r\n"
|
133
|
+
end
|
134
|
+
end
|
135
|
+
|
136
|
+
class Options < RTSPGenericRequest
|
137
|
+
def initialize
|
138
|
+
super('OPTIONS')
|
139
|
+
end
|
140
|
+
|
141
|
+
private
|
142
|
+
def write_header(sock, client_id, cseq, url = nil)
|
143
|
+
super(sock, client_id, cseq, '*')
|
144
|
+
end
|
145
|
+
end
|
146
|
+
|
127
147
|
class Teardown < RTSPGenericRequest
|
128
148
|
def initialize
|
129
149
|
super('TEARDOWN')
|
130
150
|
end
|
131
151
|
end
|
132
152
|
|
153
|
+
class Flush < RTSPGenericRequest
|
154
|
+
def initialize(session_id, seq)
|
155
|
+
super('Flush')
|
156
|
+
self['Session'] = session_id
|
157
|
+
self['RTP-Info'] = "seq=0;rtptime=0"
|
158
|
+
end
|
159
|
+
end
|
160
|
+
|
133
161
|
class SetParameter < RTSPGenericRequest
|
134
162
|
def initialize(session_id, opts = {})
|
135
163
|
super('SET_PARAMETER')
|
@@ -146,7 +174,7 @@ module Net
|
|
146
174
|
def initialize(session_id)
|
147
175
|
super('RECORD')
|
148
176
|
self['Range'] = 'npt=0-'
|
149
|
-
self['RTP-Info'] =
|
177
|
+
self['RTP-Info'] = "seq=0;rtptime=0"
|
150
178
|
self['Session'] = session_id
|
151
179
|
end
|
152
180
|
end
|
@@ -167,6 +195,7 @@ module Net
|
|
167
195
|
self['Apple-Challenge'] = sac.gsub(/[=\s]/, '')
|
168
196
|
end
|
169
197
|
|
198
|
+
private
|
170
199
|
def write_header(sock, client_id, cseq)
|
171
200
|
@body = sprintf(
|
172
201
|
"v=0\r\n" +
|
metadata
CHANGED
@@ -3,8 +3,8 @@ rubygems_version: 0.9.0
|
|
3
3
|
specification_version: 1
|
4
4
|
name: raop-client
|
5
5
|
version: !ruby/object:Gem::Version
|
6
|
-
version: 0.1.
|
7
|
-
date: 2007-06-
|
6
|
+
version: 0.1.1
|
7
|
+
date: 2007-06-17 00:00:00 -07:00
|
8
8
|
summary: Airport Express streaming music client
|
9
9
|
require_paths:
|
10
10
|
- lib
|