Class: ActiveRest::Base
- Inherits:
-
Object
- Object
- ActiveRest::Base
- Includes:
- ActiveModel::AttributeMethods, ActiveModel::Serialization, ActiveModel::Serializers::JSON
- Defined in:
- lib/base.rb
Direct Known Subclasses
Class Method Summary collapse
-
.all ⇒ Object
method GET.
-
.api(configurations) ⇒ Object
def attributes => nil end.
-
.create(attrs = {}) ⇒ Object
method POST.
- .delete(tokens = '') ⇒ Object
-
.find(id) ⇒ Object
method GET.
-
.get(tokens = '') ⇒ Object
Wrapper method for the request methods of the same names.
- .post(tokens = '', attrs) ⇒ Object
- .put(tokens, attrs) ⇒ Object
-
.request(verb, tokens = '', params = nil) ⇒ Object
def self.initialize_object(attrs) obj = new(attrs) obj.assign_attributes(attrs) end.
Instance Method Summary collapse
- #assign_attributes(_values, _options = {}) ⇒ Object
- #attributes ⇒ Object
-
#attributes=(hash) ⇒ Object
include ActiveModel::Serializers::Xml.
- #deserialize(payload) ⇒ Object
- #serialize(payload) ⇒ Object
-
#update(attrs = {}) ⇒ Object
serialize the attrs and PUT method PUT.
Class Method Details
.all ⇒ Object
method GET
40 41 42 43 |
# File 'lib/base.rb', line 40 def self.all puts name.to_s + ' .all' # get end |
.api(configurations) ⇒ Object
def attributes
{'name' => nil}
end
29 30 31 32 33 34 35 36 37 |
# File 'lib/base.rb', line 29 def self.api(configurations) configurations.each do |key, value| define_singleton_method("api_#{key}") { nil } singleton_class.class_eval do remove_method("api_#{key}") if method_defined?("api_#{key}") define_method("api_#{key}") { value } end end end |
.create(attrs = {}) ⇒ Object
method POST
52 53 54 |
# File 'lib/base.rb', line 52 def self.create(attrs = {}) puts name.to_s + ' .create ' + attrs.inspect end |
.delete(tokens = '') ⇒ Object
96 97 98 |
# File 'lib/base.rb', line 96 def self.delete(tokens = '') request(:delete, tokens) end |
.find(id) ⇒ Object
method GET
46 47 48 49 |
# File 'lib/base.rb', line 46 def self.find(id) puts name.to_s + ' .find ' + id # get("/#{id}") end |
.get(tokens = '') ⇒ Object
Wrapper method for the request methods of the same names
80 81 82 83 84 85 |
# File 'lib/base.rb', line 80 def self.get(tokens = '') resp = request(:get, tokens) return initialize_objects(resp) if resp.is_a?(Array) return initialize_object(resp) if resp.is_a?(Hash) raise 'Unknown response format' end |
.post(tokens = '', attrs) ⇒ Object
87 88 89 90 |
# File 'lib/base.rb', line 87 def self.post(tokens = '', attrs) resp = request(:post, tokens, attrs) initialize_object(resp) end |
.put(tokens, attrs) ⇒ Object
92 93 94 |
# File 'lib/base.rb', line 92 def self.put(tokens, attrs) request(:put, tokens, attrs) end |
.request(verb, tokens = '', params = nil) ⇒ Object
def self.initialize_object(attrs)
obj = new(attrs)
obj.assign_attributes(attrs)
end
def self.initialize_objects(attrs_arr)
attrs_arr.map { |attrs| initialize_object(attrs) }
end
109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 |
# File 'lib/base.rb', line 109 def self.request(verb, tokens = '', params = nil) # puts "ApiClient::request #{verb},"\ # " #{BASE_URL}#{path}, #{params}, #{headers}" path = method_defined?(:api_path) ? api_path : '' response = RestClient::Request.execute( method: verb, url: api_url + path + tokens, payload: params ? serialize(params) : to_json, headers: { content_type: 'application/json', accept: 'application/json' }.merge!(api_headers) ) deserialize(response) end |
Instance Method Details
#assign_attributes(_values, _options = {}) ⇒ Object
127 128 129 |
# File 'lib/base.rb', line 127 def assign_attributes(_values, = {}) send("#{k}=", v) end |
#attributes ⇒ Object
21 22 23 |
# File 'lib/base.rb', line 21 def attributes @attributes.to_hash end |
#attributes=(hash) ⇒ Object
include ActiveModel::Serializers::Xml
15 16 17 18 19 |
# File 'lib/base.rb', line 15 def attributes=(hash) hash.each do |key, value| send("#{key}=", value) end end |
#deserialize(payload) ⇒ Object
137 138 139 140 141 |
# File 'lib/base.rb', line 137 def deserialize(payload) # this may not always be json # from_xml(payload) from_json(payload) end |
#serialize(payload) ⇒ Object
131 132 133 134 135 |
# File 'lib/base.rb', line 131 def serialize(payload) # this may not always be json # payload.to_xml payload.to_json end |
#update(attrs = {}) ⇒ Object
serialize the attrs and PUT method PUT
58 59 60 61 62 |
# File 'lib/base.rb', line 58 def update(attrs = {}) puts name.to_s + ' .update ' + attrs.inspect resp = self.class.request(:put, "/#{id}", attrs) assign_attributes(resp) end |