module ActionNetworkRest class People < Base def base_path 'people/' end def create(person_data, tags: []) post_body = {'person' => person_data} if tags.any? post_body['add_tags'] = tags end response = client.post_request base_path, post_body object_from_response(response) end 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 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:people'].first if person_object.present? object_with_action_network_id(person_object) end end end end