turntabler 0.3.4 → 0.3.5

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.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 45279f114e03b098fdbd8f69278c8e272b5f1f2d
4
+ data.tar.gz: 5730df669c2e6e78948e1c5c11c08debd39a4394
5
+ SHA512:
6
+ metadata.gz: 6d98316eb10a12358d9d0f8cb8429c976b2f9df298ae459136370656f67d823318377b1985c8995c3d76bae0be6b7e89d8ea83c14e778dcb79d742280cd9270f
7
+ data.tar.gz: cfcf8132f8d6865a401b641844c58b48ef18707368f2c35c7b7ff0a4f1fc74946789022d2c543a642fdd980c99ec0a9a4b594f2b91644946d1b1d81f7fce4b8d
@@ -1,5 +1,10 @@
1
1
  # master
2
2
 
3
+ ## 0.3.5 / 2013-07-20
4
+
5
+ * Fix song searches not respecting request timeouts
6
+ * Add Song#released_on
7
+
3
8
  ## 0.3.4 / 2013-07-11
4
9
 
5
10
  * Fix heartbeat responses not being sent properly resulting in periodic disconnects
@@ -506,12 +506,23 @@ module Turntabler
506
506
 
507
507
  api('file.search', :query => query, :page => options[:page])
508
508
 
509
+ conditions = {'query' => query}
510
+
511
+ # Time out if the response takes too long
512
+ EventMachine.add_timer(@timeout) do
513
+ trigger(:search_failed, conditions)
514
+ end if @timeout
515
+
509
516
  # Wait for the async callback
510
517
  songs = wait do |&resume|
511
- on(:search_completed, :once => true, :if => {'query' => query}) {|songs| resume.call(songs)}
512
- on(:search_failed, :once => true, :if => {'query' => query}) { resume.call }
518
+ on(:search_completed, :once => true, :if => conditions) {|songs| resume.call(songs)}
519
+ on(:search_failed, :once => true, :if => conditions) { resume.call }
513
520
  end
514
521
 
522
+ # Clean up any leftover handlers
523
+ @event_handlers[:search_completed].delete_if {|handler| handler.conditions == conditions}
524
+ @event_handlers[:search_failed].delete_if {|handler| handler.conditions == conditions}
525
+
515
526
  songs || raise(APIError, 'Search failed to complete')
516
527
  end
517
528
 
@@ -1,6 +1,7 @@
1
1
  require 'turntabler/resource'
2
2
  require 'turntabler/user'
3
3
  require 'turntabler/vote'
4
+ require 'date'
4
5
 
5
6
  module Turntabler
6
7
  # Represents a song that can be played on Turntable
@@ -29,6 +30,12 @@ module Turntabler
29
30
  # @return [String]
30
31
  attribute :label
31
32
 
33
+ # The date the song / album was released on
34
+ # @return [Date]
35
+ attribute :released_on, :releasedate do |value|
36
+ Date.parse(value)
37
+ end
38
+
32
39
  # The URL for the cover art image
33
40
  # @return [String]
34
41
  attribute :cover_art_url, :coverart
@@ -3,7 +3,7 @@ module Turntabler
3
3
  module Version
4
4
  MAJOR = 0
5
5
  MINOR = 3
6
- PATCH = 4
6
+ PATCH = 5
7
7
  STRING = [MAJOR, MINOR, PATCH].join(".")
8
8
  end
9
9
  end
metadata CHANGED
@@ -1,84 +1,74 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: turntabler
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.4
5
- prerelease:
4
+ version: 0.3.5
6
5
  platform: ruby
7
6
  authors:
8
7
  - Aaron Pfeifer
9
8
  autorequire:
10
9
  bindir: bin
11
10
  cert_chain: []
12
- date: 2013-07-11 00:00:00.000000000 Z
11
+ date: 2013-07-24 00:00:00.000000000 Z
13
12
  dependencies:
14
13
  - !ruby/object:Gem::Dependency
15
14
  name: em-synchrony
16
15
  requirement: !ruby/object:Gem::Requirement
17
- none: false
18
16
  requirements:
19
- - - ! '>='
17
+ - - '>='
20
18
  - !ruby/object:Gem::Version
21
19
  version: '0'
22
20
  type: :runtime
23
21
  prerelease: false
24
22
  version_requirements: !ruby/object:Gem::Requirement
25
- none: false
26
23
  requirements:
27
- - - ! '>='
24
+ - - '>='
28
25
  - !ruby/object:Gem::Version
29
26
  version: '0'
30
27
  - !ruby/object:Gem::Dependency
31
28
  name: em-http-request
32
29
  requirement: !ruby/object:Gem::Requirement
33
- none: false
34
30
  requirements:
35
- - - ! '>='
31
+ - - '>='
36
32
  - !ruby/object:Gem::Version
37
33
  version: '0'
38
34
  type: :runtime
39
35
  prerelease: false
40
36
  version_requirements: !ruby/object:Gem::Requirement
41
- none: false
42
37
  requirements:
43
- - - ! '>='
38
+ - - '>='
44
39
  - !ruby/object:Gem::Version
45
40
  version: '0'
46
41
  - !ruby/object:Gem::Dependency
47
42
  name: faye-websocket
48
43
  requirement: !ruby/object:Gem::Requirement
49
- none: false
50
44
  requirements:
51
- - - ! '>='
45
+ - - '>='
52
46
  - !ruby/object:Gem::Version
53
47
  version: '0'
54
48
  type: :runtime
55
49
  prerelease: false
56
50
  version_requirements: !ruby/object:Gem::Requirement
57
- none: false
58
51
  requirements:
59
- - - ! '>='
52
+ - - '>='
60
53
  - !ruby/object:Gem::Version
61
54
  version: '0'
62
55
  - !ruby/object:Gem::Dependency
63
56
  name: rake
64
57
  requirement: !ruby/object:Gem::Requirement
65
- none: false
66
58
  requirements:
67
- - - ! '>='
59
+ - - '>='
68
60
  - !ruby/object:Gem::Version
69
61
  version: '0'
70
62
  type: :development
71
63
  prerelease: false
72
64
  version_requirements: !ruby/object:Gem::Requirement
73
- none: false
74
65
  requirements:
75
- - - ! '>='
66
+ - - '>='
76
67
  - !ruby/object:Gem::Version
77
68
  version: '0'
78
69
  - !ruby/object:Gem::Dependency
79
70
  name: rspec
80
71
  requirement: !ruby/object:Gem::Requirement
81
- none: false
82
72
  requirements:
83
73
  - - ~>
84
74
  - !ruby/object:Gem::Version
@@ -86,7 +76,6 @@ dependencies:
86
76
  type: :development
87
77
  prerelease: false
88
78
  version_requirements: !ruby/object:Gem::Requirement
89
- none: false
90
79
  requirements:
91
80
  - - ~>
92
81
  - !ruby/object:Gem::Version
@@ -94,17 +83,15 @@ dependencies:
94
83
  - !ruby/object:Gem::Dependency
95
84
  name: simplecov
96
85
  requirement: !ruby/object:Gem::Requirement
97
- none: false
98
86
  requirements:
99
- - - ! '>='
87
+ - - '>='
100
88
  - !ruby/object:Gem::Version
101
89
  version: '0'
102
90
  type: :development
103
91
  prerelease: false
104
92
  version_requirements: !ruby/object:Gem::Requirement
105
- none: false
106
93
  requirements:
107
- - - ! '>='
94
+ - - '>='
108
95
  - !ruby/object:Gem::Version
109
96
  version: '0'
110
97
  description: Turntable.FM API for Ruby
@@ -166,6 +153,7 @@ files:
166
153
  - turntabler.gemspec
167
154
  homepage: http://github.com/obrie/turntabler
168
155
  licenses: []
156
+ metadata: {}
169
157
  post_install_message:
170
158
  rdoc_options:
171
159
  - --line-numbers
@@ -177,22 +165,19 @@ rdoc_options:
177
165
  require_paths:
178
166
  - lib
179
167
  required_ruby_version: !ruby/object:Gem::Requirement
180
- none: false
181
168
  requirements:
182
- - - ! '>='
169
+ - - '>='
183
170
  - !ruby/object:Gem::Version
184
171
  version: '0'
185
172
  required_rubygems_version: !ruby/object:Gem::Requirement
186
- none: false
187
173
  requirements:
188
- - - ! '>='
174
+ - - '>='
189
175
  - !ruby/object:Gem::Version
190
176
  version: '0'
191
177
  requirements: []
192
178
  rubyforge_project:
193
- rubygems_version: 1.8.24
179
+ rubygems_version: 2.0.0
194
180
  signing_key:
195
- specification_version: 3
181
+ specification_version: 4
196
182
  summary: Turntable.FM API for Ruby
197
183
  test_files: []
198
- has_rdoc: