module UriRequests

Constants

VERSION

Public Instance Methods

get(data = nil, opts = {}) click to toggle source
# File lib/uri_requests.rb, line 11
def get data = nil, opts = {}
  data ||= {}
  uri = clone

  unless data.is_a? Hash
    # if data is scalar, kindly repackage
    data = { data => nil }
  end

  unless data.empty?
    uri.query = URI.encode_www_form(data)
  end

  request Net::HTTP::Get.new(uri), **opts
end
post(data = nil, opts = {}) click to toggle source
# File lib/uri_requests.rb, line 28
def post data = nil, opts = {}
  data ||= {}
  opts = opts.clone

  req = Net::HTTP::Post.new itself

  if opts.delete(:json)
    req['Content-Type'] = 'application/json'
    req.body = data.to_json
  else
    req.set_form_data data
  end

  request req, **opts
end

Private Instance Methods

request(request, opts = {}) click to toggle source
# File lib/uri_requests.rb, line 47
def request request, opts = {}
  use_ssl = scheme == 'https'
  res = Net::HTTP.start(host, port, use_ssl: use_ssl) do |http|
    # set headers
    (opts[:headers] or {}).each {|k,v| request[k] = v}

    # set other request options
    opts.each {|k,v| http.send k, v if k != :headers }

    http.request request
  end

  unless res.is_a?(Net::HTTPSuccess)
    raise Net::HTTPError.new "#{res.code}: #{res.message}\n#{res.body}", res
  end

  if 'application/json' == res['content-type']
    JSON::parse res.body
  else
    res.body
  end
end