Class: Hyde::Request

Inherits:
Object
  • Object
show all
Defined in:
lib/hyde/request.rb

Overview

Request wrapper for Rack protocol

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(env) ⇒ Request

Returns a new instance of Request.

Parameters:

  • env (Array)


10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
# File 'lib/hyde/request.rb', line 10

def initialize(env)
  # Should not be used under regular circumstances or depended upon.
  @_original_env = env
  # Rack environment variable bindings. Should be public and frozen.
  init_request_params(env)
  # Query parsing
  @query = Hyde::Util::Query.new(@query_string)
  # Pattern matching parameters. Public, readable, unfrozen.
  @param = {}
  @splat = []
  # Traversal route. Public and writable.
  @path = URI.decode_www_form_component(env["PATH_INFO"].dup)
  # File serving path. Public and writable.
  @filepath = "/"
  # Encapsulates all rack variables. Should not be public.
  @rack = init_rack_vars(env)
  # Internal navigation states. Private.
  @states = []
  # Postprocessors for current request
  @postprocessors = []
end

Instance Attribute Details

#filepathObject

Returns the value of attribute filepath.



65
66
67
# File 'lib/hyde/request.rb', line 65

def filepath
  @filepath
end

#headersObject (readonly)

Returns the value of attribute headers.



62
63
64
# File 'lib/hyde/request.rb', line 62

def headers
  @headers
end

#paramObject (readonly)

Returns the value of attribute param.



62
63
64
# File 'lib/hyde/request.rb', line 62

def param
  @param
end

#pathObject

Returns the value of attribute path.



65
66
67
# File 'lib/hyde/request.rb', line 65

def path
  @path
end

#path_infoObject (readonly)

Returns the value of attribute path_info.



62
63
64
# File 'lib/hyde/request.rb', line 62

def path_info
  @path_info
end

#postprocessorsObject (readonly)

Returns the value of attribute postprocessors.



62
63
64
# File 'lib/hyde/request.rb', line 62

def postprocessors
  @postprocessors
end

#queryObject (readonly)

Returns the value of attribute query.



62
63
64
# File 'lib/hyde/request.rb', line 62

def query
  @query
end

#request_methodObject (readonly)

Returns the value of attribute request_method.



62
63
64
# File 'lib/hyde/request.rb', line 62

def request_method
  @request_method
end

#script_nameObject (readonly)

Returns the value of attribute script_name.



62
63
64
# File 'lib/hyde/request.rb', line 62

def script_name
  @script_name
end

#server_nameObject (readonly)

Returns the value of attribute server_name.



62
63
64
# File 'lib/hyde/request.rb', line 62

def server_name
  @server_name
end

#server_portObject (readonly)

Returns the value of attribute server_port.



62
63
64
# File 'lib/hyde/request.rb', line 62

def server_port
  @server_port
end

#server_protocolObject (readonly)

Returns the value of attribute server_protocol.



62
63
64
# File 'lib/hyde/request.rb', line 62

def server_protocol
  @server_protocol
end

#splatObject (readonly)

Returns the value of attribute splat.



62
63
64
# File 'lib/hyde/request.rb', line 62

def splat
  @splat
end

Instance Method Details

#bodynil, String

Returns request body (if POST data exists)

Returns:

  • (nil, String)


42
43
44
# File 'lib/hyde/request.rb', line 42

def body
  @body ||= @rack.input&.read
end

#inputIO

Returns raw Rack input object

Returns:

  • (IO)

    (May not entirely be compatible with IO, see Rack/SPEC.rdoc)



48
49
50
# File 'lib/hyde/request.rb', line 48

def input
  @rack.input
end

#pop_stateObject

Load last navigation state (path, splat, param) from state stack



58
59
60
# File 'lib/hyde/request.rb', line 58

def pop_state
  @path, @param, @splat, @filepath = @states.pop
end

#push_stateObject

Push current navigation state (path, splat, param) onto state stack



53
54
55
# File 'lib/hyde/request.rb', line 53

def push_state
  @states.push([@path, @param.dup, @splat.dup, @filepath.dup])
end

#run_postprocessors(response) ⇒ Object

Run postprocessors

Parameters:



34
35
36
37
38
# File 'lib/hyde/request.rb', line 34

def run_postprocessors(response)
  @postprocessors.each do |postproc|
    postproc.call(self, response)
  end
end