Class: VoicecomSms::Provider

Inherits:
Object
  • Object
show all
Defined in:
lib/voicecom_sms/provider.rb

Constant Summary collapse

STATUS =
{
  undefined: 0,
  success: 1,
  failure: 2
}.freeze

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initializeProvider

Returns a new instance of Provider.



15
16
17
18
19
# File 'lib/voicecom_sms/provider.rb', line 15

def initialize
  check_config
  @request = VoicecomSms::Request.new
  @response = nil
end

Instance Attribute Details

#requestObject (readonly)

Returns the value of attribute request.



13
14
15
# File 'lib/voicecom_sms/provider.rb', line 13

def request
  @request
end

#responseObject (readonly)

Returns the value of attribute response.



13
14
15
# File 'lib/voicecom_sms/provider.rb', line 13

def response
  @response
end

Instance Method Details

#normalize_number(number) ⇒ Object



39
40
41
42
43
44
# File 'lib/voicecom_sms/provider.rb', line 39

def normalize_number(number)
  number.gsub!(/\s+/, '')
  number.sub!(/^(\+|00)/, '')
  number.sub!(/^0/, '359')
  number
end

#send_sms(number, text) ⇒ Object



21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
# File 'lib/voicecom_sms/provider.rb', line 21

def send_sms(number, text)
  message = VoicecomSms::Message.create({text: text, number: normalize_number(number), status: STATUS[:undefined]})

  make_request(message, number, text)


  if @request.error or !@request.sent?
    message.update_attributes(response: @request.error, status: STATUS[:failure])
  else
    @response = VoicecomSms::Response.new(@request.raw_response)
    status = @response.success? ? STATUS[:success] : STATUS[:failure]

    message.update_attributes(response: @response.inspect, status: status, response_received_at: Time.current)
  end

  message.status
end