ruby-mpd 0.2.4 → 0.2.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 9bf3cf234bf56dbec2bd466c2457668b8eb8fa32
4
- data.tar.gz: fadab4800a679ef6ea76bb3ac0a8ef8490fd7517
3
+ metadata.gz: 65799fe0826f542ebb67a82b3041bdaf8b17aacd
4
+ data.tar.gz: 0416d81eaf92f7f559c9bfd969c11b5f519f9e53
5
5
  SHA512:
6
- metadata.gz: 420a8bdb88f526907171f901ab09ee50427aec387b4d3895f4841af2858723891be0b662c4aafd0b303108446a28051e0570e49a0a61a00b443c213b019a59aa
7
- data.tar.gz: 3f36bd23833a605f48a4b507874afff877f8130d0f1e097ebd58afbba04a6e87afd9d5e422f09c0ebdfa7bcf7db8a92f726e4190303de8ed919b586cd6e50f08
6
+ metadata.gz: a9bc49c2e0f69bdd15be62cd0676597ae0730b5e263c1f8ed6dbb7d27d9cbd2e60502c62ee981addc6b5386e32ab182845fe3173be00517ab9b721b34dde04db
7
+ data.tar.gz: f75b7368594cb02b8cfa225c57e8a27e16737562e984262059bffd8cce8740a31bcf9b33866343b89f68594790b71e5945d3972a1005eaf246e6f75bcd82a0fd
data/README.rdoc CHANGED
@@ -220,7 +220,7 @@ in order to recieve those values:
220
220
  Finally, the easiest step. In order for callbacks to work, connect to the server
221
221
  with callbacks enabled:
222
222
 
223
- mpd.connect true
223
+ mpd.connect(callbacks: true)
224
224
 
225
225
  Easy as pie. The above will connect to the server like normal, but this time it will
226
226
  create a new thread that loops until you issue a `disconnect`. This loop checks the
@@ -107,7 +107,6 @@ class MPD
107
107
  # Converts the response to MPD::Song objects.
108
108
  # @return [Array<MPD::Song>] An array of songs.
109
109
  def build_songs_list(array)
110
- return [] if !array.is_a?(Array)
111
110
  return array.map {|hash| Song.new(hash) }
112
111
  end
113
112
 
@@ -132,27 +131,22 @@ class MPD
132
131
  #
133
132
  # @return [Array<Hash>, Array<String>, String, Integer] Parsed response.
134
133
  def parse_response(command, string)
135
- # return explicit array if needed
136
- return RETURN_ARRAY.include?(command) ? [] : true if string == true
134
+ # return explicit array or true if the message is empty
135
+ return RETURN_ARRAY.include?(command) ? [] : true if string.empty?
137
136
  if command == :listall
138
- build_hash(string)
137
+ return build_hash(string)
139
138
  elsif command == :listallinfo
140
- build_response(command, string, [:directory, :playlist])
141
- else
142
- build_response(command, string)
139
+ string = filter_lines(string, [:directory, :playlist])
143
140
  end
141
+
142
+ build_response(command, string)
144
143
  end
145
144
 
146
145
  # Parses the response into appropriate objects (either a single object,
147
146
  # or an array of objects or an array of hashes).
148
147
  #
149
148
  # @return [Array<Hash>, Array<String>, String, Integer] Parsed response.
150
- def build_response(command, string, filter=nil)
151
- return [] if string.nil? || !string.is_a?(String)
152
-
153
- # filter lines if filter specified
154
- string = filter_lines(string,filter) if filter
155
-
149
+ def build_response(command, string)
156
150
  chunks = make_chunks(string)
157
151
  # if there are any new lines (more than one data piece), it's a hash, else an object.
158
152
  is_hash = chunks.any? {|chunk| chunk.include? "\n"}
@@ -1,3 +1,3 @@
1
1
  class MPD
2
- VERSION = '0.2.4'
2
+ VERSION = '0.2.5'
3
3
  end
data/lib/ruby-mpd.rb CHANGED
@@ -136,19 +136,32 @@ class MPD
136
136
  # When called without any arguments, this will just connect to the server
137
137
  # and wait for your commands.
138
138
  #
139
- # When called with true as an argument, this will enable callbacks by starting
139
+ # When called with +callbacks: true+ as an argument, this will enable callbacks by starting
140
140
  # a seperate polling thread, which will also automatically reconnect if disconnected
141
141
  # for whatever reason.
142
142
  #
143
143
  # @return [true] Successfully connected.
144
144
  # @raise [MPDError] If connect is called on an already connected instance.
145
- def connect(callbacks = false)
145
+ def connect(opts = {callbacks: false})
146
146
  raise ConnectionError, 'Already connected!' if self.connected?
147
147
 
148
148
  @socket = File.exists?(@hostname) ? UNIXSocket.new(@hostname) : TCPSocket.new(@hostname, @port)
149
- @version = @socket.gets.chomp.gsub('OK MPD ', '') # Read the version
150
149
 
151
- callback_thread if callbacks
150
+ # by protocol, we need to get a 'OK MPD <version>' reply
151
+ # should we fail to do so, the connection was unsuccessful
152
+ if response = @socket.gets
153
+ @version = response.chomp.gsub('OK MPD ', '') # Read the version
154
+ else
155
+ reset_vars
156
+ raise ConnectionError, 'Unable to connect (possibly too many connections open)'
157
+ end
158
+
159
+ if opts == true || opts == false
160
+ warn "Using 'true' or 'false' as an argument to #connect has been deprecated, and will be removed in the future!"
161
+ opts = {callbacks: opts}
162
+ end
163
+
164
+ callback_thread if opts[:callbacks]
152
165
  return true
153
166
  end
154
167
 
@@ -243,7 +256,6 @@ class MPD
243
256
  end
244
257
 
245
258
  if !error
246
- return true if msg.empty?
247
259
  return msg
248
260
  else
249
261
  err = error.match(/^ACK \[(?<code>\d+)\@(?<pos>\d+)\] \{(?<command>.*)\} (?<message>.+)$/)
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ruby-mpd
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.4
4
+ version: 0.2.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Blaž Hrastnik
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-06-29 00:00:00.000000000 Z
11
+ date: 2013-09-23 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: A powerful, modern and feature complete library for the Music Player
14
14
  Daemon.