class Dotloop::Contact

Constants

CONTACT_FIELDS

Attributes

client[RW]

Public Class Methods

new(client:) click to toggle source
# File lib/dotloop/contact.rb, line 11
def initialize(client:)
  @client = client
end

Public Instance Methods

all(options = {}) click to toggle source
# File lib/dotloop/contact.rb, line 15
def all(options = {})
  contacts = []
  url = '/contact'
  (1..MAX_CONTACTS).each do |i|
    options[:batch_number] = i
    current_contacts = @client.get(url, query_params(options))[:data].map do |contact_attrs|
      Dotloop::Models::Contact.new(contact_attrs)
    end
    contacts += current_contacts
    break if current_contacts.size < BATCH_SIZE
  end
  contacts
end
create(params: {}) click to toggle source
# File lib/dotloop/contact.rb, line 34
def create(params: {})
  data = {}
  params.each do |key, value|
    CONTACT_FIELDS.include?(key.to_s) || next
    data[key] = value
  end

  contact_data = @client.post("/contact", data)[:data]
  Dotloop::Models::Contact.new(contact_data)
end
delete(contact_id:) click to toggle source
# File lib/dotloop/contact.rb, line 56
def delete(contact_id:)
  @client.delete("/contact/#{contact_id.to_i}")
end
find(contact_id:) click to toggle source
# File lib/dotloop/contact.rb, line 29
def find(contact_id:)
  contact_data = @client.get("/contact/#{contact_id.to_i}")[:data]
  Dotloop::Models::Contact.new(contact_data)
end
update(contact_id:, params: {}) click to toggle source
# File lib/dotloop/contact.rb, line 45
def update(contact_id:, params: {})
  data = {}
  params.each do |key, value|
    CONTACT_FIELDS.include?(key.to_s) || next
    data[key] = value
  end

  contact_data = @client.patch("/contact/#{contact_id.to_i}", data)[:data]
  Dotloop::Models::Contact.new(contact_data)
end

Private Instance Methods

query_params(options) click to toggle source
# File lib/dotloop/contact.rb, line 62
def query_params(options)
  {
    batch_number:        batch_number(options),
    batch_size:          batch_size(options),
    filter:              options[:filter]
  }.delete_if { |_, v| should_delete(v) }
end