class Bronto::Contact
Attributes
created[RW]
email[RW]
fields[RW]
list_ids[RW]
modified[RW]
num_clicks[RW]
num_opens[RW]
num_sends[RW]
status[RW]
Public Class Methods
find(filter = Bronto::Filter.new, page_number = 1, fields = nil, include_lists = false, api_key = nil)
click to toggle source
Finds contacts based on the `filter` (Bronto::Filter
object).
-
`page_number` is the page of contacts to request.
Bronto
doesn't specify how many contacts are returned per page,only that you should keep increasing the number until no more contacts are returned.
-
`fields` can be an array of field IDs or an array of
Field
objects. -
`include_lists` determines whether to include the list IDs each contact belongs to.
# File lib/bronto/contact.rb, line 9 def self.find(filter = Bronto::Filter.new, page_number = 1, fields = nil, include_lists = false, api_key = nil) body = { filter: filter.to_hash, page_number: page_number } api_key = api_key || self.api_key body[:fields] = Array.wrap(fields).map { |f| f.is_a?(Bronto::Field) ? f.id : f } if Array(fields).length > 0 body[:include_lists] = include_lists resp = request(:read, body) Array.wrap(resp[:return]).map { |hash| new(hash) } end
new(options = {})
click to toggle source
Calls superclass method
Bronto::Base::new
# File lib/bronto/contact.rb, line 40 def initialize(options = {}) self.fields = {} fields = options.delete(:fields) Array.wrap(fields).each { |field| set_field(field[:field_id], field[:content]) } super(options) end
save(*objs)
click to toggle source
# File lib/bronto/contact.rb, line 21 def self.save(*objs) objs = objs.flatten api_key = objs.first.is_a?(String) ? objs.shift : self.api_key resp = request(:add_or_update, {plural_class_name => objs.map(&:to_hash)}) objs.each { |o| o.errors.clear } Array.wrap(resp[:return][:results]).each_with_index do |result, i| if result[:is_error] objs[i].errors.add(result[:error_code], result[:error_string]) else objs[i].id = result[:id] end end objs end
Public Instance Methods
get_field(field)
click to toggle source
# File lib/bronto/contact.rb, line 80 def get_field(field) id = field.is_a?(Bronto::Field) ? field.id : field self.fields[id].try(:content) end
reload()
click to toggle source
# File lib/bronto/contact.rb, line 48 def reload return false if self.email.blank? filter = Bronto::Filter.new filter.add_filter("email", "EqualTo", self.email) new_contact = self.class.find(filter, 1, self.fields, true, self.api_key).first self.id = new_contact.id self.fields = new_contact.fields self.list_ids = new_contact.list_ids true end
save()
click to toggle source
# File lib/bronto/contact.rb, line 63 def save self.class.save(self) end
set_field(field, value)
click to toggle source
# File lib/bronto/contact.rb, line 75 def set_field(field, value) id = field.is_a?(Bronto::Field) ? field.id : field self.fields[id] = Field.new(id, value) end
to_hash()
click to toggle source
# File lib/bronto/contact.rb, line 67 def to_hash if id.present? { id: id, email: email, fields: fields.values.map(&:to_hash) } else { email: email, fields: fields.values.map(&:to_hash) } end end