class SFTP
Attributes
last_file_sended[RW]
Public Class Methods
new(options = {})
click to toggle source
# File lib/rtedexis/sftp.rb, line 5 def initialize(options = {}) @config = {host: '200.41.57.106'} config(options) end
Public Instance Methods
config(options = {})
click to toggle source
# File lib/rtedexis/sftp.rb, line 10 def config(options = {}) options.each do |key,value| @config[key] = value end @config end
send(args = {})
click to toggle source
# File lib/rtedexis/sftp.rb, line 17 def send(args = {}) if args[:numbers_list].kind_of?(Array) and !args[:text].empty? file_content = generate_file_content(args[:numbers_list], args[:text]) args[:filename] ? write_file_to_sftp_server(file_content[:for_delivery], filename: args[:filename]) : write_file_to_sftp_server(file_content[:for_delivery]) end Response.new(invalid_numbers: file_content[:invalid_numbers], messages_sended: file_content[:messages_sended]) end
send_with_diferent_text(numbers, args = {})
click to toggle source
# File lib/rtedexis/sftp.rb, line 25 def send_with_diferent_text(numbers, args = {}) file_content = generate_file_content_for_individual_messages(numbers) args[:filename] ? write_file_to_sftp_server(file_content[:for_delivery], filename: args[:filename]) : write_file_to_sftp_server(file_content[:for_delivery]) end
Private Instance Methods
generate_file_content(number_list, text)
click to toggle source
# File lib/rtedexis/sftp.rb, line 32 def generate_file_content(number_list, text) result = {for_delivery: String.new, invalid_numbers: Array.new, messages_sended: 0} number_list.each do |number| if is_in_cellphone_format?(number) sended_point = 0 while text.length > sended_point result[:for_delivery] << get_operator_code(number) + ';' + get_number_without_operator_code(number) + ';' + text[sended_point, 160] + "\n" sended_point += 160 result[:messages_sended] += 1 end else result[:invalid_numbers] << number end end result end
generate_file_content_for_individual_messages(items)
click to toggle source
# File lib/rtedexis/sftp.rb, line 49 def generate_file_content_for_individual_messages(items) result = {for_delivery: String.new, invalid_numbers: Array.new, messages_sended: 0} items.each do |item| if is_in_cellphone_format?(item[:number]) sended_point = 0 while item[:text].length > sended_point result[:for_delivery] << get_operator_code(item[:number]) + ';' + get_number_without_operator_code(item[:number]) + ';' + item[:text][sended_point, 160] + "\n" sended_point += 160 result[:messages_sended] += 1 end else result[:invalid_numbers] << item end end result end
generate_file_name()
click to toggle source
# File lib/rtedexis/sftp.rb, line 84 def generate_file_name "masivo_" + Time.now.to_i.to_s + ".txt" end
get_number_without_operator_code(number)
click to toggle source
# File lib/rtedexis/sftp.rb, line 74 def get_number_without_operator_code(number) if number[0] == '0' number[4,7] else number[3,7] end end
get_operator_code(number)
click to toggle source
# File lib/rtedexis/sftp.rb, line 66 def get_operator_code(number) if number[0] == '0' number[1,3] else number[0,3] end end
is_in_cellphone_format?(number)
click to toggle source
# File lib/rtedexis/sftp.rb, line 98 def is_in_cellphone_format?(number) true if is_number?(number) and (number.length == 10 or number.length == 11) end
is_number?(string)
click to toggle source
# File lib/rtedexis/sftp.rb, line 102 def is_number?(string) true if Integer(string) rescue false end
write_file_to_sftp_server(content, args = {})
click to toggle source
# File lib/rtedexis/sftp.rb, line 88 def write_file_to_sftp_server(content, args = {}) args[:filename] ? file_name = args[:filename] : file_name = generate_file_name Net::SFTP.start(@config[:host], @config[:username], :password => @config[:password]) do |sftp| sftp.file.open("/entrada/" + file_name, "w") do |msg| msg.puts content end end @last_file_sended = file_name end