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.



64
65
66
# File 'lib/payload/arm/object.rb', line 64

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



111
112
113
114
115
116
117
118
# File 'lib/payload/arm/object.rb', line 111

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.



61
62
63
# File 'lib/payload/arm/object.rb', line 61

def data
  @data
end

.polyObject (readonly)

Returns the value of attribute poly.



61
62
63
# File 'lib/payload/arm/object.rb', line 61

def poly
  @poly
end

.sessionObject (readonly)

Returns the value of attribute session.



61
62
63
# File 'lib/payload/arm/object.rb', line 61

def session
  @session
end

.specObject (readonly)

Returns the value of attribute spec.



61
62
63
# File 'lib/payload/arm/object.rb', line 61

def spec
  @spec
end

Class Method Details

._get_request(session = nil) ⇒ Object



128
129
130
# File 'lib/payload/arm/object.rb', line 128

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

.all(session: nil) ⇒ Object



176
177
178
# File 'lib/payload/arm/object.rb', line 176

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

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



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

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



172
173
174
# File 'lib/payload/arm/object.rb', line 172

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

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



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

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



168
169
170
# File 'lib/payload/arm/object.rb', line 168

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

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



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

def self.group_by(*args, **data)
	self._get_request().group_by(*args, **data)
end

.limit(n, **data) ⇒ Object



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

def self.limit(n, **data)
	self._get_request().limit(n)
end

.new(data, session = nil) ⇒ Object



68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
# File 'lib/payload/arm/object.rb', line 68

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

.offset(n, **data) ⇒ Object



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

def self.offset(n, **data)
	self._get_request().offset(n)
end

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



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

def self.order_by(*args, **data)
	self._get_request().order_by(*args, **data)
end

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



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

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

Instance Method Details

#[](key) ⇒ Object



120
121
122
# File 'lib/payload/arm/object.rb', line 120

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

#_get_requestObject



124
125
126
# File 'lib/payload/arm/object.rb', line 124

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

#dataObject



103
104
105
# File 'lib/payload/arm/object.rb', line 103

def data
	@data
end

#deleteObject



184
185
186
# File 'lib/payload/arm/object.rb', line 184

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

#jsonObject



188
189
190
# File 'lib/payload/arm/object.rb', line 188

def json
	to_json
end

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

Returns:

  • (Boolean)


201
202
203
# File 'lib/payload/arm/object.rb', line 201

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

#sessionObject



95
96
97
# File 'lib/payload/arm/object.rb', line 95

def session
	@session
end

#set_data(data) ⇒ Object



107
108
109
# File 'lib/payload/arm/object.rb', line 107

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

#set_session(session) ⇒ Object



99
100
101
# File 'lib/payload/arm/object.rb', line 99

def set_session(session)
	@session = session
end

#to_json(*args) ⇒ Object



192
193
194
195
196
197
198
199
# File 'lib/payload/arm/object.rb', line 192

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



180
181
182
# File 'lib/payload/arm/object.rb', line 180

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