def normalize_request(rack_req)
      host = rack_req.host

      s_req = Request.new
      s_req.path = path_for_rack_request(rack_req)
      s_req.is_path_style = true
      s_req.rack_request = rack_req

      if !@root_hostnames.include?(host)
        s_req.bucket = host.split(".")[0]
        s_req.is_path_style = false
      end

      s_req.http_verb = rack_req.request_method

      case rack_req.request_method
      when 'PUT'
        normalize_put(rack_req,s_req)
      when 'GET','HEAD'
        normalize_get(rack_req,s_req)
      when 'DELETE'
        normalize_delete(rack_req,s_req)
      when 'POST'
        normalize_post(rack_req,s_req)
      when 'OPTIONS'
        nomalize_options(rack_req,s_req)
      else
        return false
      end

      if s_req.type.nil?
        return false
      end

      return s_req
    end
def normalize_request(rack_req)
      host = rack_req.host

      s_req = Request.new
      s_req.path = path_for_rack_request(rack_req)
      s_req.is_path_style = true
      s_req.rack_request = rack_req

      if !@root_hostnames.include?(host)
        s_req.bucket = host.split(".")[0]
        s_req.is_path_style = false
      end

      s_req.http_verb = rack_req.request_method

      case rack_req.request_method
      when 'PUT'
        normalize_put(rack_req,s_req)
      when 'GET','HEAD'
        normalize_get(rack_req,s_req)
      when 'DELETE'
        normalize_delete(rack_req,s_req)
      when 'POST'
        normalize_post(rack_req,s_req)
      when 'OPTIONS'
        nomalize_options(rack_req,s_req)
      else
        return false
      end

      if s_req.type.nil?
        return false
      end

      return s_req
    end
This method takes a rack request and generates a normalized RackFakeS3 request