class ChefZero::RestRequest

Attributes

env[R]
rest_base_prefix[R]

Public Class Methods

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

Public Instance Methods

base_uri() click to toggle source
# File lib/chef_zero/rest_request.rb, line 13
def base_uri
  @base_uri ||= "#{env['rack.url_scheme']}://#{env['HTTP_HOST']}#{env['SCRIPT_NAME']}"
end
body() click to toggle source
# File lib/chef_zero/rest_request.rb, line 29
def body
  @body ||= env['rack.input'].read
end
body=(body) click to toggle source
# File lib/chef_zero/rest_request.rb, line 25
def body=(body)
  @body = body
end
method() click to toggle source
# File lib/chef_zero/rest_request.rb, line 17
def method
  @env['REQUEST_METHOD']
end
query_params() click to toggle source
# File lib/chef_zero/rest_request.rb, line 33
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
rest_path() click to toggle source
# File lib/chef_zero/rest_request.rb, line 21
def rest_path
  @rest_path ||= rest_base_prefix + env['PATH_INFO'].split('/').select { |part| part != "" }
end
to_s() click to toggle source
# File lib/chef_zero/rest_request.rb, line 43
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