Class: Payload::ARMObject

Inherits:
Object
  • Object
show all
Defined in:
lib/payload/arm/object.rb

Constant Summary collapse

@@cache =
{}

Class Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(data, session = nil) ⇒ ARMObject

Returns a new instance of ARMObject.



45
46
47
# File 'lib/payload/arm/object.rb', line 45

def initialize(data, session = nil)
	self.set_data(data)
end

Dynamic Method Handling

This class handles dynamic methods through the method_missing method

#method_missing(name, *args) ⇒ Object



92
93
94
95
96
97
98
99
# File 'lib/payload/arm/object.rb', line 92

def method_missing(name, *args)
	attr = name.to_s
	if @data.key?(attr)
		return @data[attr]
	else
		super
	end
end

Class Attribute Details

.dataObject (readonly)

Returns the value of attribute data.



42
43
44
# File 'lib/payload/arm/object.rb', line 42

def data
  @data
end

.polyObject (readonly)

Returns the value of attribute poly.



42
43
44
# File 'lib/payload/arm/object.rb', line 42

def poly
  @poly
end

.sessionObject (readonly)

Returns the value of attribute session.



42
43
44
# File 'lib/payload/arm/object.rb', line 42

def session
  @session
end

.specObject (readonly)

Returns the value of attribute spec.



42
43
44
# File 'lib/payload/arm/object.rb', line 42

def spec
  @spec
end

Class Method Details

._get_request(session = nil) ⇒ Object



109
110
111
# File 'lib/payload/arm/object.rb', line 109

def self._get_request(session=nil)
	return Payload::ARMRequest.new(self, session)
end

.all(session: nil) ⇒ Object



141
142
143
# File 'lib/payload/arm/object.rb', line 141

def self.all(session: nil)
	return self._get_request(session).all()
end

.create(*args, **data) ⇒ Object



123
124
125
126
127
128
129
130
131
# File 'lib/payload/arm/object.rb', line 123

def self.create(*args, **data)
	session = data[:session]
	data.delete(:session)
	if args.length != 0
		return self._get_request(session).create(args[0])
	else
		return self._get_request(session).create(data)
	end
end

.delete(objects) ⇒ Object



137
138
139
# File 'lib/payload/arm/object.rb', line 137

def self.delete(objects)
	return self._get_request().delete_all(objects)
end

.filter_by(*args, **data) ⇒ Object



117
118
119
120
121
# File 'lib/payload/arm/object.rb', line 117

def self.filter_by(*args, **data)
	session = data[:session]
	data.delete(:session)
	return self._get_request(session).filter_by(*args, **data)
end

.get(id, session: nil) ⇒ Object



133
134
135
# File 'lib/payload/arm/object.rb', line 133

def self.get(id, session: nil)
	return self._get_request(session).get(id)
end

.new(data, session = nil) ⇒ Object



49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
# File 'lib/payload/arm/object.rb', line 49

def self.new(data, session = nil)

	session = session || Payload::Session.new(Payload::api_key, Payload::api_url)
	session_key = session.object_id

	if !@@cache.key?(session_key)
		@@cache[session_key] = {}
	end

	session_cache = @@cache[session_key]

	id = data.key?(:id) ? data[:id] : data.key?('id') ? data['id'] : nil
	if id && session_cache.key?(id)
		session_cache[id].set_data(data)
		return session_cache[id]
	else
		inst = super
		inst.set_session(session)
		inst.set_data(data)
		if id
			session_cache[id] = inst
		end

		return inst
	end
end

.select(*args, **data) ⇒ Object



113
114
115
# File 'lib/payload/arm/object.rb', line 113

def self.select(*args, **data)
	return self._get_request().select(*args, **data)
end

Instance Method Details

#[](key) ⇒ Object



101
102
103
# File 'lib/payload/arm/object.rb', line 101

def [](key)
	return @data[key]
end

#_get_requestObject



105
106
107
# File 'lib/payload/arm/object.rb', line 105

def _get_request()
	return Payload::ARMRequest.new(self.class, @session)
end

#dataObject



84
85
86
# File 'lib/payload/arm/object.rb', line 84

def data
	@data
end

#deleteObject



149
150
151
# File 'lib/payload/arm/object.rb', line 149

def delete()
	return _get_request()._request('Delete', id: self.id)
end

#sessionObject



76
77
78
# File 'lib/payload/arm/object.rb', line 76

def session
	@session
end

#set_data(data) ⇒ Object



88
89
90
# File 'lib/payload/arm/object.rb', line 88

def set_data(data)
	@data = data.transform_keys { |key| key.to_s }
end

#set_session(session) ⇒ Object



80
81
82
# File 'lib/payload/arm/object.rb', line 80

def set_session(session)
	@session = session
end

#to_json(*args) ⇒ Object



153
154
155
156
157
158
159
160
# File 'lib/payload/arm/object.rb', line 153

def to_json(*args)
	serialized = {}
	if self.class.poly
		serialized.merge!(self.class.poly)
	end
	serialized.merge!(@data)
	return serialized.to_json(*args)
end

#update(**update) ⇒ Object



145
146
147
# File 'lib/payload/arm/object.rb', line 145

def update(**update)
	return _get_request()._request('Put', id: self.id, json: update)
end