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