class Clearbit::Resource

Constants

OPTION_KEYS

Public Class Methods

add_options(value = nil)
Alias for: options
delete(action = '', values = {}) click to toggle source
# File lib/clearbit/resource.rb, line 98
def self.delete(action = '', values = {})
  params, options = parse_values(values)

  request(
    uri(action),
    options.merge(method: :delete, params: params))
end
endpoint(value = nil) click to toggle source
# File lib/clearbit/resource.rb, line 5
def self.endpoint(value = nil)
  @endpoint = value if value
  return @endpoint if @endpoint
  superclass.respond_to?(:endpoint) ? superclass.endpoint : nil
end
Also aliased as: endpoint=
endpoint=(value = nil)
Alias for: endpoint
get(action = '', values = {}) click to toggle source
# File lib/clearbit/resource.rb, line 74
def self.get(action = '', values = {})
  params, options = parse_values(values)

  request(
    uri(action),
    options.merge(method: :get, params: params))
end
options(value = nil) click to toggle source
# File lib/clearbit/resource.rb, line 17
def self.options(value = nil)
  @options ||= {}
  @options.merge!(value) if value

  if superclass <= Resource && superclass.respond_to?(:options)
    Nestful::Helpers.deep_merge(superclass.options, @options)
  else
    @options
  end
end
Also aliased as: options=, add_options
options=(value = nil)
Alias for: options
parse_values(values) click to toggle source
# File lib/clearbit/resource.rb, line 56
def self.parse_values(values)
  params  = values.reject {|k,_| OPTION_KEYS.include?(k) }
  options = values.select {|k,_| OPTION_KEYS.include?(k) }

  if request_options = options.delete(:request)
    options.merge!(request_options)
  end

  if key = options.delete(:key)
    options.merge!(
      auth_type: :bearer,
      password:  key
    )
  end

  [params, options]
end
path(value = nil) click to toggle source
# File lib/clearbit/resource.rb, line 11
def self.path(value = nil)
  @path = value if value
  return @path if @path
  superclass.respond_to?(:path) ? superclass.path : nil
end
Also aliased as: path=
path=(value = nil)
Alias for: path
post(action = '', values = {}) click to toggle source
# File lib/clearbit/resource.rb, line 90
def self.post(action = '', values = {})
  params, options = parse_values(values)

  request(
    uri(action),
    options.merge(method: :post, params: params, format: :json))
end
put(action = '', values = {}) click to toggle source
# File lib/clearbit/resource.rb, line 82
def self.put(action = '', values = {})
  params, options = parse_values(values)

  request(
    uri(action),
    options.merge(method: :put, params: params, format: :json))
end
request(uri, options = {}) click to toggle source
# File lib/clearbit/resource.rb, line 106
def self.request(uri, options = {})
  options = Nestful::Helpers.deep_merge(self.options, options)

  if options[:stream]
    uri.host = uri.host.gsub('.clearbit.com', '-stream.clearbit.com')
  end

  response = Nestful::Request.new(
    uri, options
  ).execute

  if notice = response.headers['X-API-Warn']
    Kernel.warn notice
  end

  response
end
uri(*parts) click to toggle source
# File lib/clearbit/resource.rb, line 39
def self.uri(*parts)
  # If an absolute URI already
  if (uri = parts.first) && uri.is_a?(URI)
    return uri if uri.host
  end

  value = Nestful::Helpers.to_path(url, *parts)

  URI.parse(value)
end
url(options = {}) click to toggle source
# File lib/clearbit/resource.rb, line 35
def self.url(options = {})
  URI.join(endpoint.to_s, path.to_s).to_s
end

Public Instance Methods

uri(*parts) click to toggle source
# File lib/clearbit/resource.rb, line 124
def uri(*parts)
  self.class.uri(*[id, *parts].compact)
end