module ConstructorIORails::InstanceMethods

Public Instance Methods

constructorio_add_record(value, metadata = {}, autocomplete_key, autocomplete_section) click to toggle source
# File lib/constructorio-rails.rb, line 80
def constructorio_add_record(value, metadata = {}, autocomplete_key, autocomplete_section)
  constructorio_call_api("post", value, metadata, autocomplete_key, autocomplete_section)
end
constructorio_delete_record(value, metadata = {}, autocomplete_key, autocomplete_section) click to toggle source
# File lib/constructorio-rails.rb, line 84
def constructorio_delete_record(value, metadata = {}, autocomplete_key, autocomplete_section)
  constructorio_call_api("delete", value, metadata, autocomplete_key, autocomplete_section)
end

Private Instance Methods

constructorio_call_api(method, value, metadata, autocomplete_key, autocomplete_section) click to toggle source
# File lib/constructorio-rails.rb, line 104
def constructorio_call_api(method, value, metadata, autocomplete_key, autocomplete_section)
  api_token = ConstructorIORails.configuration.api_token
  api_url = ConstructorIORails.configuration.api_url || "https://ac.cnstrc.com/"
  @http_client ||= Faraday.new(url: api_url)
  @http_client.basic_auth(api_token, '')

  request_body = constructorio_make_request_body(value, metadata, autocomplete_section)
  constructorio_send_request(method, @http_client, request_body, autocomplete_key)
end
constructorio_make_request_body(value, metadata, autocomplete_section) click to toggle source
# File lib/constructorio-rails.rb, line 90
def constructorio_make_request_body(value, metadata, autocomplete_section)
  request_body = {
    "item_name" => "#{value}",
    "autocomplete_section" => autocomplete_section
  }
  unless metadata.empty?
    metadata.each do |k, v|
      v = instance_exec(&v) if v.is_a? Proc
      request_body[k] = v
    end
  end
  request_body
end
constructorio_send_request(method, http_client, request_body, autocomplete_key) click to toggle source
# File lib/constructorio-rails.rb, line 114
def constructorio_send_request(method, http_client, request_body, autocomplete_key)
  response = http_client.send(method) do |request|
    request.url "/v1/item?autocomplete_key=#{autocomplete_key}"
    request.headers['Content-Type'] = 'application/json'
    request.body = request_body.to_json
  end
  if response.status.to_s =~ /^2/
    return nil
  else
    return response.status
  end
end