diff --git a/lib/sms_api.rb b/lib/sms_api.rb new file mode 100644 index 000000000..886ed7f34 --- /dev/null +++ b/lib/sms_api.rb @@ -0,0 +1,44 @@ +require 'open-uri' +class SMSApi + attr_accessor :client + + def initialize + @client = Savon.client(wsdl: url) + end + + def url + return "" unless end_point_available? + open(Rails.application.secrets.sms_end_point).base_uri.to_s + end + + def authorization + Base64.encode64("#{Rails.application.secrets.sms_username}:#{Rails.application.secrets.sms_password}") + end + + def sms_deliver(phone, code) + return stubbed_response unless end_point_available? + + response = client.call(:enviar_sms_simples, message: request(phone, code)) + success?(response) + end + + def request(phone, code) + { autorizacion: authorization, + destinatarios: { destinatario: phone }, + texto_mensaje: "Código de verificación: #{code}", + solicita_notificacion: "All" } + end + + def success?(response) + response.body[:respuesta_sms][:respuesta_servicio_externo][:texto_respuesta] == "Success" + end + + def end_point_available? + Rails.env.staging? || Rails.env.production? + end + + def stubbed_response + {:respuesta_sms=>{:identificador_mensaje=>"1234567", :fecha_respuesta=>"Thu, 20 Aug 2015 16:28:05 +0200", :respuesta_pasarela=>{:codigo_pasarela=>"0000", :descripcion_pasarela=>"Operación ejecutada correctamente."}, :respuesta_servicio_externo=>{:codigo_respuesta=>"1000", :texto_respuesta=>"Success"}}} + end + +end