module Curlable

methods to curl a url

Constants

RETRIES

Public Instance Methods

curl_get(url, opts = {}) click to toggle source
# File lib/arcrest/curlable.rb, line 11
def curl_get(url, opts = {})
  c = Curl::Easy.new(url) { |curl| configure(curl, opts[:headers] || {}) }
  try(c, opts[:retries] || RETRIES)
  c.perform
  code = c.response_code
  raise BadHttpResponse, "#{code} at #{url}" unless [2, 3].include? code / 100

  c.body_str
end

Private Instance Methods

configure(curl, headers) click to toggle source
# File lib/arcrest/curlable.rb, line 28
def configure(curl, headers)
  curl.follow_location = true
  curl.encoding = 'gzip'
  headers.each { |k, v| curl.headers[k.capitalize] = v }
end
try(curl, tries) click to toggle source
# File lib/arcrest/curlable.rb, line 23
def try(curl, tries)
  curl.perform
  curl.on_failure { |c, _e| try(c, tries -= 1) if tries > 1 } # recurse
end