class RestRedmine::Resources::Base
Constants
- DEFAULT_MODEL
- KEYS
Attributes
id[RW]
model[RW]
name[RW]
Public Class Methods
new(params={})
click to toggle source
# 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
Public Instance Methods
get_data(method)
click to toggle source
# 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()
click to toggle source
# 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
method_missing(method, *args, &block)
click to toggle source
Calls superclass method
# 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
request(method: :get)
click to toggle source
# 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()
click to toggle source
# File lib/rest_redmine/resources/base.rb, line 29 def save method = self.id ? :put : :post request(method: method) end