Sha256: bc3305bedf0819cbcc479af67b66970267c9d404050ab2e7fb1d0fe8d15724bb
Contents?: true
Size: 1.28 KB
Versions: 2
Compression:
Stored size: 1.28 KB
Contents
module BrontoIntegration class Contact attr_reader :token, :bronto_client def initialize(token, client = nil) @token=token @bronto_client = client || Bronto.new(token) end def get_id_by_email(email) unless contact = bronto_client.read_contacts(email) contact = bronto_client.add_or_update_contacts({ email: email }) end contact[:id] end alias :find_or_create :get_id_by_email def set_up(email,fields) bronto_client.add_or_update_contacts build(email,fields) end def update_status(email,status) bronto_client.update_contacts({:email => email, :status => status}) end def build(email,fields) { :email => email, :fields => fields(fields).reject{|f| f[:fieldId]==nil} #delete the non-exist fields } end def fields(fields) fields = (fields || []).map do |key, value| { :fieldId => get_field_id(key.to_s), :content => value.to_s } end end def get_field_id(name) # use cache to reduce the field id query Rails.cache.fetch("bronto_field_#{@token}_#{name}", :expires_in => 15.hours) { result = bronto_client.read_fields name result[:id] if result.is_a? Hash } end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
spree_bronto-3.pre.0.pre.stable | lib/bronto_integration/bronto_integration/contact.rb |
spree_bronto-3.0.0 | lib/bronto_integration/bronto_integration/contact.rb |