Sha256: 9c5dd78d740ce9403c0687422fbf16466ecada2baa59a1d3094422d66a591b98
Contents?: true
Size: 1.4 KB
Versions: 2
Compression:
Stored size: 1.4 KB
Contents
require 'intercom/traits/api_resource' module Intercom module ApiOperations module Save module ClassMethods PARAMS_NOT_PROVIDED = Object.new def create(params = PARAMS_NOT_PROVIDED) if self.ancestors.include?(Intercom::Contact) && params == PARAMS_NOT_PROVIDED params = Hash.new elsif params == PARAMS_NOT_PROVIDED raise ArgumentError, '.create requires 1 parameter' end instance = self.new(params) instance.mark_fields_as_changed!(params.keys) instance.save end end def self.included(base) base.extend(ClassMethods) end def save collection_name = Utils.resource_class_to_collection_name(self.class) if id_present? && !posted_updates? response = Intercom.put("/#{collection_name}/#{id}", to_submittable_hash) else response = Intercom.post("/#{collection_name}", to_submittable_hash.merge(identity_hash)) end from_response(response) if response # may be nil we received back a 202 end def identity_hash respond_to?(:identity_vars) ? SliceableHash.new(to_hash).slice(*(identity_vars.map(&:to_s))) : {} end private def id_present? id && id.to_s != '' end def posted_updates? respond_to?(:update_verb) && update_verb == 'post' end end end end
Version data entries
2 entries across 2 versions & 2 rubygems
Version | Path |
---|---|
cogniteev-intercom-2.5.4 | lib/intercom/api_operations/save.rb |
intercom-2.5.4 | lib/intercom/api_operations/save.rb |