class ROM::HTTP::Handlers::JSONRequest

Default handler for JSON requests

@api public

Public Class Methods

call(dataset) click to toggle source

Handle JSON request for the provided dataset

@param [Dataset] dataset

@return [Array<Hash>]

@api public

# File lib/rom/http/handlers/json.rb, line 26
def self.call(dataset)
  uri = dataset.uri

  http = Net::HTTP.new(uri.host, uri.port)
  http.use_ssl = true if uri.scheme.eql?("https")

  request_class = Net::HTTP.const_get(ROM::Inflector.classify(dataset.request_method))

  request = request_class.new(uri.request_uri)

  dataset.headers.each_with_object(request) do |(header, value), req|
    req[header.to_s] = value
  end

  request.body = JSON.dump(dataset.body_params) if dataset.body_params.any?

  http.request(request)
end