module Twilito::API

Public Instance Methods

messages_uri(account_sid) click to toggle source
# File lib/twilito/api.rb, line 18
def messages_uri(account_sid)
  components = [
    Configuration::TWILIO_VERSION,
    'Accounts',
    account_sid,
    'Messages.json'
  ]

  URI::HTTPS.build(
    host: Configuration::TWILIO_HOST,
    path: '/' + components.join('/')
  )
end
send_response(args) click to toggle source
# File lib/twilito/api.rb, line 5
def send_response(args)
  uri = messages_uri(args[:account_sid])

  Net::HTTP.start(uri.host, uri.port, use_ssl: true) do |http|
    req = Net::HTTP::Post.new(uri)
    req.initialize_http_header('User-Agent' => user_agent)
    req.basic_auth(args[:account_sid], args[:auth_token])
    req.set_form_data(twilio_form_data(args))

    http.request(req)
  end
end

Private Instance Methods

twilio_form_data(args) click to toggle source

NOTE: Converts snake_cased hash of arguments to CamelCase to match Twilio API expectations. Also, removes auth_token and account_sid as those are included separately in .send_response as basic auth instead of POST body

# File lib/twilito/api.rb, line 37
def twilio_form_data(args)
  args
    .merge(auth_token: nil, account_sid: nil).compact
    .reduce({}) { |result, (k, v)| result.merge(k.to_s.split('_').collect(&:capitalize).join => v) }
end
user_agent() click to toggle source
# File lib/twilito/api.rb, line 43
def user_agent
  "Ruby Twilito/#{Twilito::VERSION}"
end