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