From 7c9e09a33ecace15c594f00fdf9a296004f9c254 Mon Sep 17 00:00:00 2001 From: olistik Date: Tue, 25 Feb 2020 17:34:11 +0100 Subject: [PATCH] =?UTF-8?q?=F0=9F=8E=A8=20Refactor=20the=20method?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Exits as soon as possible to avoid nested conditions. --- lib/signalwire/relay/client.rb | 30 ++++++++++++++++-------------- 1 file changed, 16 insertions(+), 14 deletions(-) diff --git a/lib/signalwire/relay/client.rb b/lib/signalwire/relay/client.rb index 14e4973..4ec9139 100644 --- a/lib/signalwire/relay/client.rb +++ b/lib/signalwire/relay/client.rb @@ -69,23 +69,25 @@ def relay_execute(command, timeout = Signalwire::Relay::COMMAND_TIMEOUT, &block) promise.wait timeout - if promise.fulfilled? - event = promise.value - code = event.dig(:result, :result, :code) - message = event.dig(:result, :result, :message) - success = code == '200' ? :success : :failure - - if code - block.call(event, success) if block_given? - logger.error "Relay command failed with code #{code} and message: #{message}" unless success - else - logger.error("Relay error occurred, code #{event.error_code}: #{event.error_message}") if event.error? - block.call(event, :failure) if block_given? - end - else + unless promise.fulfilled? logger.error 'Unknown Relay command failure, command timed out' block.call(event, :failure) if block_given? + return end + + event = promise.value + code = event.dig(:result, :result, :code) + message = event.dig(:result, :result, :message) + success = code == '200' ? :success : :failure + + unless code + logger.error("Relay error occurred, code #{event.error_code}: #{event.error_message}") if event.error? + block.call(event, :failure) if block_given? + return + end + + block.call(event, success) if block_given? + logger.error "Relay command failed with code #{code} and message: #{message}" unless success end def calling