module Spyke::Http::ClassMethods
Public Instance Methods
new_collection_from_result(result)
click to toggle source
# File lib/spyke/http.rb, line 36 def new_collection_from_result(result) Collection.new Array(result.data).map { |record| new_or_return(record) }, result.metadata end
new_instance_from_result(result)
click to toggle source
# File lib/spyke/http.rb, line 32 def new_instance_from_result(result) new_or_return result.data if result.data end
request(method, path, params = {})
click to toggle source
# File lib/spyke/http.rb, line 24 def request(method, path, params = {}) ActiveSupport::Notifications.instrument('request.spyke', method: method) do |payload| response = send_request(method, path, params) payload[:url], payload[:status] = response.env.url, response.status Result.new_from_response(response) end end
uri(uri_template = nil)
click to toggle source
# File lib/spyke/http.rb, line 40 def uri(uri_template = nil) @uri ||= uri_template || default_uri end
Private Instance Methods
default_uri()
click to toggle source
# File lib/spyke/http.rb, line 81 def default_uri "#{model_name.element.pluralize}(/:#{primary_key})" end
new_instance_or_collection_from_result(result)
click to toggle source
# File lib/spyke/http.rb, line 65 def new_instance_or_collection_from_result(result) if result.data.is_a?(Array) new_collection_from_result(result) else new_instance_from_result(result) end end
new_or_return(attributes_or_object)
click to toggle source
# File lib/spyke/http.rb, line 73 def new_or_return(attributes_or_object) if attributes_or_object.is_a?(Spyke::Base) attributes_or_object else new attributes_or_object end end
scoped_request(method)
click to toggle source
# File lib/spyke/http.rb, line 59 def scoped_request(method) uri = new.uri params = current_scope.params.except(*uri.variables) request(method, uri, params) end
send_request(method, path, params)
click to toggle source
# File lib/spyke/http.rb, line 46 def send_request(method, path, params) connection.send(method) do |request| if method == :get request.url path.to_s, params else request.url path.to_s request.body = params end end rescue Faraday::ConnectionFailed, Faraday::TimeoutError raise ConnectionError end