ruby-mpd 0.2.4 → 0.2.5

Sign up to get free protection for your applications and to get access to all the features.
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.