class Telerivet::Entity

Public Class Methods

new(api, data, is_loaded = true) click to toggle source
# File lib/telerivet/entity.rb, line 5
def initialize(api, data, is_loaded = true)
    @api = api
    @vars = nil
    @dirty = {}
    @data = {}
    set_data(data)
    @is_loaded = is_loaded        
end

Public Instance Methods

get(name) click to toggle source
# File lib/telerivet/entity.rb, line 37
def get(name)        
    if @data.has_key?(name)
        return @data[name]        
    elsif @is_loaded
        return nil
    end

    load()

    return @data[name]
end
get_base_api_path() click to toggle source
# File lib/telerivet/entity.rb, line 80
def get_base_api_path()
    abstract
end
load() click to toggle source
# File lib/telerivet/entity.rb, line 24
def load()    
    if !@is_loaded
        @is_loaded = true
        set_data(@api.do_request('GET', get_base_api_path()))
        @data.merge!(@dirty)
    end
    self
end
save() click to toggle source
# File lib/telerivet/entity.rb, line 54
def save()    
    dirty_props = @dirty

    if @vars != nil
        dirty_vars = @vars.get_dirty_variables()
        @dirty['vars'] = dirty_vars if dirty_vars.length() > 0
    end
        
    @api.do_request('POST', get_base_api_path(), @dirty)
    @dirty = {}
    
    @vars.clear_dirty_variables() if @vars != nil
end
set(name, value) click to toggle source
# File lib/telerivet/entity.rb, line 49
def set(name, value)
    @data[name] = value
    @dirty[name] = value
end
set_data(data) click to toggle source
# File lib/telerivet/entity.rb, line 14
def set_data(data)
    @data = data
    
    if data.has_key?('vars')
        @vars = CustomVars.new(data['vars'])
    else
        @vars = CustomVars.new({})
    end
end
to_s() click to toggle source
# File lib/telerivet/entity.rb, line 68
def to_s()
    res = self.class.name
    
    if not @is_loaded
        res += " (not loaded)"
    end

    res += " JSON: " + JSON.dump(@data)
    
    return res
end
vars() click to toggle source
# File lib/telerivet/entity.rb, line 33
def vars
    @vars
end