module MultiSms
Constants
- VERSION
Attributes
config[RW]
Public Class Methods
execute(base_url, method, path, parameters, headers={ accept: :json}, &block)
click to toggle source
Wrapper around RestClient::RestClient.execute
-
Sets accept header to json
-
Handles some exceptions
# File lib/multi_sms.rb, line 93 def execute(base_url, method, path, parameters, headers={ accept: :json}, &block) # Warn if the from string will be capped by the sms gateway if parameters[:from] && parameters[:from].match(/^(\w{11,})$/) warn "SMS 'from' value #{parameters[:from]} will be capped at 11 chars" end payload = {}.merge(parameters) url = base_url + path RestClient::Request.execute(:method => method, :url => url, :payload => payload, :headers => headers, &block) rescue RestClient::Unauthorized raise AuthError, "Authentication failed" rescue RestClient::InternalServerError raise ServerError, "Server error" rescue RestClient::Forbidden => e raise BadRequest, e.http_body end
get(base_url, path, parameters = {})
click to toggle source
Wrapper for MultiSms.execute
(:get)
# File lib/multi_sms.rb, line 79 def get(base_url, path, parameters = {}) execute(base_url, :get, path, parameters) end
get_provider(country_code)
click to toggle source
# File lib/multi_sms.rb, line 70 def get_provider(country_code) name = config.providers[country_code.to_s] name = config.default_provider unless name.instance_of?(String) provider = "Providers::#{name}".split('::').inject(Object) {|o,c| o.const_get c} provider.new end
logger()
click to toggle source
# File lib/multi_sms.rb, line 62 def logger @logger ||= begin log = Logger.new($stdout) log.level = Logger::INFO log end end
parse_json(body)
click to toggle source
Wrapper around MultiJson.load, symbolize names
# File lib/multi_sms.rb, line 111 def parse_json(body) MultiJson.load(body, :symbolize_keys => true) rescue MultiJson::DecodeError raise BadResponse, "Can't parse JSON" end
post(base_url, path, parameters = {})
click to toggle source
Wrapper for MultiSms::execute
(:post)
# File lib/multi_sms.rb, line 84 def post(base_url, path, parameters = {}) execute(base_url, :post, path, parameters) end
providers()
click to toggle source
Responds with all the currently supported providers
# File lib/multi_sms.rb, line 35 def providers %W(Clickatell Elk Twilio) end
send(country_code, parameters)
click to toggle source
# File lib/multi_sms.rb, line 54 def send(country_code, parameters) raise ConfigError, "MultiSms needs a default provider configured." unless config.default_provider.instance_of?(String) verify_parameters(parameters, [:from, :message, :to]) provider = get_provider country_code provider.send(parameters) end