Module: Twilio::Persistable

Included in:
Account, Application, Call, IncomingPhoneNumber, OutgoingCallerId, Queue, SMS
Defined in:
lib/twilio/persistable.rb

Class Method Summary collapse

Class Method Details

.included(base) ⇒ Object



4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
# File 'lib/twilio/persistable.rb', line 4

def self.included(base)
  base.instance_eval do
    def create(attrs={})
      attrs        = attrs.with_indifferent_access
      # Support subaccounts by optionally passing in an account_sid or account object
        = attrs.delete('account_sid') || attrs.delete('account').try(:sid) || Twilio::Config.
      connect      = attrs.delete 'connect'
      request_opts = { :body => Hash[attrs.map { |k,v| [k.to_s.camelize, v]}] }

      request_opts.update(:account_sid => ) if connect

      res = post "#{resource_path()}.json", request_opts

      if (400..599).include? res.code
        raise Twilio::APIError.new "Error ##{res.parsed_response['code']}: #{res.parsed_response['message']}"
      else
        res.parsed_response['api_version'] = res.parsed_response['api_version'].to_s
        new res.parsed_response
      end
    end

    private
    def resource_path()
      "/Accounts/#{}/#{resource_name}"
    end

    def resource_name
      name.demodulize.pluralize
    end
  end
end