Sha256: 828ec8476b0c0f962929231c382693867d8c428804185077e0898be3a2eae0ba

Contents?: true

Size: 1.91 KB

Versions: 1

Compression:

Stored size: 1.91 KB

Contents

require 'httparty'
require 'json'
require 'timeout'

module Zenvia
  class SMS
    OpenSSL::SSL::SSLContext::DEFAULT_PARAMS[:ssl_version] = 'SSLv3'

    attr_writer :from, :number, :message

    # function to send the message
    def self.send_message(from = nil, number, message)
      begin
        @from = from.nil? ? Zenvia.config.from : from
        @message = message
        # create numbers array and push onto it number(s) from parameters
        numbers = Array.new
        number.is_a?(Array) ? numbers = number : numbers.push(number)
        numbers.each do |nb|
          @number = nb
          response = self.send_sms
          response = JSON.parse(response.body)
          puts "Response for #{nb}: #{response['sendSmsResponse']['detailDescription']}"
        end
      rescue => e
        puts 'Error!'
        raise e
      end
    end

    private
    def self.send_sms
      # convert number to string (if isn't yet) and insert the country code (standard: BR, 55)
      # if not found
      @number = @number.to_s unless @number.is_a? String
      patterns = ['(', ')', ' ', '-']
      patterns.each {|p| @number = @number.gsub(p, '')}
      @number.insert(0, '55') unless /^55/.match(@number)
      # retrieve auth value set in Config class
      @auth = Zenvia.config.auth
      endpoint = 'https://api-rest.zenvia360.com.br/services/send-sms'
      HTTParty.post(endpoint,
                    body: {
                        sendSmsRequest: {
                            from: @from,
                            to: @number,
                            msg: @message,
                            callbackOption: 'NONE'
                        }
                    }.to_json,
                    headers: {
                        'Content-Type' => 'application/json',
                        'Authorization' => "Basic #{@auth}",
                        'Accept' => 'application/json'
                    }
      )
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
zenvia-rb-0.0.9 lib/zenvia/sms.rb