class ChefZero::RestRequest

Attributes

env[R]
rest_base_prefix[RW]

Public Class Methods

new(env, rest_base_prefix = []) click to toggle source
# File lib/chef_zero/rest_request.rb, line 6
def initialize(env, rest_base_prefix = [])
  @env = env
  @rest_base_prefix = rest_base_prefix
end

Public Instance Methods

api_v0?() click to toggle source
# File lib/chef_zero/rest_request.rb, line 32
def api_v0?
  api_version == 0
end
api_version() click to toggle source
# File lib/chef_zero/rest_request.rb, line 28
def api_version
  Integer(@env["HTTP_X_OPS_SERVER_API_VERSION"] || 0)
end
base_uri() click to toggle source
# File lib/chef_zero/rest_request.rb, line 14
def base_uri
  # Load balancer awareness
  if env["HTTP_X_FORWARDED_PROTO"]
    scheme = env["HTTP_X_FORWARDED_PROTO"]
  else
    scheme = env["rack.url_scheme"]
  end
  @base_uri ||= "#{scheme}://#{env['HTTP_HOST']}#{env['SCRIPT_NAME']}"
end
base_uri=(value) click to toggle source
# File lib/chef_zero/rest_request.rb, line 24
def base_uri=(value)
  @base_uri = value
end
body() click to toggle source
# File lib/chef_zero/rest_request.rb, line 56
def body
  @body ||= env["rack.input"].read
end
body=(body) click to toggle source
# File lib/chef_zero/rest_request.rb, line 52
def body=(body)
  @body = body
end
method() click to toggle source
# File lib/chef_zero/rest_request.rb, line 40
def method
  @env["REQUEST_METHOD"]
end
query_params() click to toggle source
# File lib/chef_zero/rest_request.rb, line 60
def query_params
  @query_params ||= begin
    params = Rack::Request.new(env).GET
    params.keys.each do |key|
      params[key] = URI.unescape(params[key])
    end
    params
  end
end
requestor() click to toggle source
# File lib/chef_zero/rest_request.rb, line 36
def requestor
  @env["HTTP_X_OPS_USERID"]
end
rest_path() click to toggle source
# File lib/chef_zero/rest_request.rb, line 44
def rest_path
  @rest_path ||= rest_base_prefix + env["PATH_INFO"].split("/").select { |part| part != "" }
end
rest_path=(rest_path) click to toggle source
# File lib/chef_zero/rest_request.rb, line 48
def rest_path=(rest_path)
  @rest_path = rest_path
end
to_s() click to toggle source
# File lib/chef_zero/rest_request.rb, line 70
def to_s
  result = "#{method} #{rest_path.join('/')}"
  if query_params.size > 0
    result << "?#{query_params.map { |k, v| "#{k}=#{v}" }.join('&')}"
  end
  if body.chomp != ""
    result << "\n--- #{method} BODY ---\n"
    result << body
    result << "\n" if !body.end_with?("\n")
    result << "--- END #{method} BODY ---"
  end
  result
end