class ActionNetworkRest::Base

Public Instance Methods

get(id) click to toggle source
# File lib/action_network_rest/base.rb, line 5
def get(id)
  response = client.get_request "#{base_path}#{url_escape(id)}"
  object_from_response(response)
end
list(page: 1) click to toggle source
# File lib/action_network_rest/base.rb, line 10
def list(page: 1)
  response = client.get_request "#{base_path}?page=#{url_escape(page)}"
  objects = response.body.dig('_embedded', osdi_key)
  return [] if objects.nil?

  objects.each { |obj| set_action_network_id_on_object(obj) }

  objects
end

Private Instance Methods

action_network_url(path) click to toggle source
# File lib/action_network_rest/base.rb, line 51
def action_network_url(path)
  client.connection.configuration.endpoint + path
end
object_from_response(response) click to toggle source
# File lib/action_network_rest/base.rb, line 46
def object_from_response(response)
  obj = response.body
  set_action_network_id_on_object(obj)
end
set_action_network_id_on_object(obj) click to toggle source
# File lib/action_network_rest/base.rb, line 26
def set_action_network_id_on_object(obj)
  # Takes an object which may contain an `identifiers` key, which may contain an action_network identifier
  # If so, we pull out the action_network identifier and stick it in a top-level key "action_network_id",
  # for the convenience of callers using the returned object.
  # "identifiers": [
  #   "action_network:d6bdf50e-c3a4-4981-a948-3d8c086066d7",
  #   "some_external_system:1",
  #   "another_external_system:57"
  # ]
  identifiers = obj[:identifiers] || []
  qualified_actionnetwork_id = identifiers.find do |id|
    id.split(':').first == 'action_network'
  end
  if qualified_actionnetwork_id.present?
    obj.action_network_id = qualified_actionnetwork_id.sub(/^action_network:/, '')
  end

  obj
end
url_escape(string) click to toggle source
# File lib/action_network_rest/base.rb, line 22
def url_escape(string)
  CGI.escape(string.to_s)
end