class Nimble::Person
Constants
- MAX_RETRIES
- RECORD_IS
Public Class Methods
call(user_attributes, additional_details = nil)
click to toggle source
# File lib/nimble/person.rb, line 6 def self.call(user_attributes, additional_details = nil) retiries_count = 0 return nil unless user_attributes.class == Hash begin # fetch headers headers = get_headers # find nimble id if exists if (additional_details.nil? || additional_details.class != Hash) additional_details = { save_on_empty: true, searchable_string: "", identifier: nil } end nimble_id = find_nimble_record(additional_details[:searchable_string], headers, additional_details[:identifier], Nimble::Person::RECORD_IS) # create json data data = get_save_data(user_attributes, additional_details[:save_on_empty]) # save data on nimble result = save(nimble_id, data, headers) # send email based on response send_status(result) rescue => e # display error message puts e.message # increment retry count retiries_count +=1 if Nimble::Person::MAX_RETRIES >= retiries_count # max upto 3 retries retry else # send failed email send_status(nil, e.message) end end end
get_save_data(user_attributes, save_on_empty)
click to toggle source
# File lib/nimble/person.rb, line 42 def self.get_save_data(user_attributes, save_on_empty) # parent json person_json = { "fields": { }, "record_type": "person" } user_attributes.each { |key, value| field = { key&.to_s.gsub('_', ' ').to_sym => [ { "value": value, "modifier": "" } ] } if save_on_empty person_json[:fields] = person_json[:fields].merge(field) unless key == 'user_avatar' else unless key == 'user_avatar' person_json[:fields] = person_json[:fields].merge(field) if value&.present? end end field = {} } # avatar json if user_attributes[:user_avatar]&.present? avatar = { "avatar_url": user_attributes[:user_avatar] } person_json = person_json.merge(avatar) end # merge all json in parent based on existence return person_json end