Class: Rfsms::Connection

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

Instance Method Summary collapse

Constructor Details

#initialize(url, login, password) ⇒ Connection

Returns a new instance of Connection.



173
174
175
176
177
178
179
180
# File 'lib/rfsms.rb', line 173

def initialize(url, , password)
  @uri = URI.parse(url)
  @connection = Net::HTTP.new(@uri.host, @uri.port)
  @connection.use_ssl = true
  @connection.verify_mode = OpenSSL::SSL::VERIFY_NONE
  @login = 
  @password = password
end

Instance Method Details

#balanceRfsms::BalanceAnwer

возвращает текущий баланс

Returns:

  • (Rfsms::BalanceAnwer)


256
257
258
259
260
261
262
263
264
265
266
267
# File 'lib/rfsms.rb', line 256

def balance
  message = message_header + message_footer
  STDERR.puts "+SENDED:\n"+message+"\n-SENDED\n" if $DEBUG
  @connection.request_post('/balance.xml', message) do |response|
    case response
    when Net::HTTPSuccess
      return BalanceAnswer.new(response.body)
    else
      response.error!
    end
  end
end

#cancel(smsid) ⇒ Rfsms::CancelAnswer

отменяет СМС с идентификатором smsid

Parameters:

  • smsid (Integer, String)

Returns:



273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
# File 'lib/rfsms.rb', line 273

def cancel(smsid)
  message = message_header
  message << <<END
<smsid>#{smsid}</smsid>
END
  message << message_footer
  STDERR.puts "+SENDED:\n"+message+"\n-SENDED\n" if $DEBUG
  @connection.request_post('/cancel.xml', message) do |response|
    case response
    when Net::HTTPSuccess
      return CancelAnswer.new(response.body)
    else
      response.error!
    end
  end
end

#report(options = {}) ⇒ Rfsms::ReportAnswer

получает отчет о списке рассылки при указанных датах начала(start) и конца(stop) типа Time если даты не указаны получает за весь период

Parameters:

  • options (Hash{Symbol => Time}) (defaults to: {})

    :start - начало, :stop - окончание

Returns:



227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
# File 'lib/rfsms.rb', line 227

def report(options = {})
  message = message_header
  unless options.empty?
    start, stop = options[:start].strftime(DATEFORMAT), options[:stop].strftime(DATEFORMAT)
    if start =~ DATEREGEXP and stop =~ DATEREGEXP
      message << <<-PERIOD
        <start>#{start}</start>
        <stop>#{stop}</stop>
      PERIOD
    else
      raise ArgumentError, "Date #{start} or date #{stop} is incorrect!"
    end
  end
  message << message_footer

  STDERR.puts "+SENDED:\n"+message+"\n-SENDED\n" if $DEBUG
  @connection.request_post('/report.xml', message) do |response|
    case response
    when Net::HTTPSuccess
      return ReportAnswer.new(response.body)
    else
      response.error!
    end
  end
end

#send(text, phones, datetime = nil, source = nil, onlydelivery = false) ⇒ Rfsms::SendAnswer

отправляет text по указанным phones = [].

Parameters:

  • text (String)

    текст сообщения

  • phones (Array<String, Hash>)

    телефоны на которые будет отправлено, может быть хэшем где значения - индивидуальный текст

  • datetime (Time) (defaults to: nil)

    время в которое необходимо отправить, nil - сейчас

  • source (String) (defaults to: nil)

    кто отправил

  • onlydelivery) (Boolean)

Returns:



190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
# File 'lib/rfsms.rb', line 190

def send(text, phones, datetime = nil, source = nil, onlydelivery = false)
  message = message_header
  message << "<text>#{text}</text>"

  case phones
  when Array
    phones.each do |phone|
      message << "  <to number='#{phone}'></to>\n"
    end
  when Hash
    phones.each_pair do |phone, t|
      message << "  <to number='#{phone}'>#{t}</to>\n"
    end
  end

  message << "<datetime>#{datetime.strftime(DATEFORMAT)}</datetime>" if datetime
  message << "<source>#{source}</source>" if source
  message << "<onlydelivery>1</onlydelivery>" if onlydelivery
  message << message_footer

  STDERR.puts "+SENDED:\n"+message+"\n-SENDED\n" if $DEBUG
  @connection.request_post('/send.xml', message) do |response|
    case response
    when Net::HTTPSuccess
      return SendAnswer.new(response.body)
    else
      response.error!
    end
  end
end