class PipeDrive::Base

Public Class Methods

bulk_delete(ids) click to toggle source
# File lib/pipe_drive/base.rb, line 64
def bulk_delete(ids)
  path = "/#{resource_name}s"
  params = {ids: ids.map(&:to_s).join(',')}
  requester.http_del(path, params){|result| result}
end
create(opts) click to toggle source
# File lib/pipe_drive/base.rb, line 44
def create(opts)
  opts = transform_opts(opts)
  requester.http_post("/#{resource_name}s", opts) do |result|
    new(result)
  end
end
delete(id) click to toggle source
# File lib/pipe_drive/base.rb, line 59
def delete(id)
  path = "/#{resource_name}s/#{id}"
  requester.http_del(path){|result| result}
end
find_by_id(id) click to toggle source
# File lib/pipe_drive/base.rb, line 37
def find_by_id(id)
  path = "/#{resource_name}s/#{id}"
  requester.http_get(path) do |result|
    result[:data].nil? ? nil : new(result)
  end
end
new(attrs) click to toggle source
Calls superclass method
# File lib/pipe_drive/base.rb, line 4
def initialize(attrs)
  struct_attrs = attrs[:data] || PipeDrive.hash_except(attrs, [:additional_data])
  struct_attrs.merge!(attrs[:additional_data]) unless attrs[:additional_data].nil?

  super(struct_attrs)
end
parameterize(target_string, separator) click to toggle source
# File lib/pipe_drive/base.rb, line 79
def parameterize(target_string, separator)
  target_string.gsub!(/[\W_]+/, separator)
  target_string.downcase
end
requester() click to toggle source
# File lib/pipe_drive/base.rb, line 33
def requester
  PipeDrive.requester
end
search_and_setup_by(type, opts, strict=false) click to toggle source
# File lib/pipe_drive/base.rb, line 70
def search_and_setup_by(type, opts, strict=false)
  target = find_by(type, opts, strict)
  if target.nil?
    create(opts)
  else
    target.update(opts)
  end
end
update(id, opts) click to toggle source
# File lib/pipe_drive/base.rb, line 51
def update(id, opts)
  path = "/#{resource_name}s/#{id}"
  opts = transform_opts(opts)
  requester.http_put(path, opts) do |result|
    new(result)
  end
end

Protected Class Methods

list_objects(attrs) click to toggle source
# File lib/pipe_drive/base.rb, line 86
def list_objects(attrs)
  return [] if attrs.nil? || attrs.empty?
  if attrs[:data].nil?
    struct_attrs = attrs
  elsif attrs[:additional_data].nil?
    struct_attrs = attrs[:data].map do |data|
      data
    end
  else
    struct_attrs = attrs[:data].map do |data|
      data.merge(attrs[:additional_data])
    end
  end

  struct_attrs.map do |struct_attr|
    new(struct_attr)
  end
end
transform_opts(opts) click to toggle source
# File lib/pipe_drive/base.rb, line 105
def transform_opts(opts)
  new_opts = {}
  opts.each_pair do |key, value|
    if resource_class.field_keys[key].nil?
      new_opts[key] = value
    else
      new_key = resource_class.field_keys[key][:key]
      field_info = field_class.find_by_id(resource_class.field_keys[key][:id])
      if field_info.field_type == 'set' || field_info.field_type == 'enum'
        new_value = detect_option_value(field_info, value)
      else
        new_value = value
      end
      new_opts[new_key] = new_value
    end
  end
  new_opts
end

Private Class Methods

detect_option_value(field_info, value) click to toggle source
# File lib/pipe_drive/base.rb, line 126
def detect_option_value(field_info, value)
  if value.is_a?(Array)
    new_value = value.map do |val|
      target = field_info.options.find{|f| f[:label] == val}
      target[:id] unless target.nil?
    end
    new_value.compact
  else
    target = field_info.options.find{|f| f[:label] == value}
    target.nil? ? nil : target[:id]
  end
end

Public Instance Methods

delete() click to toggle source
# File lib/pipe_drive/base.rb, line 23
def delete
  path = "/#{self.class.resource_name}s/#{id}"
  requester.http_del(path)
end
parameterize(target_string, separator) click to toggle source
# File lib/pipe_drive/base.rb, line 28
def parameterize(target_string, separator)
  self.class.parameterize(target_string, separator)
end
requester() click to toggle source
# File lib/pipe_drive/base.rb, line 11
def requester
  PipeDrive.requester
end
update(opts) click to toggle source
# File lib/pipe_drive/base.rb, line 15
def update(opts)
  path = "/#{self.class.resource_name}s/#{id}"
  opts = self.class.send(:transform_opts, opts)
  requester.http_put(path, opts) do |result|
    self.class.new(result)
  end
end