Class: SmsKit::SmsTrade

Inherits:
Provider show all
Defined in:
lib/sms_kit/providers/sms_trade.rb

Constant Summary collapse

ROUTE_BASIC =
'Basic'.freeze
ROUTE_GOLD =
'gold'.freeze
ROUTE_DIRECT =
'direct'.freeze
HTTP_ENDPOINT =
"https://gateway.smstrade.de/"
ERROR_CODES =
{
  10  => 'Receiver number not valid',
  20  => 'Sender number not valid',
  30  => 'Message text not valid',
  31  => 'Message type not valid',
  40  => 'SMS route not valid',
  50  => 'Identification failed',
  60  => 'Not enough balance in account',
  70  => 'Network does not support the route',
  71  => 'Feature is not possible with the route',
  80  => 'Handover to SMSC failed',
  100 => 'SMS has been sent successfully'
}.freeze

Constants included from HTTP

HTTP::USER_AGENT

Instance Attribute Summary

Attributes inherited from Provider

#data, #error_code, #error_message

Instance Method Summary collapse

Methods inherited from Provider

deliver, #initialize

Methods included from HTTP

#connection, #get, #post, #uri

Methods included from Config

included

Constructor Details

This class inherits a constructor from SmsKit::Provider

Instance Method Details

#default_paramsObject



59
60
61
62
63
64
65
66
67
# File 'lib/sms_kit/providers/sms_trade.rb', line 59

def default_params
  {
    key:    config.gateway_key,
    from:   config.sender,
    route:  config.route,
    concat: 1,
    dlr:    1
  }
end

#deliverObject



27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
# File 'lib/sms_kit/providers/sms_trade.rb', line 27

def deliver
  response = post URI.encode_www_form params

  if 'ERROR_LOGIN' == response.body
    raise DeliveryError, "Login failed (ERROR_LOGIN)"
  end

  parsed_response = response.body.split "\n"
  status     = parsed_response.shift
  message_id = parsed_response.shift

  if '100' == status
    message_id.to_i
  else
    raise DeliveryError, "#{ERROR_CODES[status.to_i]} (#{status})"
  end
end

#param_namesObject



52
53
54
55
56
57
# File 'lib/sms_kit/providers/sms_trade.rb', line 52

def param_names
  [
    :message, :to, :from, :route, :dlr, :message_id,
    :debug, :cost, :count, :response, :ref, :concat, :senddata
  ]
end

#paramsObject



45
46
47
48
49
50
# File 'lib/sms_kit/providers/sms_trade.rb', line 45

def params
  default_params.merge(params_from_data).tap do |p|
    p[:message_id] ||= 1
    p[:message]    ||= data[:text]
  end
end

#params_from_dataObject



69
70
71
# File 'lib/sms_kit/providers/sms_trade.rb', line 69

def params_from_data
  data.select { |k, _| param_names.include? k.to_sym }
end