airplay 0.2.9 → 1.0.0.beta1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (82) hide show
  1. data/Gemfile +5 -0
  2. data/Gemfile.lock +68 -0
  3. data/HUGS +15 -0
  4. data/LICENSE +20 -0
  5. data/README.md +50 -72
  6. data/Rakefile +6 -9
  7. data/SPEC.md +34 -0
  8. data/airplay.gemspec +28 -16
  9. data/bin/air +27 -0
  10. data/examples/demo.rb +35 -0
  11. data/examples/image.rb +9 -0
  12. data/examples/video.rb +24 -0
  13. data/lib/airplay.rb +38 -17
  14. data/lib/airplay/browser.rb +68 -0
  15. data/lib/airplay/cli.rb +104 -0
  16. data/lib/airplay/configuration.rb +29 -0
  17. data/lib/airplay/connection.rb +114 -0
  18. data/lib/airplay/connection/authentication.rb +37 -0
  19. data/lib/airplay/connection/persistent.rb +44 -0
  20. data/lib/airplay/device.rb +81 -0
  21. data/lib/airplay/device/features.rb +43 -0
  22. data/lib/airplay/device/info.rb +22 -0
  23. data/lib/airplay/devices.rb +46 -0
  24. data/lib/airplay/logger.rb +20 -0
  25. data/lib/airplay/playable.rb +24 -0
  26. data/lib/airplay/protocol.rb +9 -72
  27. data/lib/airplay/protocol/app.rb +52 -0
  28. data/lib/airplay/protocol/message.rb +8 -0
  29. data/lib/airplay/protocol/playback_info.rb +49 -0
  30. data/lib/airplay/protocol/player.rb +170 -0
  31. data/lib/airplay/protocol/reverse.rb +69 -0
  32. data/lib/airplay/protocol/slideshow.rb +66 -0
  33. data/lib/airplay/protocol/timers.rb +25 -0
  34. data/lib/airplay/protocol/viewer.rb +56 -0
  35. data/lib/airplay/structure.rb +7 -0
  36. data/lib/airplay/viewable.rb +16 -0
  37. data/test/fixtures/cassettes/airplay/listing_slideshow_features.yml +201 -0
  38. data/test/fixtures/cassettes/airplay/play_an_entire_video.yml +100 -0
  39. data/test/fixtures/cassettes/airplay/sending_a_video.yml +71 -0
  40. data/test/fixtures/cassettes/airplay/sending_an_image.yml +26439 -0
  41. data/test/fixtures/cassettes/airplay/stop_any_transmission.yml +8851 -0
  42. data/test/fixtures/files/logo.png +0 -0
  43. data/test/fixtures/files/transition_0.png +0 -0
  44. data/test/fixtures/files/transition_1.png +0 -0
  45. data/test/fixtures/files/transition_2.png +0 -0
  46. data/test/fixtures/files/transition_3.png +0 -0
  47. data/test/integration/discovery_test.rb +13 -0
  48. data/test/integration/features_test.rb +14 -0
  49. data/test/integration/send_media_test.rb +37 -0
  50. data/test/integration/slideshow_test.rb +26 -0
  51. data/test/test_helper.rb +42 -0
  52. data/test/unit/node_test.rb +17 -0
  53. data/test/unit/protocol_test.rb +44 -0
  54. metadata +247 -77
  55. data/.gitignore +0 -2
  56. data/.travis.yml +0 -6
  57. data/examples/jobs.jpg +0 -0
  58. data/examples/send_image.rb +0 -5
  59. data/examples/send_video.rb +0 -7
  60. data/lib/airplay/client.rb +0 -60
  61. data/lib/airplay/protocol/image.rb +0 -41
  62. data/lib/airplay/protocol/media.rb +0 -64
  63. data/lib/airplay/protocol/scrub.rb +0 -37
  64. data/lib/airplay/server.rb +0 -2
  65. data/lib/airplay/server/browser.rb +0 -35
  66. data/lib/airplay/server/node.rb +0 -7
  67. data/test/authentication.rb +0 -13
  68. data/test/discovery.rb +0 -27
  69. data/test/fixtures/cassettes/airplay/authenticate_all_the_things_.yml +0 -139
  70. data/test/fixtures/cassettes/airplay/control_a_video_being_played_in_apple_tv.yml +0 -242
  71. data/test/fixtures/cassettes/airplay/get_current_scrub_from_apple_tv.yml +0 -69
  72. data/test/fixtures/cassettes/airplay/go_to_a_given_position_in_the_video.yml +0 -157
  73. data/test/fixtures/cassettes/airplay/send_audio_to_apple_tv.yml +0 -33
  74. data/test/fixtures/cassettes/airplay/send_image_to_apple_tv.yml +0 -661
  75. data/test/fixtures/cassettes/airplay/send_image_to_apple_tv_with_effects.yml +0 -591
  76. data/test/fixtures/cassettes/airplay/send_video_to_apple_tv.yml +0 -33
  77. data/test/fixtures/image.gif +0 -0
  78. data/test/fixtures/image2.gif +0 -0
  79. data/test/helper.rb +0 -31
  80. data/test/images.rb +0 -31
  81. data/test/media.rb +0 -47
  82. data/test/scrub.rb +0 -31
Binary file
@@ -0,0 +1,13 @@
1
+ require "test_helper"
2
+ require "minitest/mock"
3
+
4
+ describe "Airplay node discovery" do
5
+ it "should find a node in the network" do
6
+ Airplay.stub :nodes, stubbed_nodes do
7
+ assert Airplay.nodes.size > 0, "At least a node should be found"
8
+ Airplay.stub :active, stubbed_nodes.first do
9
+ assert_equal "MockTV", Airplay.active.name
10
+ end
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,14 @@
1
+ require "minitest/mock"
2
+ require "test_helper"
3
+
4
+ describe "Airplay feature discovery" do
5
+ it "should get the node feature support" do
6
+ Airplay.stub :nodes, stubbed_nodes do
7
+ airplay_node = Airplay.nodes.first
8
+ features = airplay_node.features
9
+
10
+ assert features.video
11
+ assert features.photo
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,37 @@
1
+ require "test_helper"
2
+
3
+ describe "Airplay sending media" do
4
+ it "should send an image" do
5
+ with_cassette("sending an image") do
6
+ assert Airplay.view("test/fixtures/files/logo.png")
7
+ assert Airplay.view(File.read("test/fixtures/files/logo.png"))
8
+ assert Airplay.view(File.open("test/fixtures/files/logo.png"))
9
+ assert Airplay.view("http://comicsymascomics.com/wp-content/uploads/images/31/v-de-vendetta.jpg")
10
+ end
11
+ end
12
+
13
+ it "should play transitions through images" do
14
+ Airplay.transitions.each_with_index do |transition, i|
15
+ assert Airplay.view("test/fixtures/files/transition_#{i}.png", transition: transition)
16
+ sleep 0.1
17
+ end
18
+ end
19
+
20
+ it "should play an entire video" do
21
+ skip("Works, but I need a way to make Net::PTTH to work with VCR :/")
22
+
23
+ with_cassette("play an entire video") do
24
+ Airplay.play("test/fixtures/files/video.mp4")
25
+ Airplay.player.wait
26
+ assert Airplay.player.played?
27
+ end
28
+ end
29
+
30
+ it "should stop any transmission" do
31
+ with_cassette("stop any transmission") do
32
+ Airplay.view("test/fixtures/files/logo.png")
33
+ sleep 0.1
34
+ Airplay.stop
35
+ end
36
+ end
37
+ end
@@ -0,0 +1,26 @@
1
+ require "test_helper"
2
+
3
+ describe "Airplay should list the slideshow features" do
4
+ it "should a list of features" do
5
+ with_cassette("listing slideshow features") do
6
+ features = Airplay.slideshow.features
7
+ assert features.size > 10
8
+ end
9
+ end
10
+
11
+ it "should start a slideshow of images" do
12
+ skip("There are some missing parts in the reverse streaming")
13
+
14
+ with_cassette("playing a given slideshow") do
15
+ Airplay.use "corax"
16
+ Airplay.slideshow << [
17
+ "test/fixtures/files/image_01.jpg",
18
+ "test/fixtures/files/image_02.jpg"
19
+ ]
20
+
21
+ Airplay.slideshow.play
22
+ sleep 10
23
+ Airplay.slideshow.stop
24
+ end
25
+ end
26
+ end
@@ -0,0 +1,42 @@
1
+ $:.unshift File.dirname(__FILE__) + '/../lib'
2
+
3
+ require "bundler/setup"
4
+ require "minitest/spec"
5
+ require "minitest/pride"
6
+ require "minitest/autorun"
7
+ require "vcr"
8
+ require "airplay"
9
+
10
+ ENV["TEST"] = "yes"
11
+
12
+ VCR.configure do |c|
13
+ c.cassette_library_dir = 'test/fixtures/cassettes/airplay'
14
+ c.allow_http_connections_when_no_cassette = true
15
+ c.default_cassette_options = { record: :new_episodes }
16
+ c.hook_into :fakeweb
17
+ end
18
+
19
+ def with_cassette(name, &block)
20
+ VCR.use_cassette(name, preserve_exact_body_bytes: true, &block)
21
+ end
22
+
23
+ def stubbed_nodes
24
+ nodes = Airplay::Nodes.new
25
+ node = Airplay::Node.create(
26
+ name: "MockTV",
27
+ address: "127.0.0.1:12345",
28
+ domain: "MockTV.local"
29
+ )
30
+
31
+ text_record = {
32
+ "rhd" => "4.6.3",
33
+ "features" => "0x180029FF",
34
+ "deviceid" => "7D:C3:A1:89:88:0C",
35
+ "model" => "AppleTV3,1",
36
+ "vv" => "1",
37
+ "srcvers" => "150.35"
38
+ }
39
+
40
+ node.parse_info(text_record)
41
+ nodes << node
42
+ end
@@ -0,0 +1,17 @@
1
+ require "test_helper"
2
+
3
+ describe "Airplay::Node" do
4
+ it "should represent an Airplay node" do
5
+ node = Airplay::Node.create(
6
+ name: "MockTV",
7
+ address: "127.0.0.1:7000",
8
+ domain: "local"
9
+ )
10
+
11
+ assert_equal "MockTV", node.name
12
+ assert_equal "127.0.0.1:7000", node.address
13
+ assert_equal "local", node.domain
14
+ assert_equal "127.0.0.1", node.ip
15
+ assert_equal 7000, node.port
16
+ end
17
+ end
@@ -0,0 +1,44 @@
1
+ require_relative "../test_helper"
2
+ require "net/ptth/test"
3
+
4
+ describe "Airplay protocol events connection" do
5
+ before do
6
+ request = Net::HTTP::Post.new("/event")
7
+ request.body = <<-EOS.gsub(/^\s+/, '')
8
+ <?xml version="1.0" encoding="UTF-8"?>
9
+ <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
10
+ <plist version="1.0">
11
+ <dict>
12
+ <key>category</key>
13
+ <string>video</string>
14
+ <key>state</key>
15
+ <string>loading</string>
16
+ </dict>
17
+ </plist>
18
+ EOS
19
+
20
+ @server = Net::PTTH::TestServer.new(port: 12345, response: request)
21
+ Thread.new { @server.start }
22
+ end
23
+
24
+ after do
25
+ @server.close
26
+ end
27
+
28
+ it "should get events from the server" do
29
+ Airplay.stub :nodes, stubbed_nodes do
30
+ Airplay.stub :active, stubbed_nodes.first do
31
+ reverse = Airplay::Protocol::Reverse.new(Airplay.active)
32
+ reverse.callbacks << proc do |response|
33
+ assert_equal "video", response["category"]
34
+ assert_equal "loading", response["state"]
35
+
36
+ reverse.disconnect
37
+ end
38
+
39
+ reverse.connect
40
+ end
41
+ end
42
+
43
+ end
44
+ end
metadata CHANGED
@@ -1,19 +1,19 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: airplay
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.9
5
- prerelease:
4
+ version: 1.0.0.beta1
5
+ prerelease: 6
6
6
  platform: ruby
7
7
  authors:
8
8
  - elcuervo
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-03-27 00:00:00.000000000Z
12
+ date: 2013-10-10 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: dnssd
16
- requirement: &70319593480660 !ruby/object:Gem::Requirement
16
+ requirement: !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ~>
@@ -21,116 +21,285 @@ dependencies:
21
21
  version: '2.0'
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *70319593480660
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ~>
28
+ - !ruby/object:Gem::Version
29
+ version: '2.0'
30
+ - !ruby/object:Gem::Dependency
31
+ name: uuid
32
+ requirement: !ruby/object:Gem::Requirement
33
+ none: false
34
+ requirements:
35
+ - - ~>
36
+ - !ruby/object:Gem::Version
37
+ version: 2.3.6
38
+ type: :runtime
39
+ prerelease: false
40
+ version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ~>
44
+ - !ruby/object:Gem::Version
45
+ version: 2.3.6
46
+ - !ruby/object:Gem::Dependency
47
+ name: CFPropertyList
48
+ requirement: !ruby/object:Gem::Requirement
49
+ none: false
50
+ requirements:
51
+ - - ~>
52
+ - !ruby/object:Gem::Version
53
+ version: 2.2.0
54
+ type: :runtime
55
+ prerelease: false
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ none: false
58
+ requirements:
59
+ - - ~>
60
+ - !ruby/object:Gem::Version
61
+ version: 2.2.0
62
+ - !ruby/object:Gem::Dependency
63
+ name: log4r
64
+ requirement: !ruby/object:Gem::Requirement
65
+ none: false
66
+ requirements:
67
+ - - ~>
68
+ - !ruby/object:Gem::Version
69
+ version: 1.1.10
70
+ type: :runtime
71
+ prerelease: false
72
+ version_requirements: !ruby/object:Gem::Requirement
73
+ none: false
74
+ requirements:
75
+ - - ~>
76
+ - !ruby/object:Gem::Version
77
+ version: 1.1.10
78
+ - !ruby/object:Gem::Dependency
79
+ name: cuba
80
+ requirement: !ruby/object:Gem::Requirement
81
+ none: false
82
+ requirements:
83
+ - - ~>
84
+ - !ruby/object:Gem::Version
85
+ version: 3.1.0
86
+ type: :runtime
87
+ prerelease: false
88
+ version_requirements: !ruby/object:Gem::Requirement
89
+ none: false
90
+ requirements:
91
+ - - ~>
92
+ - !ruby/object:Gem::Version
93
+ version: 3.1.0
94
+ - !ruby/object:Gem::Dependency
95
+ name: micromachine
96
+ requirement: !ruby/object:Gem::Requirement
97
+ none: false
98
+ requirements:
99
+ - - ~>
100
+ - !ruby/object:Gem::Version
101
+ version: 1.0.4
102
+ type: :runtime
103
+ prerelease: false
104
+ version_requirements: !ruby/object:Gem::Requirement
105
+ none: false
106
+ requirements:
107
+ - - ~>
108
+ - !ruby/object:Gem::Version
109
+ version: 1.0.4
110
+ - !ruby/object:Gem::Dependency
111
+ name: celluloid
112
+ requirement: !ruby/object:Gem::Requirement
113
+ none: false
114
+ requirements:
115
+ - - ~>
116
+ - !ruby/object:Gem::Version
117
+ version: 0.15.0
118
+ type: :runtime
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ none: false
122
+ requirements:
123
+ - - ~>
124
+ - !ruby/object:Gem::Version
125
+ version: 0.15.0
25
126
  - !ruby/object:Gem::Dependency
26
- name: net-http-persistent
27
- requirement: &70319593480180 !ruby/object:Gem::Requirement
127
+ name: net-ptth
128
+ requirement: !ruby/object:Gem::Requirement
28
129
  none: false
29
130
  requirements:
30
- - - ! '>='
131
+ - - ~>
31
132
  - !ruby/object:Gem::Version
32
- version: '2.6'
133
+ version: 0.0.10
33
134
  type: :runtime
34
135
  prerelease: false
35
- version_requirements: *70319593480180
136
+ version_requirements: !ruby/object:Gem::Requirement
137
+ none: false
138
+ requirements:
139
+ - - ~>
140
+ - !ruby/object:Gem::Version
141
+ version: 0.0.10
36
142
  - !ruby/object:Gem::Dependency
37
143
  name: net-http-digest_auth
38
- requirement: &70319593479720 !ruby/object:Gem::Requirement
144
+ requirement: !ruby/object:Gem::Requirement
39
145
  none: false
40
146
  requirements:
41
147
  - - ~>
42
148
  - !ruby/object:Gem::Version
43
- version: '1.2'
149
+ version: 1.2.1
44
150
  type: :runtime
45
151
  prerelease: false
46
- version_requirements: *70319593479720
152
+ version_requirements: !ruby/object:Gem::Requirement
153
+ none: false
154
+ requirements:
155
+ - - ~>
156
+ - !ruby/object:Gem::Version
157
+ version: 1.2.1
47
158
  - !ruby/object:Gem::Dependency
48
- name: cutest
49
- requirement: &70319593479260 !ruby/object:Gem::Requirement
159
+ name: clap
160
+ requirement: !ruby/object:Gem::Requirement
50
161
  none: false
51
162
  requirements:
52
163
  - - ~>
53
164
  - !ruby/object:Gem::Version
54
- version: '1.1'
55
- type: :development
165
+ version: 1.0.0
166
+ type: :runtime
167
+ prerelease: false
168
+ version_requirements: !ruby/object:Gem::Requirement
169
+ none: false
170
+ requirements:
171
+ - - ~>
172
+ - !ruby/object:Gem::Version
173
+ version: 1.0.0
174
+ - !ruby/object:Gem::Dependency
175
+ name: ruby-progressbar
176
+ requirement: !ruby/object:Gem::Requirement
177
+ none: false
178
+ requirements:
179
+ - - ~>
180
+ - !ruby/object:Gem::Version
181
+ version: 1.2.0
182
+ type: :runtime
56
183
  prerelease: false
57
- version_requirements: *70319593479260
184
+ version_requirements: !ruby/object:Gem::Requirement
185
+ none: false
186
+ requirements:
187
+ - - ~>
188
+ - !ruby/object:Gem::Version
189
+ version: 1.2.0
58
190
  - !ruby/object:Gem::Dependency
59
- name: capybara
60
- requirement: &70319593478800 !ruby/object:Gem::Requirement
191
+ name: minitest
192
+ requirement: !ruby/object:Gem::Requirement
61
193
  none: false
62
194
  requirements:
63
195
  - - ~>
64
196
  - !ruby/object:Gem::Version
65
- version: '1.0'
197
+ version: 4.4.0
66
198
  type: :development
67
199
  prerelease: false
68
- version_requirements: *70319593478800
200
+ version_requirements: !ruby/object:Gem::Requirement
201
+ none: false
202
+ requirements:
203
+ - - ~>
204
+ - !ruby/object:Gem::Version
205
+ version: 4.4.0
69
206
  - !ruby/object:Gem::Dependency
70
207
  name: fakeweb
71
- requirement: &70319593478340 !ruby/object:Gem::Requirement
208
+ requirement: !ruby/object:Gem::Requirement
72
209
  none: false
73
210
  requirements:
74
211
  - - ~>
75
212
  - !ruby/object:Gem::Version
76
- version: '1.3'
213
+ version: 1.3.0
77
214
  type: :development
78
215
  prerelease: false
79
- version_requirements: *70319593478340
216
+ version_requirements: !ruby/object:Gem::Requirement
217
+ none: false
218
+ requirements:
219
+ - - ~>
220
+ - !ruby/object:Gem::Version
221
+ version: 1.3.0
80
222
  - !ruby/object:Gem::Dependency
81
223
  name: vcr
82
- requirement: &70319593498860 !ruby/object:Gem::Requirement
224
+ requirement: !ruby/object:Gem::Requirement
83
225
  none: false
84
226
  requirements:
85
227
  - - ~>
86
228
  - !ruby/object:Gem::Version
87
- version: '2.0'
229
+ version: 2.4.0
88
230
  type: :development
89
231
  prerelease: false
90
- version_requirements: *70319593498860
232
+ version_requirements: !ruby/object:Gem::Requirement
233
+ none: false
234
+ requirements:
235
+ - - ~>
236
+ - !ruby/object:Gem::Version
237
+ version: 2.4.0
91
238
  description: Send image/video to an airplay enabled device
92
239
  email:
93
240
  - yo@brunoaguirre.com
94
- executables: []
241
+ executables:
242
+ - air
95
243
  extensions: []
96
244
  extra_rdoc_files: []
97
245
  files:
98
- - .gitignore
99
- - .travis.yml
100
246
  - Gemfile
247
+ - Gemfile.lock
248
+ - HUGS
249
+ - LICENSE
101
250
  - README.md
102
251
  - Rakefile
252
+ - SPEC.md
103
253
  - airplay.gemspec
104
- - examples/jobs.jpg
105
- - examples/send_image.rb
106
- - examples/send_video.rb
254
+ - bin/air
255
+ - examples/demo.rb
256
+ - examples/image.rb
257
+ - examples/video.rb
107
258
  - lib/airplay.rb
108
- - lib/airplay/client.rb
259
+ - lib/airplay/browser.rb
260
+ - lib/airplay/cli.rb
261
+ - lib/airplay/configuration.rb
262
+ - lib/airplay/connection.rb
263
+ - lib/airplay/connection/authentication.rb
264
+ - lib/airplay/connection/persistent.rb
265
+ - lib/airplay/device.rb
266
+ - lib/airplay/device/features.rb
267
+ - lib/airplay/device/info.rb
268
+ - lib/airplay/devices.rb
269
+ - lib/airplay/logger.rb
270
+ - lib/airplay/playable.rb
109
271
  - lib/airplay/protocol.rb
110
- - lib/airplay/protocol/image.rb
111
- - lib/airplay/protocol/media.rb
112
- - lib/airplay/protocol/scrub.rb
113
- - lib/airplay/server.rb
114
- - lib/airplay/server/browser.rb
115
- - lib/airplay/server/node.rb
116
- - test/authentication.rb
117
- - test/discovery.rb
118
- - test/fixtures/cassettes/airplay/authenticate_all_the_things_.yml
119
- - test/fixtures/cassettes/airplay/control_a_video_being_played_in_apple_tv.yml
120
- - test/fixtures/cassettes/airplay/get_current_scrub_from_apple_tv.yml
121
- - test/fixtures/cassettes/airplay/go_to_a_given_position_in_the_video.yml
122
- - test/fixtures/cassettes/airplay/send_audio_to_apple_tv.yml
123
- - test/fixtures/cassettes/airplay/send_image_to_apple_tv.yml
124
- - test/fixtures/cassettes/airplay/send_image_to_apple_tv_with_effects.yml
125
- - test/fixtures/cassettes/airplay/send_video_to_apple_tv.yml
126
- - test/fixtures/image.gif
127
- - test/fixtures/image2.gif
128
- - test/helper.rb
129
- - test/images.rb
130
- - test/media.rb
131
- - test/scrub.rb
272
+ - lib/airplay/protocol/app.rb
273
+ - lib/airplay/protocol/message.rb
274
+ - lib/airplay/protocol/playback_info.rb
275
+ - lib/airplay/protocol/player.rb
276
+ - lib/airplay/protocol/reverse.rb
277
+ - lib/airplay/protocol/slideshow.rb
278
+ - lib/airplay/protocol/timers.rb
279
+ - lib/airplay/protocol/viewer.rb
280
+ - lib/airplay/structure.rb
281
+ - lib/airplay/viewable.rb
282
+ - test/fixtures/cassettes/airplay/listing_slideshow_features.yml
283
+ - test/fixtures/cassettes/airplay/play_an_entire_video.yml
284
+ - test/fixtures/cassettes/airplay/sending_a_video.yml
285
+ - test/fixtures/cassettes/airplay/sending_an_image.yml
286
+ - test/fixtures/cassettes/airplay/stop_any_transmission.yml
287
+ - test/fixtures/files/logo.png
288
+ - test/fixtures/files/transition_0.png
289
+ - test/fixtures/files/transition_1.png
290
+ - test/fixtures/files/transition_2.png
291
+ - test/fixtures/files/transition_3.png
292
+ - test/integration/discovery_test.rb
293
+ - test/integration/features_test.rb
294
+ - test/integration/send_media_test.rb
295
+ - test/integration/slideshow_test.rb
296
+ - test/test_helper.rb
297
+ - test/unit/node_test.rb
298
+ - test/unit/protocol_test.rb
132
299
  homepage: http://github.com/elcuervo/airplay
133
- licenses: []
300
+ licenses:
301
+ - MIT
302
+ - HUGWARE
134
303
  post_install_message:
135
304
  rdoc_options: []
136
305
  require_paths:
@@ -144,29 +313,30 @@ required_ruby_version: !ruby/object:Gem::Requirement
144
313
  required_rubygems_version: !ruby/object:Gem::Requirement
145
314
  none: false
146
315
  requirements:
147
- - - ! '>='
316
+ - - ! '>'
148
317
  - !ruby/object:Gem::Version
149
- version: '0'
318
+ version: 1.3.1
150
319
  requirements: []
151
320
  rubyforge_project:
152
- rubygems_version: 1.8.15
321
+ rubygems_version: 1.8.23
153
322
  signing_key:
154
323
  specification_version: 3
155
324
  summary: Airplay client
156
325
  test_files:
157
- - test/authentication.rb
158
- - test/discovery.rb
159
- - test/fixtures/cassettes/airplay/authenticate_all_the_things_.yml
160
- - test/fixtures/cassettes/airplay/control_a_video_being_played_in_apple_tv.yml
161
- - test/fixtures/cassettes/airplay/get_current_scrub_from_apple_tv.yml
162
- - test/fixtures/cassettes/airplay/go_to_a_given_position_in_the_video.yml
163
- - test/fixtures/cassettes/airplay/send_audio_to_apple_tv.yml
164
- - test/fixtures/cassettes/airplay/send_image_to_apple_tv.yml
165
- - test/fixtures/cassettes/airplay/send_image_to_apple_tv_with_effects.yml
166
- - test/fixtures/cassettes/airplay/send_video_to_apple_tv.yml
167
- - test/fixtures/image.gif
168
- - test/fixtures/image2.gif
169
- - test/helper.rb
170
- - test/images.rb
171
- - test/media.rb
172
- - test/scrub.rb
326
+ - test/fixtures/cassettes/airplay/listing_slideshow_features.yml
327
+ - test/fixtures/cassettes/airplay/play_an_entire_video.yml
328
+ - test/fixtures/cassettes/airplay/sending_a_video.yml
329
+ - test/fixtures/cassettes/airplay/sending_an_image.yml
330
+ - test/fixtures/cassettes/airplay/stop_any_transmission.yml
331
+ - test/fixtures/files/logo.png
332
+ - test/fixtures/files/transition_0.png
333
+ - test/fixtures/files/transition_1.png
334
+ - test/fixtures/files/transition_2.png
335
+ - test/fixtures/files/transition_3.png
336
+ - test/integration/discovery_test.rb
337
+ - test/integration/features_test.rb
338
+ - test/integration/send_media_test.rb
339
+ - test/integration/slideshow_test.rb
340
+ - test/test_helper.rb
341
+ - test/unit/node_test.rb
342
+ - test/unit/protocol_test.rb