class ActionNetworkRest::People

Public Instance Methods

base_path() click to toggle source
# File lib/action_network_rest/people.rb, line 5
def base_path
  'people/'
end
create(person_data, tags: []) click to toggle source
# File lib/action_network_rest/people.rb, line 9
def create(person_data, tags: [])
  post_body = { 'person' => person_data }
  post_body['add_tags'] = tags if tags.any?

  response = client.post_request base_path, post_body
  object_from_response(response)
end
find_by_email(email) click to toggle source
# File lib/action_network_rest/people.rb, line 23
def find_by_email(email)
  # This works for parsing exactly 1 person's info out of the response.
  # The response we get from Action Network is expected to have
  #
  # "_embedded": {
  #   "osdi:people": [{
  #       "identifiers": [
  #           "action_network:c947bcd0-929e-11e3-a2e9-12313d316c29"
  #            ....
  #        ]
  #    }]
  # }
  #
  url_encoded_filter_string = url_escape("email_address eq '#{email}'")
  response = client.get_request "#{base_path}?filter=#{url_encoded_filter_string}"
  person_object = response.body[:_embedded][osdi_key].first
  set_action_network_id_on_object(person_object) if person_object.present?
end
unsubscribe(id) click to toggle source
# File lib/action_network_rest/people.rb, line 17
def unsubscribe(id)
  request_body = { email_addresses: [{ status: 'unsubscribed' }] }
  response = client.put_request "#{base_path}#{url_escape(id)}", request_body
  object_from_response(response)
end
update(id, person_data) click to toggle source
# File lib/action_network_rest/people.rb, line 42
def update(id, person_data)
  people_path = "#{base_path}#{url_escape(id)}"
  response = client.put_request people_path, person_data
  object_from_response(response)
end

Private Instance Methods

osdi_key() click to toggle source
# File lib/action_network_rest/people.rb, line 50
def osdi_key
  'osdi:people'
end