Module: Intercom::ApiOperations::Save
- Included in:
- Service::Article, Service::Collection, Service::Company, Service::Contact, Service::Conversation, Service::DataAttribute, Service::Event, Service::ExportContent, Service::Job, Service::Lead, Service::Message, Service::PhoneCallRedirect, Service::Section, Service::Subscription, Service::Tag, Service::User, Service::Visitor
- Defined in:
- lib/intercom/api_operations/save.rb
Instance Method Summary collapse
- #create(params = PARAMS_NOT_PROVIDED) ⇒ Object
- #identity_hash(object) ⇒ Object
- #save(object) ⇒ Object
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 |