class NationBuilder::People

Public Instance Methods

add(params) click to toggle source
# File lib/nation_builder/people.rb, line 56
def add(params)
  body = JSON.generate(params)
  begin
    JSON.parse(client.put("#{base_path}/add", body: body).response.env[:body])
  rescue OAuth2::Error => e
    if e.response.parsed['code'] == 'validation_failed'
      raise NationBuilder::Exceptions::ValidationError.new(e.response.parsed['message'], e.response.parsed['validation_errors'], e.response.parsed['code'])
    else
      raise e
    end
  end

end
add_tagging(person_id, tag) click to toggle source
# File lib/nation_builder/people.rb, line 74
def add_tagging(person_id, tag)
  body = JSON.generate({'tagging' => {'tag' => tag}})
  JSON.parse(client.put(taggings_path(person_id), body: body).response.env[:body])
end
controller_name() click to toggle source
# File lib/nation_builder/people.rb, line 8
def controller_name
  'people'
end
create_or_update(params) click to toggle source
# File lib/nation_builder/people.rb, line 28
def create_or_update params
  person = self.match('email' => params['person']['email'])
  if person
    new_person = person['person'].merge(params['person'])
    r = self.update new_person['id'], 'person' => new_person
    {is_new: false, response: r}
  else
    r = self.create params
    {is_new: true, response: r}
  end
end
delete_tagging(person_id, tag) click to toggle source
# File lib/nation_builder/people.rb, line 79
def delete_tagging(person_id, tag)
  response = client.delete("#{taggings_path(person_id)}/#{tag}")
  if response.response.env[:status] == 204
    return true
  else
    return response
  end
end
match(params) click to toggle source
# File lib/nation_builder/people.rb, line 12
def match(params)
  begin
    JSON.parse(client.get("#{base_path}/match", params: params).response.env[:body])
  rescue OAuth2::Error => e
    if e.response.parsed['code'] == 'no_matches'
      return nil
    else
      raise e
    end
  end
end
match_or_add(params) click to toggle source
# File lib/nation_builder/people.rb, line 40
def match_or_add(params)
  person = self.match('email' => params['person']['email'])
  if person
    r = self.add(params)
    {is_new: false, response: r}
  else
    r = self.add(params)
    {is_new: true, response: r}
  end
end
push(params) click to toggle source
# File lib/nation_builder/people.rb, line 51
def push(params)
  body = JSON.generate(params)
  JSON.parse(client.put("#{base_path}/push", body: body).response.env[:body])
end
taggings(person_id) click to toggle source
# File lib/nation_builder/people.rb, line 70
def taggings(person_id)
  JSON.parse(client.get(taggings_path(person_id)).response.env[:body])
end

Private Instance Methods

taggings_path(person_id) click to toggle source
# File lib/nation_builder/people.rb, line 90
def taggings_path(person_id)
  "#{base_path}/#{CGI.escape(person_id.to_s)}/taggings"
end