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