Class: Telerivet::Entity

Inherits:
Object
  • Object
show all
Defined in:
lib/telerivet/entity.rb

Instance Method Summary collapse

Constructor Details

#initialize(api, data, is_loaded = true) ⇒ Entity

Returns a new instance of Entity.



5
6
7
8
9
10
11
12
# 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

Instance Method Details

#get(name) ⇒ Object



37
38
39
40
41
42
43
44
45
46
47
# 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_pathObject



80
81
82
# File 'lib/telerivet/entity.rb', line 80

def get_base_api_path()
    abstract
end

#loadObject



24
25
26
27
28
29
30
31
# 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

#saveObject



54
55
56
57
58
59
60
61
62
63
64
65
66
# 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) ⇒ Object



49
50
51
52
# File 'lib/telerivet/entity.rb', line 49

def set(name, value)
    @data[name] = value
    @dirty[name] = value
end

#set_data(data) ⇒ Object



14
15
16
17
18
19
20
21
22
# 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_sObject



68
69
70
71
72
73
74
75
76
77
78
# 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

#varsObject



33
34
35
# File 'lib/telerivet/entity.rb', line 33

def vars
    @vars
end