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.



49
50
51
# File 'lib/payload/arm/object.rb', line 49

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



96
97
98
99
100
101
102
103
# File 'lib/payload/arm/object.rb', line 96

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.



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

def data
  @data
end

.polyObject (readonly)

Returns the value of attribute poly.



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

def poly
  @poly
end

.sessionObject (readonly)

Returns the value of attribute session.



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

def session
  @session
end

.specObject (readonly)

Returns the value of attribute spec.



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

def spec
  @spec
end

Class Method Details

._get_request(session = nil) ⇒ Object



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

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

.all(session: nil) ⇒ Object



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

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

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



127
128
129
130
131
132
133
134
135
# File 'lib/payload/arm/object.rb', line 127

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



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

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

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



121
122
123
124
125
# File 'lib/payload/arm/object.rb', line 121

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



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

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

.new(data, session = nil) ⇒ Object



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

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



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

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

Instance Method Details

#[](key) ⇒ Object



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

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

#_get_requestObject



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

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

#dataObject



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

def data
	@data
end

#deleteObject



153
154
155
# File 'lib/payload/arm/object.rb', line 153

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

#respond_to_missing?(name, include_private = false) ⇒ Boolean

Returns:

  • (Boolean)


166
167
168
# File 'lib/payload/arm/object.rb', line 166

def respond_to_missing?(name, include_private = false)
	@data && @data.key?(name.to_s) || super
end

#sessionObject



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

def session
	@session
end

#set_data(data) ⇒ Object



92
93
94
# File 'lib/payload/arm/object.rb', line 92

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

#set_session(session) ⇒ Object



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

def set_session(session)
	@session = session
end

#to_json(*args) ⇒ Object



157
158
159
160
161
162
163
164
# File 'lib/payload/arm/object.rb', line 157

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



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

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