Class: WitBot::WitModel::Base
- Inherits:
-
Object
- Object
- WitBot::WitModel::Base
- Defined in:
- lib/wit_bot/models/wit/base.rb
Constant Summary collapse
- @@changeable_attrs =
[]
- @@changeable_attrs_only =
{}
- @@server_attrs =
[]
- @@server_attrs_only =
{}
Instance Attribute Summary collapse
-
#id ⇒ Object
readonly
Returns the value of attribute id.
Class Method Summary collapse
Instance Method Summary collapse
- #create ⇒ Object
- #delete ⇒ Object
- #from_response_data(response, method = ) ⇒ Object
- #get(data: request.get(all: false)) ⇒ Object
-
#initialize(id, request = false, *args) ⇒ Base
constructor
A new instance of Base.
- #on_delete(&listener) ⇒ Object
- #to_h(include_id = true, method = ) ⇒ Object (also: #to_hash, #as_json)
Constructor Details
#initialize(id, request = false, *args) ⇒ Base
Returns a new instance of Base.
11 12 13 14 15 16 17 |
# File 'lib/wit_bot/models/wit/base.rb', line 11 def initialize(id, request=false, *args) @id = id @delete_listeners = [] get if request end |
Instance Attribute Details
#id ⇒ Object (readonly)
Returns the value of attribute id.
4 5 6 |
# File 'lib/wit_bot/models/wit/base.rb', line 4 def id @id end |
Class Method Details
.all ⇒ Object
20 21 22 |
# File 'lib/wit_bot/models/wit/base.rb', line 20 def all @all ||= REQUEST.new.get.map{|data| from_response_data data} end |
.get(model: nil) ⇒ Object
24 25 26 27 28 29 30 |
# File 'lib/wit_bot/models/wit/base.rb', line 24 def get(model: nil) if model.respond_to? :get model.get else self.class.new id, request: true end end |
Instance Method Details
#create ⇒ Object
45 46 47 48 49 50 51 52 53 54 55 |
# File 'lib/wit_bot/models/wit/base.rb', line 45 def create _response = request.create if self.respond_to? :process_create_response, true self.process_create_response(_response) do |response| from_response_data response end else from_response_data _response end end |
#delete ⇒ Object
57 58 59 60 61 |
# File 'lib/wit_bot/models/wit/base.rb', line 57 def delete request.delete @delete_listeners.all?{|listener| listener.call self} end |
#from_response_data(response, method = ) ⇒ Object
84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 |
# File 'lib/wit_bot/models/wit/base.rb', line 84 def from_response_data(response, method=caller[0]) response = response.with_indifferent_access variables = (@@server_attrs_only[method] || []) + @@server_attrs + @@changeable_attrs variables.each do |attr| if (value = response[attr]) processor = "process_#{attr}".to_sym value = self.send processor, value if self.respond_to? processor, true instance_variable_set "@#{attr}", value end end end |
#get(data: request.get(all: false)) ⇒ Object
63 64 65 |
# File 'lib/wit_bot/models/wit/base.rb', line 63 def get(data: request.get(all: false)) from_response_data data end |
#on_delete(&listener) ⇒ Object
67 68 69 |
# File 'lib/wit_bot/models/wit/base.rb', line 67 def on_delete(&listener) @delete_listeners << listener end |
#to_h(include_id = true, method = ) ⇒ Object Also known as: to_hash, as_json
71 72 73 74 75 76 77 78 79 80 |
# File 'lib/wit_bot/models/wit/base.rb', line 71 def to_h(include_id=true, method=caller[0]) attrs = @@changeable_attrs + (@@changeable_attrs_only[method] || []) hash = {} hash[:id] = id if include_id attrs.inject(hash) do |h, v| h[v] = self.send v if self.send v end end |