Class: Vanilla::Request

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

Overview

Create a request with symbolised access to the params, and some special accessors to the snip, part and format based on our routing.

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(env, app) ⇒ Request

Returns a new instance of Request.



9
10
11
12
13
# File 'lib/vanilla/request.rb', line 9

def initialize(env, app)
  @rack_request = Rack::Request.new(env)
  @app = app
  determine_request_uri_parts
end

Instance Attribute Details

#formatObject (readonly)

Returns the value of attribute format.



7
8
9
# File 'lib/vanilla/request.rb', line 7

def format
  @format
end

#methodObject (readonly)

Returns the value of attribute method.



7
8
9
# File 'lib/vanilla/request.rb', line 7

def method
  @method
end

#partObject (readonly)

Returns the value of attribute part.



7
8
9
# File 'lib/vanilla/request.rb', line 7

def part
  @part
end

#snip_nameObject (readonly)

Returns the value of attribute snip_name.



7
8
9
# File 'lib/vanilla/request.rb', line 7

def snip_name
  @snip_name
end

Instance Method Details

#cookiesObject



26
27
28
# File 'lib/vanilla/request.rb', line 26

def cookies
  @rack_request.cookies
end

#ipObject



30
31
32
# File 'lib/vanilla/request.rb', line 30

def ip
  @rack_request.env["REMOTE_ADDR"]
end

#paramsObject



15
16
17
18
# File 'lib/vanilla/request.rb', line 15

def params
  # Don't you just love how terse functional programming tends to look like maths?
  @symbolised_params ||= @rack_request.params.inject({}) { |p, (k,v)| p[k.to_sym] = v; p }
end

#sessionObject



34
35
36
# File 'lib/vanilla/request.rb', line 34

def session
  @rack_request.env["rack.session"]
end

#snipObject

Returns the snip referenced by the request’s URL. Performs no exception handling, so if the snip does not exist, an exception will be thrown.



22
23
24
# File 'lib/vanilla/request.rb', line 22

def snip
  @app.soup[snip_name]
end