Sha256: ab9abda076635019212a802bdb5f8c11b2049b06edc4d8fc2b97d6ef76c0ddf6
Contents?: true
Size: 1.47 KB
Versions: 3
Compression:
Stored size: 1.47 KB
Contents
module Twilio module REST class InstanceResource include Utils def initialize(uri, client, params={}) @uri, @client = uri, client set_up_properties_from params end def update(params={}) raise "Can't update a resource without a Twilio::Client" unless @client response = @client.post @uri, params set_up_properties_from response self end def delete raise "Can't delete a resource without a Twilio::Client" unless @client @client.delete @uri end def method_missing(method, *args) super if @updated response = @client.get @uri set_up_properties_from response self.send method, *args end protected def set_up_properties_from(hash) eigenclass = class << self; self; end hash.each do |p,v| property = detwilify p unless ['uri', 'client', 'updated'].include? property eigenclass.send :define_method, property.to_sym, &lambda {v} end end @updated = !hash.keys.empty? end def resource(*resources) resources.each do |r| resource = twilify r relative_uri = r == :sms_messages ? 'SMS/Messages' : resource instance_variable_set("@#{r}", Twilio::REST.const_get(resource).new("#{@uri}/#{relative_uri}", @client)) end self.class.instance_eval {attr_reader *resources} end end end end
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
twilio-ruby-0.1.2 | lib/twilio-ruby/rest/instance_resource.rb |
twilio-ruby-0.1.1 | lib/twilio-ruby/rest/instance_resource.rb |
twilio-ruby-0.1.0 | lib/twilio-ruby/rest/instance_resource.rb |