class Itamae::Resource::HttpRequest

Constants

HTTPClientError
HTTPServerError
HTTPUnknownError
RedirectLimitExceeded

Public Instance Methods

action_delete(options) click to toggle source
# File lib/itamae/resource/http_request.rb, line 77
def action_delete(options)
  _action_create(options)
end
action_get(options) click to toggle source
# File lib/itamae/resource/http_request.rb, line 81
def action_get(options)
  _action_create(options)
end
action_options(options) click to toggle source
# File lib/itamae/resource/http_request.rb, line 85
def action_options(options)
  _action_create(options)
end
action_post(options) click to toggle source
# File lib/itamae/resource/http_request.rb, line 89
def action_post(options)
  _action_create(options)
end
action_put(options) click to toggle source
# File lib/itamae/resource/http_request.rb, line 93
def action_put(options)
  _action_create(options)
end
fetch_content() click to toggle source
# File lib/itamae/resource/http_request.rb, line 38
def fetch_content
  uri = URI.parse(attributes.url)
  response = nil
  redirects_followed = 0

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

    case attributes.action
    when :delete, :get, :options
      response = http.method(attributes.action).call(uri.request_uri, attributes.headers)
    when :post, :put
      response = http.method(attributes.action).call(uri.request_uri, attributes.message, attributes.headers)
    end

    case response
    when Net::HTTPSuccess
      break
    when Net::HTTPRedirection
      if redirects_followed < attributes.redirect_limit
        uri = URI.parse(response["location"])
        redirects_followed += 1
        Itamae.logger.debug "Following redirect #{redirects_followed}/#{attributes.redirect_limit}"
      else
        raise RedirectLimitExceeded
      end
    when Net::HTTPClientError
      raise HTTPClientError
    when Net::HTTPServerError
      raise HTTPServerError
    else
      raise HTTPUnknownError
    end
  end

  response.body
end
pre_action() click to toggle source
# File lib/itamae/resource/http_request.rb, line 21
def pre_action
  attributes.exist = true
  attributes.content = fetch_content

  send_tempfile
  compare_file
end
show_differences() click to toggle source
Calls superclass method Itamae::Resource::File#show_differences
# File lib/itamae/resource/http_request.rb, line 29
def show_differences
  current.mode    = current.mode.rjust(4, '0') if current.mode
  attributes.mode = attributes.mode.rjust(4, '0') if attributes.mode

  super

  show_content_diff
end