module Rack::Blogengine::ApplicationRouter

ApplicationRouter routes the request to the proper, parsed .content (layout.html + .content) file

@author [benny]

Public Class Methods

map_route(request, documents) click to toggle source

Maps documents to routes. @param [Rack::Request] request [Current Request Object] @param [Array] documents [parsed in Documents] @return [Hash] request [route Hash {'path' => [String], 'response' => [Rack::Response]}]

# File lib/rack/blogengine/application_router.rb, line 14
def map_route(request, documents)
  header = { 'Content-Type' => 'text/html; charset=UTF-8' }

  # Iterate through available docs, if nothing matched return nil
  documents.each do |doc|
    if doc[:path] == request.path
      response = Rack::Response.new(doc[:html], 200, header)

      route_response = {
        'path' => request.path,
        'response' => response
        # 'response' => [200, header, [doc[:html]]]
      }

      return route_response
    end
  end

  # if no document matches -> return error page
  errorpage(request, documents)
end

Private Class Methods

errorpage(request, documents) click to toggle source

Returns the errorpage @param [Rack::Request] request [current Request] @param [Array] documents [parsed in Documents]

# File lib/rack/blogengine/application_router.rb, line 39
def errorpage(request, documents)
  header = { 'Content-Type' => 'text/html; charset=UTF-8' }
  response = Rack::Response.new('Page not found', 404, header)

  { 'path' => request.path, 'response' => response }
end