lib/zenvia.rb in zenvia-rb-0.0.2 vs lib/zenvia.rb in zenvia-rb-0.0.3

- old
+ new

@@ -1,52 +1,13 @@ -require "zenvia/version" -require 'httparty' -require 'base64' -require 'json' - class Zenvia - # initialize Zenvia class with user and code, both given from Zenvia (the corp) - def initialize(user, code) - return puts 'User and code must no be nil' if user.nil? or code.nil? - # such as done in shell (echo -n user:code | base64), the strip method removes '\n' from the generated code - @auth = Base64.encode64("#{user}:#{code}").strip + def self.configure + yield Config end - attr_writer :auth - - # send the message itself, from: user or enterprise name, number: receiver number, message: text - # delay: given in seconds to determinate - def send_message(from, number, message, delay = 0) - return puts 'The receiver must not be nil' if number.nil? - return puts 'The sender cannot be nil' if from.nil? - number = number.to_s unless number.class.eql? String - return puts 'The number must have just numbers!' unless /\d*/.match(number) - response = send_sms(from, number, message, delay) - response = JSON.parse(response.body) - puts 'Response: ' + response['sendSmsResponse']['statusDescription'] + def self.config + Config end - - private - # todo add multiple sms - def send_sms(from, number, message, delay) - # due to timezone, I decided to use strftime in order to send the message instantly - schedule = (Time.now + delay).strftime("%Y-%m-%dT%H:%M:%S") - number.insert(0, '55') unless /^55/.match(number) - endpoint = 'https://api-rest.zenvia360.com.br/services/send-sms' - HTTParty.post(endpoint, - body: { - sendSmsRequest: { - from: from, - to: number, - schedule: schedule, - msg: message, - callbackOption: 'NONE' - } - }.to_json, - headers: { - 'Content-Type' => 'application/json', - 'Authorization' => "Basic #{@auth}", - 'Accept' => 'application/json' - } - ) - end end + +require "zenvia/version" +require 'zenvia/config' +require 'zenvia/sms'