bubble-wrap 1.1.2 → 1.1.3

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.
Files changed (40) hide show
  1. data/Gemfile.lock +1 -1
  2. data/README.md +32 -9
  3. data/Rakefile +1 -5
  4. data/lib/bubble-wrap/all.rb +1 -1
  5. data/lib/bubble-wrap/http.rb +1 -0
  6. data/lib/bubble-wrap/media.rb +8 -0
  7. data/lib/bubble-wrap/version.rb +1 -1
  8. data/motion/core/app.rb +5 -0
  9. data/motion/core/device.rb +1 -1
  10. data/motion/core/json.rb +1 -0
  11. data/motion/core/ns_url_request.rb +4 -2
  12. data/motion/core/persistence.rb +7 -1
  13. data/motion/core/string.rb +2 -2
  14. data/motion/http.rb +81 -65
  15. data/motion/location/location.rb +2 -2
  16. data/motion/media/media.rb +15 -0
  17. data/motion/media/player.rb +139 -0
  18. data/motion/test_suite_delegate.rb +1 -0
  19. data/resources/test.mp3 +0 -0
  20. data/samples/camera/Gemfile +3 -0
  21. data/samples/camera/README.md +4 -0
  22. data/samples/camera/Rakefile +9 -0
  23. data/samples/camera/app/app_delegate.rb +8 -0
  24. data/samples/camera/app/controllers/camera_controller.rb +61 -0
  25. data/samples/camera/spec/main_spec.rb +9 -0
  26. data/samples/location/.gitignore +5 -0
  27. data/samples/location/Gemfile +3 -0
  28. data/samples/location/README.md +4 -0
  29. data/samples/location/Rakefile +10 -0
  30. data/samples/location/app/app_delegate.rb +8 -0
  31. data/samples/location/app/controllers/image_list_controller.rb +30 -0
  32. data/samples/location/app/models/places.rb +15 -0
  33. data/samples/location/spec/main_spec.rb +9 -0
  34. data/spec/motion/core/app_spec.rb +7 -1
  35. data/spec/motion/core/json_spec.rb +4 -0
  36. data/spec/motion/core/persistence_spec.rb +7 -3
  37. data/spec/motion/core/string_spec.rb +24 -0
  38. data/spec/motion/http_spec.rb +73 -61
  39. data/spec/motion/media/player_spec.rb +77 -0
  40. metadata +57 -14
@@ -19,6 +19,18 @@ describe BubbleWrap::String do
19
19
  end
20
20
  end
21
21
 
22
+ describe '.camelize(:upper)' do
23
+ it "doesn't change the value" do
24
+ 'CamelCase'.camelize(:upper).should == 'CamelCase'
25
+ end
26
+ end
27
+
28
+ describe '.camelize(:lower)' do
29
+ it 'lower cases the first character' do
30
+ 'CamelCase'.camelize(:lower).should == 'camelCase'
31
+ end
32
+ end
33
+
22
34
  describe '.underscore' do
23
35
  it 'converts it to underscores' do
24
36
  'CamelCase'.underscore.should == 'camel_case'
@@ -39,6 +51,18 @@ describe BubbleWrap::String do
39
51
  end
40
52
  end
41
53
 
54
+ describe '.camelize(:upper)' do
55
+ it "upper cases the first character" do
56
+ 'camelCase'.camelize(:upper).should == 'CamelCase'
57
+ end
58
+ end
59
+
60
+ describe '.camelize(:lower)' do
61
+ it "doesn't change the value" do
62
+ 'camelCase'.camelize(:lower).should == 'camelCase'
63
+ end
64
+ end
65
+
42
66
  describe '.underscore' do
43
67
  it 'converts it to underscores' do
44
68
  'camelCase'.underscore.should == 'camel_case'
@@ -2,6 +2,7 @@ describe "HTTP" do
2
2
 
3
3
  before do
4
4
  @localhost_url = 'http://localhost'
5
+ @fake_url = 'http://fake.url'
5
6
  end
6
7
 
7
8
  describe "Core HTTP method calls" do
@@ -27,31 +28,29 @@ describe "HTTP" do
27
28
  end
28
29
  end
29
30
 
30
- it "uses the block instead of action passed in " do
31
+ it "uses the block instead of :action if both were given" do
31
32
  [:get, :post, :put, :delete, :head, :patch].each do |method|
32
33
  called = false
33
34
  expected_delegator = Proc.new {|response| called = true }
34
35
 
35
36
  query = BubbleWrap::HTTP.send(method, @localhost_url, { action: 'not_valid' }, &expected_delegator)
36
- query.instance_variable_get(:@delegator).should.equal expected_delegator
37
37
  query.connectionDidFinishLoading(query.connection)
38
+
39
+ query.instance_variable_get(:@delegator).should.equal expected_delegator
38
40
  called.should.equal true
39
41
  end
40
42
  end
41
43
 
42
- # [:get, :post, :put, :delete, :head, :patch].each do |verb|
43
- # it "has access to the proper response scope for #{verb} request" do
44
- # class WatchedObj; attr_accessor :test_value end
45
- # @watched_object = WatchedObj.new
46
- # @name = 'Matt'
47
- # query = BubbleWrap::HTTP.send(verb, @localhost_url) do |response|
48
- # @watched_object.test_value = @name
49
- # end
50
- # wait_for_change(@watched_object, 'test_value') do
51
- # @watched_object.test_value.should == 'Matt'
52
- # end
53
- # end
54
- # end
44
+ it "works with classic blocks as well" do
45
+ [:get, :post, :put, :delete, :head, :patch].each do |method|
46
+ called = false
47
+ query = BubbleWrap::HTTP.send(method, @localhost_url, { action: 'not_valid' } ) do |response|
48
+ called = true
49
+ end
50
+ query.connectionDidFinishLoading(query.connection)
51
+ called.should.equal true
52
+ end
53
+ end
55
54
 
56
55
  end
57
56
 
@@ -107,7 +106,7 @@ describe "HTTP" do
107
106
  values: ['apple', 'orange', 'peach'],
108
107
  credentials: @credentials
109
108
  }
110
- @action = lambda{|fa, ke|}
109
+ @action = Proc.new { |response| @real_response = response; @delegator_was_called = true }
111
110
  @format = "application/x-www-form-urlencoded"
112
111
  @cache_policy = 24234
113
112
  @leftover_option = 'trololo'
@@ -150,6 +149,18 @@ describe "HTTP" do
150
149
  @query.method.should.equal "GET"
151
150
  end
152
151
 
152
+ it "throws an error for invalid/missing URL schemes" do
153
+ %w(http https file ftp).each do |scheme|
154
+ lambda {
155
+ BW::HTTP::Query.new("#{scheme}://example.com", :get) { |r| p r.body.to_str }
156
+ }.should.not.raise InvalidURLError
157
+ end
158
+
159
+ lambda {
160
+ BW::HTTP::Query.new("bad://example.com", :get) { |r| p r.body.to_str }
161
+ }.should.raise InvalidURLError
162
+ end
163
+
153
164
  it "should set the deleted delegator from options" do
154
165
  @query.instance_variable_get(:@delegator).should.equal @action
155
166
  @options.should.not.has_key? :action
@@ -185,7 +196,7 @@ describe "HTTP" do
185
196
  describe "PAYLOAD / UPLOAD FILES" do
186
197
 
187
198
  def create_query(payload, files)
188
- BubbleWrap::HTTP::Query.new( '', :post, { payload: payload, files: files } )
199
+ BubbleWrap::HTTP::Query.new( 'http://haha', :post, { payload: payload, files: files } )
189
200
  end
190
201
 
191
202
  def sample_data
@@ -199,13 +210,13 @@ describe "HTTP" do
199
210
  end
200
211
 
201
212
  it "should check if @payload is a hash before generating GET params" do
202
- query_string_payload = BubbleWrap::HTTP::Query.new( 'nil' , :get, { payload: "name=apple&model=macbook"} )
213
+ query_string_payload = BubbleWrap::HTTP::Query.new( @fake_url , :get, { payload: "name=apple&model=macbook"} )
203
214
  query_string_payload.instance_variable_get(:@payload).should.equal 'name=apple&model=macbook'
204
215
  end
205
216
 
206
217
  it "should check if payload is nil" do
207
218
  lambda{
208
- BubbleWrap::HTTP::Query.new( 'nil' , :post, {} )
219
+ BubbleWrap::HTTP::Query.new( @fake_url , :post, {} )
209
220
  }.should.not.raise NoMethodError
210
221
  end
211
222
 
@@ -229,15 +240,15 @@ describe "HTTP" do
229
240
  puts "\n"
230
241
  [:post, :put, :delete, :patch].each do |method|
231
242
  puts " - #{method}\n"
232
- query = BubbleWrap::HTTP::Query.new( 'nil' , method, { payload: payload, files: files } )
243
+ query = BubbleWrap::HTTP::Query.new( @fake_url , method, { payload: payload, files: files } )
233
244
  uuid = query.instance_variable_get(:@boundary)
234
245
  real_payload = NSString.alloc.initWithData(query.request.HTTPBody, encoding:NSUTF8StringEncoding)
235
- real_payload.should.equal "\r\n--#{uuid}\r\nContent-Disposition: form-data; name=\"name\"\r\n\r\napple\r\n--#{uuid}\r\nContent-Disposition: form-data; name=\"model\"\r\n\r\nmacbook\r\n--#{uuid}\r\nContent-Disposition: form-data; name=\"twitter\"; filename=\"twitter\"\r\nContent-Type: application/octet-stream\r\n\r\ntwitter:@mneorr\r\n--#{uuid}\r\nContent-Disposition: form-data; name=\"site\"; filename=\"site\"\r\nContent-Type: application/octet-stream\r\n\r\nmneorr.com\r\n--#{uuid}--\r\n"
246
+ real_payload.should.equal "--#{uuid}\r\nContent-Disposition: form-data; name=\"name\"\r\n\r\napple\r\n--#{uuid}\r\nContent-Disposition: form-data; name=\"model\"\r\n\r\nmacbook\r\n--#{uuid}\r\nContent-Disposition: form-data; name=\"twitter\"; filename=\"twitter\"\r\nContent-Type: application/octet-stream\r\n\r\ntwitter:@mneorr\r\n--#{uuid}\r\nContent-Disposition: form-data; name=\"site\"; filename=\"site\"\r\nContent-Type: application/octet-stream\r\n\r\nmneorr.com\r\n--#{uuid}--\r\n"
236
247
  end
237
248
 
238
249
  [:get, :head].each do |method|
239
250
  puts " - #{method}\n"
240
- query = BubbleWrap::HTTP::Query.new( 'nil' , method, { payload: payload } )
251
+ query = BubbleWrap::HTTP::Query.new( @fake_url , method, { payload: payload } )
241
252
  real_payload = NSString.alloc.initWithData(query.request.HTTPBody, encoding:NSUTF8StringEncoding)
242
253
  real_payload.should.be.empty
243
254
  end
@@ -249,11 +260,11 @@ describe "HTTP" do
249
260
  end
250
261
 
251
262
  it "sets the payload as a string if JSON" do
252
- json = BW::JSON.generate({foo:42, bar:'BubbleWrap'})
253
- puts "\n"
263
+ json = "{\"foo\":42,\"bar\":\"BubbleWrap\"}"
264
+ puts "\n"
254
265
  [:put, :post, :delete, :patch].each do |method|
255
266
  puts " - #{method}\n"
256
- query = BubbleWrap::HTTP::Query.new( 'nil' , method, { payload: json } )
267
+ query = BubbleWrap::HTTP::Query.new( @fake_url , method, { payload: json } )
257
268
  set_payload = NSString.alloc.initWithData(query.request.HTTPBody, encoding:NSUTF8StringEncoding)
258
269
  set_payload.should.equal json
259
270
  end
@@ -261,10 +272,10 @@ describe "HTTP" do
261
272
 
262
273
  it "sets the payload for a nested hash to multiple form-data parts" do
263
274
  payload = { computer: { name: 'apple', model: 'macbook'} }
264
- query = BubbleWrap::HTTP::Query.new( 'nil', :post, { payload: payload } )
275
+ query = BubbleWrap::HTTP::Query.new( @fake_url, :post, { payload: payload } )
265
276
  uuid = query.instance_variable_get(:@boundary)
266
277
  real_payload = NSString.alloc.initWithData(query.request.HTTPBody, encoding:NSUTF8StringEncoding)
267
- real_payload.should.equal "\r\n--#{uuid}\r\nContent-Disposition: form-data; name=\"computer[name]\"\r\n\r\napple\r\n--#{uuid}\r\nContent-Disposition: form-data; name=\"computer[model]\"\r\n\r\nmacbook\r\n--#{uuid}--\r\n"
278
+ real_payload.should.equal "--#{uuid}\r\nContent-Disposition: form-data; name=\"computer[name]\"\r\n\r\napple\r\n--#{uuid}\r\nContent-Disposition: form-data; name=\"computer[model]\"\r\n\r\nmacbook\r\n--#{uuid}--\r\n"
268
279
  end
269
280
 
270
281
  end
@@ -280,7 +291,7 @@ describe "HTTP" do
280
291
  end
281
292
 
282
293
  it "should delete :headers from options and escape Line Feeds" do
283
- escaped_lf = {"User-Agent"=>"Mozilla/5.0 (X11; Linux x86_64; rv:12.0) \\n Gecko/20100101 Firefox/12.0"}
294
+ escaped_lf = {"User-Agent"=>"Mozilla/5.0 (X11; Linux x86_64; rv:12.0) \r\n Gecko/20100101 Firefox/12.0"}
284
295
  @query.instance_variable_get(:@headers).should.equal escaped_lf
285
296
  end
286
297
 
@@ -338,12 +349,12 @@ describe "HTTP" do
338
349
  end
339
350
 
340
351
  it "should patch the NSURLRequest with done_loading and done_loading!" do
341
- @query.request.done_loading.should.equal @query.request.instance_variable_get(:@done_loading)
352
+ @query.request.done_loading?.should.equal @query.request.instance_variable_get(:@done_loading)
342
353
 
343
354
  @query.request.instance_variable_set(:@done_loading, false)
344
- @query.request.done_loading.should.equal false
355
+ @query.request.done_loading?.should.equal false
345
356
  @query.request.done_loading!
346
- @query.request.done_loading.should.equal true
357
+ @query.request.done_loading?.should.equal true
347
358
  end
348
359
 
349
360
  it "should pass the right arguments when creating new request" do
@@ -362,6 +373,11 @@ describe "HTTP" do
362
373
  @post_query = BubbleWrap::HTTP::Query.new(@url_string, :post, {headers: @headers, payload: @payload})
363
374
  end
364
375
 
376
+ it "should add default Content Type if no payload is given" do
377
+ query_without_payload = BubbleWrap::HTTP::Query.new(@url_string, :post, {headers: @headers})
378
+ query_without_payload.request.allHTTPHeaderFields.should.include? 'Content-Type'
379
+ end
380
+
365
381
  it "should automatically provide Content-Type if a payload is provided" do
366
382
  @post_query.request.allHTTPHeaderFields.should.include?('Content-Type')
367
383
  end
@@ -388,11 +404,6 @@ describe "HTTP" do
388
404
  @post_query.request.allHTTPHeaderFields['CONTENT-TYPE'].should.equal @headers['CONTENT-TYPE']
389
405
  end
390
406
 
391
- it "should not add additional headers if no payload is given" do
392
- @post_query = BubbleWrap::HTTP::Query.new(@url_string, :post, {headers: @headers})
393
- @post_query.request.allHTTPHeaderFields.should.equal @headers
394
- end
395
-
396
407
  end
397
408
 
398
409
  describe "Generating payloads" do
@@ -467,9 +478,9 @@ describe "HTTP" do
467
478
  end
468
479
 
469
480
  it "should set request_done to true" do
470
- @query.request.done_loading.should == false
481
+ @query.request.done_loading?.should == false
471
482
  @query.connection(nil, didFailWithError:@fake_error)
472
- @query.request.done_loading.should == true
483
+ @query.request.done_loading?.should == true
473
484
  end
474
485
 
475
486
  it "should set the error message to response object" do
@@ -502,10 +513,10 @@ describe "HTTP" do
502
513
  end
503
514
 
504
515
  it "should set request_done to true" do
505
- @query.request.done_loading.should == false
516
+ @query.request.done_loading?.should == false
506
517
 
507
518
  @query.connectionDidFinishLoading(nil)
508
- @query.request.done_loading.should == true
519
+ @query.request.done_loading?.should == true
509
520
  end
510
521
 
511
522
  it "should set response_body to @received data if not nil" do
@@ -539,35 +550,36 @@ describe "HTTP" do
539
550
 
540
551
  describe "when connection:willSendRequest:redirectResponse:" do
541
552
  before do
542
- @request = NSURLRequest.requestWithURL NSURL.URLWithString('http://fakehost.local/')
553
+ @request = NSMutableURLRequest.requestWithURL NSURL.URLWithString('http://fakehost.local/')
543
554
  end
544
555
 
545
- it "should make a mutableCopy of passed in request and set headers from @headers" do
546
- expected_headers = { new_header: 'should_be_here' }
547
- @query.instance_variable_set(:@headers, expected_headers)
556
+ it "should forward the new request for 30 times/redirections" do
557
+ 1.upto(35) do |numbah|
558
+ request = @query.connection(nil, willSendRequest:@request, redirectResponse:nil)
559
+ request.should.equal numbah < 30 ? @request : nil
560
+ end
561
+ end
548
562
 
549
- new_request = @query.connection(nil, willSendRequest:@request, redirectResponse:nil)
563
+ describe "after 30 redirects" do
564
+ before do
565
+ 31.times do
566
+ @query.connection(nil, willSendRequest:@request, redirectResponse:nil)
567
+ end
568
+ end
550
569
 
551
- @query.request.should.not.be.equal @request
552
- new_request.URL.description.should.equal @request.URL.description
553
- new_request.allHTTPHeaderFields.should.equal expected_headers
554
- end
570
+ it "sets the error message on response" do
571
+ @real_response.error_message.should.equal "Too many redirections"
572
+ end
555
573
 
556
- it "should create a new Connection with the request passed in" do
557
- old_connection = @query.connection
558
- @query.connection(nil, willSendRequest:@request, redirectResponse:nil)
559
- old_connection.should.not.equal @query.connection
560
- end
574
+ it "sets the request.done_loading" do
575
+ @query.request.done_loading?.should.equal true
576
+ end
561
577
 
562
- it "should set itself as a delegate of new NSURLConnection" do
563
- @query.connection(nil, willSendRequest:@request, redirectResponse:nil)
564
- @query.connection.delegate.should.equal @query
578
+ it "calls the delegator block" do
579
+ @delegator_was_called.should.equal true
580
+ end
565
581
  end
566
582
 
567
- it "should pass the new request in the new connection" do
568
- @query.connection(nil, willSendRequest:@request, redirectResponse:nil)
569
- @query.connection.request.URL.description.should.equal @request.URL.description
570
- end
571
583
  end
572
584
 
573
585
  describe "didReceiveAuthenticationChallenge" do
@@ -0,0 +1,77 @@
1
+ describe BubbleWrap::Media::Player do
2
+ describe ".play" do
3
+ before do
4
+ @player = BW::Media::Player.new
5
+ @local_file = NSURL.fileURLWithPath(File.join(App.resources_path, 'test.mp3'))
6
+ end
7
+
8
+ it "should raise error if not modal and no callback given" do
9
+ should.raise(BW::Media::Error::NilPlayerCallback) do
10
+ @player.play(@local_file)
11
+ end
12
+ end
13
+
14
+ it "should yield to a block if not modal" do
15
+ @did_yield = false
16
+ @player.play(@local_file) do |_player|
17
+ @did_yield = true
18
+ end
19
+
20
+ @did_yield.should == true
21
+ @player.stop
22
+ end
23
+
24
+ it "should use the MPMoviePlayerController option overrides" do
25
+ @player.play(@local_file, allows_air_play: true) do |_player|
26
+ @did_yield = true
27
+ end
28
+ @player.media_player.allowsAirPlay.should == true
29
+ end
30
+ end
31
+
32
+ describe ".play_modal" do
33
+ before do
34
+ @player = BW::Media::Player.new
35
+ @local_file = NSURL.fileURLWithPath(File.join(App.resources_path, 'test.mp3'))
36
+ end
37
+
38
+ it "should present a modalViewController on root if no controller given" do
39
+ @controller = UIApplication.sharedApplication.keyWindow.rootViewController
40
+
41
+ @player.play_modal(@local_file)
42
+
43
+ wait 1 do
44
+ @controller.modalViewController.should.not == nil
45
+
46
+ @player.stop
47
+ wait 1 do
48
+ @controller.modalViewController.should == nil
49
+ @controller = nil
50
+ @player = nil
51
+ end
52
+ end
53
+ end
54
+
55
+ it "should present a modalViewController if controller given" do
56
+ @controller = UIViewController.alloc.initWithNibName(nil, bundle:nil)
57
+
58
+ # .presentMoviePlayerViewControllerAnimated detects whether or not
59
+ # @controller.view is part of a hierarchy, I guess. if you remove this
60
+ # then the test fails.
61
+ UIApplication.sharedApplication.keyWindow.rootViewController.view.addSubview(@controller.view)
62
+
63
+ @player.play_modal(@local_file, controller: @controller)
64
+
65
+ wait 1 do
66
+ @controller.modalViewController.should.not == nil
67
+
68
+ @player.stop
69
+ wait 1 do
70
+ @controller.modalViewController.should == nil
71
+ @controller = nil
72
+ @player = nil
73
+ end
74
+ end
75
+ end
76
+ end
77
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: bubble-wrap
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.2
4
+ version: 1.1.3
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -11,22 +11,27 @@ authors:
11
11
  autorequire:
12
12
  bindir: bin
13
13
  cert_chain: []
14
- date: 2012-07-19 00:00:00.000000000 Z
14
+ date: 2012-08-28 00:00:00.000000000 Z
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency
17
17
  name: mocha
18
- requirement: &70216781507520 !ruby/object:Gem::Requirement
18
+ requirement: !ruby/object:Gem::Requirement
19
19
  none: false
20
20
  requirements:
21
- - - =
21
+ - - '='
22
22
  - !ruby/object:Gem::Version
23
23
  version: 0.11.4
24
24
  type: :development
25
25
  prerelease: false
26
- version_requirements: *70216781507520
26
+ version_requirements: !ruby/object:Gem::Requirement
27
+ none: false
28
+ requirements:
29
+ - - '='
30
+ - !ruby/object:Gem::Version
31
+ version: 0.11.4
27
32
  - !ruby/object:Gem::Dependency
28
33
  name: mocha-on-bacon
29
- requirement: &70216781507100 !ruby/object:Gem::Requirement
34
+ requirement: !ruby/object:Gem::Requirement
30
35
  none: false
31
36
  requirements:
32
37
  - - ! '>='
@@ -34,10 +39,15 @@ dependencies:
34
39
  version: '0'
35
40
  type: :development
36
41
  prerelease: false
37
- version_requirements: *70216781507100
42
+ version_requirements: !ruby/object:Gem::Requirement
43
+ none: false
44
+ requirements:
45
+ - - ! '>='
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
38
48
  - !ruby/object:Gem::Dependency
39
49
  name: bacon
40
- requirement: &70216781506640 !ruby/object:Gem::Requirement
50
+ requirement: !ruby/object:Gem::Requirement
41
51
  none: false
42
52
  requirements:
43
53
  - - ! '>='
@@ -45,10 +55,15 @@ dependencies:
45
55
  version: '0'
46
56
  type: :development
47
57
  prerelease: false
48
- version_requirements: *70216781506640
58
+ version_requirements: !ruby/object:Gem::Requirement
59
+ none: false
60
+ requirements:
61
+ - - ! '>='
62
+ - !ruby/object:Gem::Version
63
+ version: '0'
49
64
  - !ruby/object:Gem::Dependency
50
65
  name: rake
51
- requirement: &70216781506220 !ruby/object:Gem::Requirement
66
+ requirement: !ruby/object:Gem::Requirement
52
67
  none: false
53
68
  requirements:
54
69
  - - ! '>='
@@ -56,7 +71,12 @@ dependencies:
56
71
  version: '0'
57
72
  type: :development
58
73
  prerelease: false
59
- version_requirements: *70216781506220
74
+ version_requirements: !ruby/object:Gem::Requirement
75
+ none: false
76
+ requirements:
77
+ - - ! '>='
78
+ - !ruby/object:Gem::Version
79
+ version: '0'
60
80
  description: RubyMotion wrappers and helpers (Ruby for iOS) - Making Cocoa APIs more
61
81
  Ruby like, one API at a time. Fork away and send your pull request.
62
82
  email:
@@ -87,6 +107,8 @@ extra_rdoc_files:
87
107
  - motion/http.rb
88
108
  - motion/location/location.rb
89
109
  - motion/location/pollute.rb
110
+ - motion/media/media.rb
111
+ - motion/media/player.rb
90
112
  - motion/reactor.rb
91
113
  - motion/reactor/default_deferrable.rb
92
114
  - motion/reactor/deferrable.rb
@@ -122,6 +144,7 @@ extra_rdoc_files:
122
144
  - spec/motion/core_spec.rb
123
145
  - spec/motion/http_spec.rb
124
146
  - spec/motion/location/location_spec.rb
147
+ - spec/motion/media/player_spec.rb
125
148
  - spec/motion/reactor/eventable_spec.rb
126
149
  - spec/motion/reactor_spec.rb
127
150
  - spec/motion/rss_parser_spec.rb
@@ -148,6 +171,7 @@ files:
148
171
  - lib/bubble-wrap/http.rb
149
172
  - lib/bubble-wrap/loader.rb
150
173
  - lib/bubble-wrap/location.rb
174
+ - lib/bubble-wrap/media.rb
151
175
  - lib/bubble-wrap/reactor.rb
152
176
  - lib/bubble-wrap/requirement.rb
153
177
  - lib/bubble-wrap/requirement/path_manipulation.rb
@@ -174,6 +198,8 @@ files:
174
198
  - motion/http.rb
175
199
  - motion/location/location.rb
176
200
  - motion/location/pollute.rb
201
+ - motion/media/media.rb
202
+ - motion/media/player.rb
177
203
  - motion/reactor.rb
178
204
  - motion/reactor/default_deferrable.rb
179
205
  - motion/reactor/deferrable.rb
@@ -190,6 +216,13 @@ files:
190
216
  - motion/ui/ui_control.rb
191
217
  - motion/ui/ui_view_controller.rb
192
218
  - resources/atom.xml
219
+ - resources/test.mp3
220
+ - samples/camera/Gemfile
221
+ - samples/camera/README.md
222
+ - samples/camera/Rakefile
223
+ - samples/camera/app/app_delegate.rb
224
+ - samples/camera/app/controllers/camera_controller.rb
225
+ - samples/camera/spec/main_spec.rb
193
226
  - samples/gesture/.gitignore
194
227
  - samples/gesture/Gemfile
195
228
  - samples/gesture/Gemfile.lock
@@ -201,6 +234,14 @@ files:
201
234
  - samples/gesture/app/views/drawing/gesture_view.rb
202
235
  - samples/gesture/app/views/drawing/rect_view.rb
203
236
  - samples/gesture/spec/main_spec.rb
237
+ - samples/location/.gitignore
238
+ - samples/location/Gemfile
239
+ - samples/location/README.md
240
+ - samples/location/Rakefile
241
+ - samples/location/app/app_delegate.rb
242
+ - samples/location/app/controllers/image_list_controller.rb
243
+ - samples/location/app/models/places.rb
244
+ - samples/location/spec/main_spec.rb
204
245
  - spec/lib/bubble-wrap/ext/motion_project_app_spec.rb
205
246
  - spec/lib/bubble-wrap/ext/motion_project_config_spec.rb
206
247
  - spec/lib/bubble-wrap/requirement/path_manipulation_spec.rb
@@ -224,6 +265,7 @@ files:
224
265
  - spec/motion/core_spec.rb
225
266
  - spec/motion/http_spec.rb
226
267
  - spec/motion/location/location_spec.rb
268
+ - spec/motion/media/player_spec.rb
227
269
  - spec/motion/reactor/eventable_spec.rb
228
270
  - spec/motion/reactor_spec.rb
229
271
  - spec/motion/rss_parser_spec.rb
@@ -241,7 +283,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
241
283
  version: '0'
242
284
  segments:
243
285
  - 0
244
- hash: 4073507284193479358
286
+ hash: 4493023769486268840
245
287
  required_rubygems_version: !ruby/object:Gem::Requirement
246
288
  none: false
247
289
  requirements:
@@ -250,10 +292,10 @@ required_rubygems_version: !ruby/object:Gem::Requirement
250
292
  version: '0'
251
293
  segments:
252
294
  - 0
253
- hash: 4073507284193479358
295
+ hash: 4493023769486268840
254
296
  requirements: []
255
297
  rubyforge_project:
256
- rubygems_version: 1.8.16
298
+ rubygems_version: 1.8.24
257
299
  signing_key:
258
300
  specification_version: 3
259
301
  summary: RubyMotion wrappers and helpers (Ruby for iOS) - Making Cocoa APIs more Ruby
@@ -282,6 +324,7 @@ test_files:
282
324
  - spec/motion/core_spec.rb
283
325
  - spec/motion/http_spec.rb
284
326
  - spec/motion/location/location_spec.rb
327
+ - spec/motion/media/player_spec.rb
285
328
  - spec/motion/reactor/eventable_spec.rb
286
329
  - spec/motion/reactor_spec.rb
287
330
  - spec/motion/rss_parser_spec.rb