Module: Intercom::ApiOperations::Save

Instance Method Summary collapse

Instance Method Details

#create(params = PARAMS_NOT_PROVIDED) ⇒ Object



12
13
14
15
16
17
18
19
20
21
22
# File 'lib/intercom/api_operations/save.rb', line 12

def create(params = PARAMS_NOT_PROVIDED)
  if collection_class.ancestors.include?(Intercom::Lead) && params == PARAMS_NOT_PROVIDED
    params = {}
  elsif params == PARAMS_NOT_PROVIDED
    raise ArgumentError, '.create requires 1 parameter'
  end

  instance = collection_class.new(params)
  instance.mark_fields_as_changed!(params.keys)
  save(instance)
end

#identity_hash(object) ⇒ Object



34
35
36
# File 'lib/intercom/api_operations/save.rb', line 34

def identity_hash(object)
  object.respond_to?(:identity_vars) ? SliceableHash.new(object.to_hash).slice(*object.identity_vars.map(&:to_s)) : {}
end

#save(object) ⇒ Object



24
25
26
27
28
29
30
31
32
# File 'lib/intercom/api_operations/save.rb', line 24

def save(object)
  if id_present?(object) && !posted_updates?(object)
    response = @client.put("/#{collection_name}/#{object.id}", object.to_submittable_hash)
  else
    response = @client.post("/#{collection_name}", object.to_submittable_hash.merge(identity_hash(object)))
  end
  object.client = @client
  object.from_response(response) if response # may be nil we received back a 202
end