From d062547da61e9813c1a308383f679f028117e3fd Mon Sep 17 00:00:00 2001 From: Joe Heitzeberg Date: Mon, 28 Jul 2014 23:38:43 -0700 Subject: [PATCH 1/2] Fix to what was probably a copy and paste error. Wreaked much havoc. --- lib/sonos/endpoint/a_v_transport.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/sonos/endpoint/a_v_transport.rb b/lib/sonos/endpoint/a_v_transport.rb index 754c975..2d3639a 100644 --- a/lib/sonos/endpoint/a_v_transport.rb +++ b/lib/sonos/endpoint/a_v_transport.rb @@ -103,7 +103,7 @@ def select_track(index) # Clear the queue def clear_queue - parse_response parse_response send_transport_message('RemoveAllTracksFromQueue') + parse_response send_transport_message('RemoveAllTracksFromQueue') end # Save queue From 42592d47f591a1bad3536253a0d611dced5ce7f9 Mon Sep 17 00:00:00 2001 From: Joe Heitzeberg Date: Sun, 10 Aug 2014 21:26:11 -0700 Subject: [PATCH 2/2] things don't return correct results when already grouped. So skipping some nil explosions --- lib/sonos/endpoint/a_v_transport.rb | 23 ++++++++++++++--------- lib/sonos/features/voiceover.rb | 5 +++++ 2 files changed, 19 insertions(+), 9 deletions(-) diff --git a/lib/sonos/endpoint/a_v_transport.rb b/lib/sonos/endpoint/a_v_transport.rb index 2d3639a..6fbc74b 100644 --- a/lib/sonos/endpoint/a_v_transport.rb +++ b/lib/sonos/endpoint/a_v_transport.rb @@ -39,13 +39,14 @@ def has_music? # Get information about the state the player is in. def get_player_state response = send_transport_message('GetTransportInfo') - body = response.body[:get_transport_info_response] - - { - status: body[:current_transport_status], - state: body[:current_transport_state], - speed: body[:current_speed], - } + if response + body = response.body[:get_transport_info_response] + { + status: body[:current_transport_status], + state: body[:current_transport_state], + speed: body[:current_speed], + } + end end # Returns true if the player is not in a paused or stopped state @@ -237,12 +238,16 @@ def set_av_transport_uri(uri) end def transport_client - @transport_client ||= Savon.client endpoint: "http://#{self.group_master.ip}:#{Sonos::PORT}#{TRANSPORT_ENDPOINT}", namespace: Sonos::NAMESPACE, log: Sonos.logging_enabled + if self.group_master + @transport_client ||= Savon.client endpoint: "http://#{self.group_master.ip}:#{Sonos::PORT}#{TRANSPORT_ENDPOINT}", namespace: Sonos::NAMESPACE, log: Sonos.logging_enabled + end end def send_transport_message(name, part = '1') action = "#{TRANSPORT_XMLNS}##{name}" message = %Q{0#{part}} - transport_client.call(name, soap_action: action, message: message) + if transport_client + transport_client.call(name, soap_action: action, message: message) + end end end diff --git a/lib/sonos/features/voiceover.rb b/lib/sonos/features/voiceover.rb index 0fb0ab6..e26ff90 100644 --- a/lib/sonos/features/voiceover.rb +++ b/lib/sonos/features/voiceover.rb @@ -13,6 +13,11 @@ def voiceover!(uri, vol = nil) result.merge({duration: (Time.now - start_time )}) end + def resume_queue + puts "resume queue" + play uid.gsub('uuid', 'x-rincon-queue') + '#0' + end + protected def with_isolated_state