Class: ProgressiveRender::Rack::RequestHandler

Inherits:
Object
  • Object
show all
Defined in:
lib/progressive_render/rack/request_handler.rb

Overview

Wraps a given rack request to determine what sort of request we’re dealing with and what specific fragment the request is for when it’s a progressive request.

Constant Summary collapse

FRAGMENT_KEY =
'load_partial'.freeze

Instance Method Summary collapse

Constructor Details

#initialize(request) ⇒ RequestHandler

Returns a new instance of RequestHandler.



11
12
13
# File 'lib/progressive_render/rack/request_handler.rb', line 11

def initialize(request)
  @request = request
end

Instance Method Details

#fragment_nameObject



19
20
21
# File 'lib/progressive_render/rack/request_handler.rb', line 19

def fragment_name
  @request.GET[FRAGMENT_KEY]
end

#load_path(fragment_name) ⇒ Object



27
28
29
30
31
32
33
34
35
# File 'lib/progressive_render/rack/request_handler.rb', line 27

def load_path(fragment_name)
  return nil unless main_load?

  # Ensure we get a fresh copy of the request and aren't modifying it
  query = @request.GET.clone
  query[FRAGMENT_KEY] = fragment_name

  URI::HTTP.build(path: @request.path, query: ::Rack::Utils.build_nested_query(query)).request_uri
end

#main_load?Boolean

Returns:

  • (Boolean)


15
16
17
# File 'lib/progressive_render/rack/request_handler.rb', line 15

def main_load?
  fragment_name.nil? || fragment_name == ''
end

#should_render_fragment?(user_fragment_name) ⇒ Boolean

Returns:

  • (Boolean)


23
24
25
# File 'lib/progressive_render/rack/request_handler.rb', line 23

def should_render_fragment?(user_fragment_name)
  !main_load? && fragment_name == user_fragment_name
end