class Hubspot::Properties

Constants

DEFAULT_PROPERTY
PROPERTY_SPECS

Public Class Methods

add_default_parameters(opts={}) click to toggle source

TODO: properties can be set as configuration TODO: find the way how to set a list of Properties + merge same property key if present from opts

# File lib/hubspot/properties.rb, line 16
def add_default_parameters(opts={})
  if opts.keys.map(&:to_s).include? 'property'
    opts
  else
    opts.merge(property: DEFAULT_PROPERTY)
  end
end
all(path, opts={}, filter={}) click to toggle source
# File lib/hubspot/properties.rb, line 24
def all(path, opts={}, filter={})
  response = Hubspot::Connection.get_json(path, opts)
  filter_results(response, :groupName, filter[:include], filter[:exclude])
end
create!(path, params={}) click to toggle source
# File lib/hubspot/properties.rb, line 34
def create!(path, params={})
  post_data = valid_property_params(params)
  return nil if post_data.blank?
  Hubspot::Connection.post_json(path, params: {}, body: post_data)
end
create_group!(path, params={}) click to toggle source
# File lib/hubspot/properties.rb, line 51
def create_group!(path, params={})
  post_data = valid_group_params(params)
  return nil if post_data.blank?
  Hubspot::Connection.post_json(path, params: {}, body: post_data)
end
delete!(path, property_name) click to toggle source
# File lib/hubspot/properties.rb, line 46
def delete!(path, property_name)
  response = Hubspot::Connection.delete_json(path, property_name: property_name)
  response.parsed_response
end
delete_group!(path, group_name) click to toggle source
# File lib/hubspot/properties.rb, line 63
def delete_group!(path, group_name)
  response = Hubspot::Connection.delete_json(path, group_name: group_name)
  response.parsed_response
end
groups(path, opts={}, filter={}) click to toggle source
# File lib/hubspot/properties.rb, line 29
def groups(path, opts={}, filter={})
  response = Hubspot::Connection.get_json(path, opts)
  filter_results(response, :name, filter[:include], filter[:exclude])
end
same?(src, dst) click to toggle source
# File lib/hubspot/properties.rb, line 68
def same?(src, dst)
  src_params = valid_params(src)
  dst_params = valid_params(dst)
  src_params.eql?(dst_params)
  # hash_same?(src_params, dst_params)
end
update!(path, property_name, params={}) click to toggle source
# File lib/hubspot/properties.rb, line 40
def update!(path, property_name, params={})
  post_data = valid_property_params(params)
  return nil if post_data.blank?
  Hubspot::Connection.put_json(path, params: { property_name: property_name }, body: post_data)
end
update_group!(path, group_name, params={}) click to toggle source
# File lib/hubspot/properties.rb, line 57
def update_group!(path, group_name, params={})
  post_data = valid_group_params(params)
  return nil if post_data.blank?
  Hubspot::Connection.put_json(path, params: { group_name: group_name }, body: post_data)
end
valid_params(params={}) click to toggle source
# File lib/hubspot/properties.rb, line 75
def valid_params(params={})
  valid_property_params(params)
end

Private Class Methods

check_field_type(val) click to toggle source
# File lib/hubspot/properties.rb, line 105
def check_field_type(val)
  return true if PROPERTY_SPECS[:valid_field_types].include?(val)
  puts "Invalid field type: #{val}"
  false
end
check_type(val) click to toggle source
# File lib/hubspot/properties.rb, line 111
def check_type(val)
  return true if PROPERTY_SPECS[:valid_types].include?(val)
  puts "Invalid type: #{val}"
  false
end
filter_results(results, key, include, exclude) click to toggle source
# File lib/hubspot/properties.rb, line 81
def filter_results(results, key, include, exclude)
  key = key.to_s
  results.select { |result|
    (include.blank? || include.include?(result[key])) &&
      (exclude.blank? || !exclude.include?(result[key]))
  }
end
valid_group_params(params) click to toggle source
# File lib/hubspot/properties.rb, line 98
def valid_group_params(params)
  return {} if params.blank?
  result = params.slice(*PROPERTY_SPECS[:group_field_names])
  result['properties'] = valid_property_params(result['properties']) unless result['properties'].blank?
  result
end
valid_option_params(options) click to toggle source
# File lib/hubspot/properties.rb, line 117
def valid_option_params(options)
  return [] if options.blank?
  options.map { |o| o.slice(*PROPERTY_SPECS[:options]) }
end
valid_property_params(params) click to toggle source
# File lib/hubspot/properties.rb, line 89
def valid_property_params(params)
  return {} if params.blank?
  result = params.slice(*PROPERTY_SPECS[:field_names])
  result.delete('fieldType') unless check_field_type(result['fieldType'])
  result.delete('type') unless check_type(result['type'])
  result['options'] = valid_option_params(result['options'])
  result
end