Class: Terasms::Sms

Inherits:
HttpClient show all
Defined in:
lib/terasms.rb

Constant Summary collapse

ERRORS =
{
  -1 => 'Неверный логин или пароль',
  -20 => 'Пустой текст сообщения',
  -30 => 'Пустой номер абонента',
  -40 => 'Неправильно задан номер абонента',
  -45 => 'Превышено количество номеров',
  -50 => 'Неправильно задано имя отправителя',
  -60 => 'Рассылка по данному направлению недоступна',
  -70 => 'Недостаточно средств на счете',
  -80 => 'Не установлена стоимость рассылки по данному направлению',
  -90 => 'Рассылка запрещена',
  -100 => 'Не указаны необходимые параметры',
  -110 => 'Номер в черном списке',
  -120 => 'Некорректно задано время отложенной отправки',
  -130 => 'Некорректно задано временное окно отправки',
  -140 => 'Передан некорректный ID рассылки',
  -160 => 'Превышен дневной лимит рассылки (Вы можете установить максимальную сумму ежедневной рассылки после согласования с Вашим менеджером)',
  -999 => 'Ошибка обработки ответа API'
}

Instance Method Summary collapse

Methods inherited from HttpClient

#submit

Instance Method Details

#balanceObject



147
148
149
150
151
# File 'lib/terasms.rb', line 147

def balance
  result =  submit Terasms.config.balance_url, {}, 'POST', 'json', Terasms.config.to_h.slice(:login, :password).to_json
  result.merge!({"info"=> error(main_status(result)), "status"=>"error"}) if main_status(result) < 0
  result
end

#error(code) ⇒ Object



115
116
117
# File 'lib/terasms.rb', line 115

def error code
  ERRORS[code]
end

#main_status(result) ⇒ Object



119
120
121
# File 'lib/terasms.rb', line 119

def main_status result
  result["result"]["status"] rescue -999
end

#message_id(result) ⇒ Object



127
128
129
# File 'lib/terasms.rb', line 127

def message_id result
  result["result"]["message_infos"].last["id"] rescue -999
end

#message_status(result) ⇒ Object



123
124
125
# File 'lib/terasms.rb', line 123

def message_status result
  result["result"]["message_infos"].last["status"] rescue -999
end

#send(params) ⇒ Object

target, sender, message, cp, mass_push, delimiter, flash, relative_time, relative_time_read, date_schedule, timezone, time_from, time_to, schedule_id, type



133
134
135
136
137
138
139
140
141
142
143
144
145
# File 'lib/terasms.rb', line 133

def send params
  result = submit Terasms.config.url, {}, 'POST', 'json', Terasms.config.to_h.tap{|hs| hs.delete(:url)}.merge(params).to_json
  if main_status(result) < 0
    result.merge!({"info"=> error(main_status(result)), "status"=>"error"}) 
  else
    if message_status(result) < 0
      result.merge!({"info"=> error(message_status(result)), "status"=>"error"}) 
    else
      result.merge!({"id"=> message_id(result)})
    end
  end
  result
end

#status(id) ⇒ Object



157
158
159
160
161
162
163
164
# File 'lib/terasms.rb', line 157

def status id
  begin
    raise 'wrong message id' if statuses([id])["result"]["statuses"] == []
    {"result"=> "success"}.merge(statuses([id])["result"]["statuses"].last.slice("status", "status_desc"))
  rescue => error
    {"result"=> "error", "info" => error.to_s}
  end
end

#statuses(array_of_id) ⇒ Object



153
154
155
# File 'lib/terasms.rb', line 153

def statuses array_of_id
  submit(Terasms.config.status_url, {}, 'POST', 'json', Terasms.config.to_h.slice(:login, :password, :sign).merge({'message_ids': array_of_id}).to_json)
end