class SmsService::Service::Infobip
Attributes
params[R]
Public Class Methods
api_url_for_batch()
click to toggle source
# File lib/sms_service/services/infobip.rb, line 39 def self.api_url_for_batch uri=URI.parse(@api_url) @api_url="#{uri.scheme}://#{uri.host}#{gateway_for_batch_sms}" end
api_url_for_single_sms()
click to toggle source
# File lib/sms_service/services/infobip.rb, line 34 def self.api_url_for_single_sms uri=URI.parse(@api_url) @api_url="#{uri.scheme}://#{uri.host}#{gateway_for_single_sms}" end
default_api()
click to toggle source
# File lib/sms_service/services/infobip.rb, line 25 def self.default_api "https://api.infobip.com" end
gateway_for_batch_sms()
click to toggle source
# File lib/sms_service/services/infobip.rb, line 48 def self.gateway_for_batch_sms "/sms/1/text/multi" end
gateway_for_single_sms()
click to toggle source
# File lib/sms_service/services/infobip.rb, line 44 def self.gateway_for_single_sms "/sms/1/text/single" end
name()
click to toggle source
# File lib/sms_service/services/infobip.rb, line 13 def self.name "Infobip" end
new(params)
click to toggle source
# File lib/sms_service/services/infobip.rb, line 8 def initialize params @params=params self.class.set_api_url self.class.default_api end
set_api_url(host)
click to toggle source
# File lib/sms_service/services/infobip.rb, line 29 def self.set_api_url host uri=URI.parse host @api_url="#{uri.scheme}://#{uri.host}#{gateway_for_single_sms}" end
Public Instance Methods
api_url()
click to toggle source
# File lib/sms_service/services/infobip.rb, line 52 def api_url @api_url end
basic_auth?()
click to toggle source
# File lib/sms_service/services/infobip.rb, line 17 def basic_auth? true end
headers()
click to toggle source
# File lib/sms_service/services/infobip.rb, line 21 def headers { 'content-type'=> 'application/json','accept'=>'application/xml'} end
make_request(sms,sms_type='single')
click to toggle source
# File lib/sms_service/services/infobip.rb, line 81 def make_request sms,sms_type='single' results=[] form_data=sms_type=='single' ? single_textual_messages(sms) : multi_textual_messages(sms) params=@params result=call_api api_url,form_data response = SmsService::Result::Infobip.fetch_response result response.each {|res| results << res} results end
multi_textual_messages(sms)
click to toggle source
# File lib/sms_service/services/infobip.rb, line 76 def multi_textual_messages sms @api_url=self.class.api_url_for_batch convert_keys_to_s({:messages=>to_batch(sms)}).to_json end
send(message)
click to toggle source
# File lib/sms_service/services/infobip.rb, line 63 def send message results=[] messages=(Message.new message).extract messages.length == 1 ? make_request(messages.first) : make_request(messages,'multi') end
send_batch(messages)
click to toggle source
# File lib/sms_service/services/infobip.rb, line 107 def send_batch messages results=[] @api_url=api_url_for_batch batch_data="msisdn,message\n#{to_batch messages}" append_query={:batch_data=>batch_data} params=convert_keys_to_s @params.merge! append_query result=call_api_with_post params response = SmsService::Result::Bulksms.fetch_response result results << response results end
send_single_sms(sms)
click to toggle source
# File lib/sms_service/services/infobip.rb, line 95 def send_single_sms sms results=[] @api_url=self.class.api_url_for_single_sms append_query={:to=>sms.to,:text=>sms.text} params=@params form_data=convert_keys_to_s params.merge! append_query result=call_api api_url,form_data.to_json response = SmsService::Result::Infobip.fetch_response result response.each {|res| results << res} results end
set_form_data(request, form_data)
click to toggle source
# File lib/sms_service/services/infobip.rb, line 91 def set_form_data request, form_data request.body=form_data end
single_textual_messages(sms)
click to toggle source
# File lib/sms_service/services/infobip.rb, line 69 def single_textual_messages sms @api_url=self.class.api_url_for_single_sms query={:to=>sms.to.split(','),:text=>sms.text} query.merge!(:from=>@params[:from]) unless @params[:from]==nil convert_keys_to_s(query).to_json end
sms_url(params)
click to toggle source
# File lib/sms_service/services/infobip.rb, line 56 def sms_url params #puts sms query=@params.merge! params query=@params.map {|k,v| "#{k}=#{v}"}.join('&') api_url+"?"+query end
to_batch(messages)
click to toggle source
# File lib/sms_service/services/infobip.rb, line 119 def to_batch messages from,message_s=@params[:from],[] (from==nil || from == '') ? from={} : from={:from=>from} messages.inject({}) {|result,sms| message_s << {:to=>sms.to.split(','),:text=>sms.text.to_s}.merge(from)} message_s end