Class: OpenMarket::Api

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

Defined Under Namespace

Classes: Http, InvalidOptions

Constant Summary collapse

ALLOWED_OPTIONS =
[:dr_url, :ticket_id_for_retry, :carrier_id, :note, :minutes_to_retry, :short_code]

Instance Method Summary collapse

Instance Method Details

#carrier_lookup(phone) ⇒ Object



19
20
21
22
23
# File 'lib/open_market/api.rb', line 19

def carrier_lookup(phone)
  CarrierLookupResponse.new(post(:preview) do |b|
    b.destination(ton: 1, address: "1#{phone.to_s[-10..-1]}")
  end)
end

#send_sms(phone, message, options = {}) ⇒ Object

Raises:



25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
# File 'lib/open_market/api.rb', line 25

def send_sms(phone, message, options = {})
  phone = SmsValidation::Sms.new(phone, message).phone
  options = options.inject({}) { |hash, (k,v)| hash[k.to_sym] = v; hash }
  unrecognized_keys = options.keys - ALLOWED_OPTIONS
  raise InvalidOptions, "#{unrecognized_keys.join(", ")} #{1 == unrecognized_keys.size ? "is not a" : "are not"} valid option#{:s if unrecognized_keys.size > 1}" unless unrecognized_keys.empty?
  request_options = options.select{ |k,v| k.to_sym == :ticket_id_for_retry }
  carrier_id = options[:carrier_id] || carrier_lookup(phone).carrier_id
  SendSmsResponse.new(post(:submit, request_options) do |b|
    b.delivery(receipt_requested: true, url: options[:dr_url]) if options[:dr_url]
    b.option((options[:note] ? { note: options[:note] } : {}).merge(charge_type: 0, program_id: configuration.program_id, mlc: message_length_control))
    b.source(ton: 3, address: options[:short_code] || configuration.short_code)
    b.destination(ton: 1, address: phone, carrier: carrier_id)
    b.message((options[:minutes_to_retry] ? { validity_period: (options[:minutes_to_retry].to_f * 60).round } : {}).merge(text: message))
  end, carrier_id)
end

#status(ticket_id) ⇒ Object



41
42
43
44
45
# File 'lib/open_market/api.rb', line 41

def status(ticket_id)
  StatusResponse.new(post(:query) do |b|
    b.ticket(id: ticket_id)
  end)
end