Sha256: 4cce327fc342a5df5f16814f6a8ce1444abfc54a4b95fdf0250822895739af09

Contents?: true

Size: 1.62 KB

Versions: 9

Compression:

Stored size: 1.62 KB

Contents

require 'uri'

module ChargeBee
  class Model
    
    def initialize(values, sub_types={})
      @values = values
      @sub_types = sub_types
    end
    
    def to_s(*args) 
      JSON.pretty_generate(@values) 
    end
    
    def inspect()
      "#<#{self.class}:0x#{self.object_id.to_s(16)} > JSON: " + JSON.pretty_generate(@values)
    end
    
    def load(values)
      instance_eval do
        values.each do |k, v|
          set_val = nil
          case v
          when Hash
            set_val = (@sub_types[k] != nil) ? @sub_types[k].construct(v) : v
          when Array
            if(@sub_types[k] != nil)
              set_val = v.map { |item| @sub_types[k].construct(item)}
            else
              set_val = v
            end
          else
            set_val = v
          end
          instance_variable_set("@#{k}", set_val)
        end
      end
    end
      
    def method_missing(m, *args, &block)
      if(@values.has_key?(m))
          return @values[m]
      elsif(m[0,3] == "cf_") # All the custom fields start with prefix cf_. 
          return nil
      end
      puts "There's no method called #{m} #{args} here -- please try again."
      puts @values
    end
    
    def self.uri_path(*paths) 
      url = ""
      for path in paths
          if(path.nil? || path.strip.length < 1) 
             raise "Id is empty or nil" 
          end
          url = "#{url}/#{URI.encode(path.strip)}"
      end
      return url
    end
    
    def self.construct(values, sub_types = {})
      if(values != nil)
        obj = self.new(values, sub_types)
        obj.load(values)
        obj
      end
    end
    
  end
end

Version data entries

9 entries across 9 versions & 1 rubygems

Version Path
chargebee-1.7.5 lib/chargebee/models/model.rb
chargebee-1.7.4 lib/chargebee/models/model.rb
chargebee-1.7.3 lib/chargebee/models/model.rb
chargebee-1.7.2 lib/chargebee/models/model.rb
chargebee-1.7.1 lib/chargebee/models/model.rb
chargebee-1.7.0 lib/chargebee/models/model.rb
chargebee-1.6.9 lib/chargebee/models/model.rb
chargebee-1.6.8 lib/chargebee/models/model.rb
chargebee-1.6.7 lib/chargebee/models/model.rb