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.
- data/Gemfile.lock +1 -1
- data/README.md +32 -9
- data/Rakefile +1 -5
- data/lib/bubble-wrap/all.rb +1 -1
- data/lib/bubble-wrap/http.rb +1 -0
- data/lib/bubble-wrap/media.rb +8 -0
- data/lib/bubble-wrap/version.rb +1 -1
- data/motion/core/app.rb +5 -0
- data/motion/core/device.rb +1 -1
- data/motion/core/json.rb +1 -0
- data/motion/core/ns_url_request.rb +4 -2
- data/motion/core/persistence.rb +7 -1
- data/motion/core/string.rb +2 -2
- data/motion/http.rb +81 -65
- data/motion/location/location.rb +2 -2
- data/motion/media/media.rb +15 -0
- data/motion/media/player.rb +139 -0
- data/motion/test_suite_delegate.rb +1 -0
- data/resources/test.mp3 +0 -0
- data/samples/camera/Gemfile +3 -0
- data/samples/camera/README.md +4 -0
- data/samples/camera/Rakefile +9 -0
- data/samples/camera/app/app_delegate.rb +8 -0
- data/samples/camera/app/controllers/camera_controller.rb +61 -0
- data/samples/camera/spec/main_spec.rb +9 -0
- data/samples/location/.gitignore +5 -0
- data/samples/location/Gemfile +3 -0
- data/samples/location/README.md +4 -0
- data/samples/location/Rakefile +10 -0
- data/samples/location/app/app_delegate.rb +8 -0
- data/samples/location/app/controllers/image_list_controller.rb +30 -0
- data/samples/location/app/models/places.rb +15 -0
- data/samples/location/spec/main_spec.rb +9 -0
- data/spec/motion/core/app_spec.rb +7 -1
- data/spec/motion/core/json_spec.rb +4 -0
- data/spec/motion/core/persistence_spec.rb +7 -3
- data/spec/motion/core/string_spec.rb +24 -0
- data/spec/motion/http_spec.rb +73 -61
- data/spec/motion/media/player_spec.rb +77 -0
- 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'
|
data/spec/motion/http_spec.rb
CHANGED
@@ -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
|
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
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
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 =
|
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(
|
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(
|
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(
|
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 "
|
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(
|
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 =
|
253
|
-
|
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(
|
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(
|
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 "
|
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)
|
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
|
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
|
355
|
+
@query.request.done_loading?.should.equal false
|
345
356
|
@query.request.done_loading!
|
346
|
-
@query.request.done_loading
|
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
|
481
|
+
@query.request.done_loading?.should == false
|
471
482
|
@query.connection(nil, didFailWithError:@fake_error)
|
472
|
-
@query.request.done_loading
|
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
|
516
|
+
@query.request.done_loading?.should == false
|
506
517
|
|
507
518
|
@query.connectionDidFinishLoading(nil)
|
508
|
-
@query.request.done_loading
|
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 =
|
553
|
+
@request = NSMutableURLRequest.requestWithURL NSURL.URLWithString('http://fakehost.local/')
|
543
554
|
end
|
544
555
|
|
545
|
-
it "should
|
546
|
-
|
547
|
-
|
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
|
-
|
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
|
-
|
552
|
-
|
553
|
-
|
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
|
-
|
557
|
-
|
558
|
-
|
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
|
-
|
563
|
-
|
564
|
-
|
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.
|
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-
|
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:
|
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:
|
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:
|
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:
|
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:
|
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:
|
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:
|
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:
|
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:
|
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:
|
295
|
+
hash: 4493023769486268840
|
254
296
|
requirements: []
|
255
297
|
rubyforge_project:
|
256
|
-
rubygems_version: 1.8.
|
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
|