Class: RestRedmine::Resources::Base
- Inherits:
-
Object
- Object
- RestRedmine::Resources::Base
- Defined in:
- lib/rest_redmine/resources/base.rb
Direct Known Subclasses
Constant Summary collapse
- KEYS =
[]
- DEFAULT_MODEL =
{}
Instance Attribute Summary collapse
-
#id ⇒ Object
Returns the value of attribute id.
-
#model ⇒ Object
Returns the value of attribute model.
-
#name ⇒ Object
Returns the value of attribute name.
Instance Method Summary collapse
- #get_data(method) ⇒ Object
-
#initialize(params = {}) ⇒ Base
constructor
A new instance of Base.
- #load ⇒ Object
- #method_missing(method, *args, &block) ⇒ Object
- #request(method: :get) ⇒ Object
- #save ⇒ Object
Constructor Details
#initialize(params = {}) ⇒ Base
Returns a new instance of Base.
9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
# File 'lib/rest_redmine/resources/base.rb', line 9 def initialize(params={}) @model = {} @name = self.class.to_s.split("::").last.downcase.to_sym self.class::KEYS.each do |key| @model[key] = nil end @model.merge!(self.class::DEFAULT_MODEL) @model.merge!(RestRedmine.configuration.resources[@name] || {}) @model.merge!(params) self.id = params[:id] if params[:id] end |
Dynamic Method Handling
This class handles dynamic methods through the method_missing method
#method_missing(method, *args, &block) ⇒ Object
69 70 71 72 73 74 75 76 77 |
# File 'lib/rest_redmine/resources/base.rb', line 69 def method_missing(method, *args, &block) if self.class::KEYS.include? method @model[method.to_sym] elsif method.to_s =~ /=$/ and self.class::KEYS.include? method.to_s.sub("=", "").to_sym @model[method.to_s.sub("=", "").to_sym] = args.first else super end end |
Instance Attribute Details
#id ⇒ Object
Returns the value of attribute id.
4 5 6 |
# File 'lib/rest_redmine/resources/base.rb', line 4 def id @id end |
#model ⇒ Object
Returns the value of attribute model.
4 5 6 |
# File 'lib/rest_redmine/resources/base.rb', line 4 def model @model end |
#name ⇒ Object
Returns the value of attribute name.
4 5 6 |
# File 'lib/rest_redmine/resources/base.rb', line 4 def name @name end |
Instance Method Details
#get_data(method) ⇒ Object
54 55 56 57 58 59 60 61 62 63 64 65 66 67 |
# File 'lib/rest_redmine/resources/base.rb', line 54 def get_data(method) if method == :put data = model data.each do |key, val| data.delete(key) if val.nil? end else data = model end { "#{name}" => data } end |
#load ⇒ Object
24 25 26 27 |
# File 'lib/rest_redmine/resources/base.rb', line 24 def load raise RestRedmine::Exception.new("Id is required") unless self.id response = request(method: :get) end |
#request(method: :get) ⇒ Object
35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 |
# File 'lib/rest_redmine/resources/base.rb', line 35 def request(method: :get) response = RestRedmine::API.request(self.class::RESOURCE, id: self.id, data: get_data(method), method: method) self.id = response[name.to_s]["id"] if response.respond_to? :has_key? # puts response # response[name.to_s].each do |key, val| # if model.has_key? key.to_sym # @model[key.to_sym] = val # elsif model.has_key? "#{key}_id".to_sym # @model["#{key}_id".to_sym] = val["id"] # elsif key == "id" # self.id = val # end # end response end |
#save ⇒ Object
29 30 31 32 33 |
# File 'lib/rest_redmine/resources/base.rb', line 29 def save method = self.id ? :put : :post request(method: method) end |