class Clearbit::Resource
Constants
- OPTION_KEYS
Public Class Methods
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=
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
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=
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