Class: Boxcab::PageMiddleware
- Inherits:
-
Object
- Object
- Boxcab::PageMiddleware
- Defined in:
- lib/boxcab/page_middleware.rb
Constant Summary collapse
- BOXCAB_PATH =
/^\/_boxcab\/(.*)/o
- BOXCAB_PARAM_NAME =
'boxcab_content'
Instance Method Summary collapse
- #_call(env) ⇒ Object
- #call(env) ⇒ Object
- #change_request(env, path) ⇒ Object
- #decode_content(env) ⇒ Object
-
#initialize(app) ⇒ PageMiddleware
constructor
A new instance of PageMiddleware.
Constructor Details
#initialize(app) ⇒ PageMiddleware
Returns a new instance of PageMiddleware.
8 9 10 |
# File 'lib/boxcab/page_middleware.rb', line 8 def initialize(app) @app = app end |
Instance Method Details
#_call(env) ⇒ Object
16 17 18 19 20 21 22 23 |
# File 'lib/boxcab/page_middleware.rb', line 16 def _call(env) if env['PATH_INFO'] =~ BOXCAB_PATH change_request(env, $1) decode_content(env) end @app.call(env) end |
#call(env) ⇒ Object
12 13 14 |
# File 'lib/boxcab/page_middleware.rb', line 12 def call(env) dup._call(env) end |
#change_request(env, path) ⇒ Object
25 26 27 28 29 30 31 32 33 |
# File 'lib/boxcab/page_middleware.rb', line 25 def change_request(env, path) path = "/#{path}" path = '/' if path == '/index' env['REQUEST_METHOD'] = 'GET' env['REQUEST_URI'] = path env['PATH_INFO'] = path env['ORIGINAL_FULLPATH'] = path end |
#decode_content(env) ⇒ Object
35 36 37 38 39 40 41 42 43 44 45 |
# File 'lib/boxcab/page_middleware.rb', line 35 def decode_content(env) request = Rack::Request.new(env) content = request.params[BOXCAB_PARAM_NAME] return if content.blank? decoded = Base64.decode64(content) _content = ActiveSupport::JSON.decode(URI.unescape(decoded)) request.update_param(BOXCAB_PARAM_NAME, _content) end |