class ChargeBee::Model

Public Class Methods

construct(values, sub_types = {}, dependant_types = {}) click to toggle source
# File lib/chargebee/models/model.rb, line 65
def self.construct(values, sub_types = {}, dependant_types = {})
  if(values != nil)
    obj = self.new(values, sub_types, dependant_types)
    obj.load(values)
    obj
  end
end
new(values, sub_types={}, dependant_types={}) click to toggle source
# File lib/chargebee/models/model.rb, line 7
def initialize(values, sub_types={}, dependant_types={})
  @values = values
  @sub_types = sub_types
  @dependant_types = dependant_types
end
uri_path(*paths) click to toggle source
# File lib/chargebee/models/model.rb, line 54
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}/#{CGI.escape(path.strip).gsub("+","%20").gsub("%21","!").gsub("%24","$").gsub("%26","&").gsub("%27","'").gsub("%28","(").gsub("%29", ")").gsub("%2A","*").gsub("%2B","+").gsub("%2C",",").gsub("%2F", "/").gsub("%3A",":").gsub("%3B",";").gsub("%3D","=").gsub("%3F","?").gsub("%40","@").gsub("%5B","[").gsub("%5D","]")}"
  end
  return url
end

Public Instance Methods

init_dependant(obj, type, sub_types = {}) click to toggle source
# File lib/chargebee/models/model.rb, line 73
def init_dependant(obj, type, sub_types = {})
  instance_eval do
    if(obj[type] != nil)
      case obj
      when Hash
        if(@dependant_types[type] != nil)
          dependant_obj = @dependant_types[type].construct(obj[type], sub_types)
          instance_variable_set("@#{type}", dependant_obj)
        end
      end
    end
  end
end
init_dependant_list(obj, type, sub_types = {}) click to toggle source
# File lib/chargebee/models/model.rb, line 87
def init_dependant_list(obj, type, sub_types = {})
  instance_eval do
    if(obj[type] != nil)
      case obj[type]
      when Array
        if(@dependant_types[type] != nil)
          set_val = obj[type].map {|dt| @dependant_types[type].construct(dt, sub_types)}
          instance_variable_set("@#{type}", set_val)
        end
      end
    end
  end
end
inspect() click to toggle source
# File lib/chargebee/models/model.rb, line 17
def inspect()
  "#<#{self.class}:0x#{self.object_id.to_s(16)} > JSON: " + JSON.pretty_generate(@values)
end
load(values) click to toggle source
# File lib/chargebee/models/model.rb, line 21
def load(values)
  instance_eval do
    values.each do |k, v|
      set_val = nil
      next if v.is_a?(Hash) && @dependant_types[k] != nil

      set_val = if v.is_a?(Hash)
                  (@sub_types[k] != nil) ? @sub_types[k].construct(v) : v
                elsif v.is_a?(Array)
                  if @sub_types[k] != nil
                    v.map { |item| @sub_types[k].construct(item)}
                  else
                    v
                  end
                else
                  v
                end

      instance_variable_set("@#{k}", set_val)
    end
  end
end
method_missing(m, *args, &block) click to toggle source
# File lib/chargebee/models/model.rb, line 44
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
to_s(*args) click to toggle source
# File lib/chargebee/models/model.rb, line 13
def to_s(*args) 
  JSON.pretty_generate(@values) 
end