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
14
# File 'lib/vanilla/request.rb', line 9

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

Dynamic Method Handling

This class handles dynamic methods through the method_missing method

#method_missing(name, *args) ⇒ Object



27
28
29
30
31
32
33
# File 'lib/vanilla/request.rb', line 27

def method_missing(name, *args)
  if @rack_request.respond_to?(name)
    @rack_request.send(name, *args)
  else
    super
  end
end

Instance Attribute Details

#envObject (readonly)

Returns the value of attribute env.



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

def env
  @env
end

#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

#paramsObject

returns the parameters of the request, with every key as a symbol



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

def params
  @symbolised_params ||= @rack_request.params.inject({}) { |p, (k,v)| p[k.to_sym] = v; p }
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.



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

def snip
  @app.soup[snip_name]
end