Sha256: e1dc086a1f428dcee22c42b34cf1d3e5f289fbaabd945037d33e198dc8034791

Contents?: true

Size: 1.08 KB

Versions: 18

Compression:

Stored size: 1.08 KB

Contents

require 'kramdown'

class Jets::Server
  class ApiGateway
    def self.call(env)
      Jets.boot
      route = RouteMatcher.new(env).find_route
      if route
        proxy = LambdaAwsProxy.new(route, env)
        proxy.response # triplet
      else
        [404, {'Content-Type' => 'text/html'}, [routes_error_message(env)]]
      end
    end

    def self.routes_error_message(env)
      message = "<h2>404 Error: Route #{env['PATH_INFO'].sub('/','')} not found</h2>"
      if Jets.env != "production"
        message << "<p>Here are the routes defined in your application:</p>"
        message << "#{routes_table}"
      end
      message
    end

    # Show pretty route table for user to help with debugging in non-production mode
    def self.routes_table
      routes = Jets::Router.routes

      return "Your routes table is empty." if routes.empty?

      text = "Verb | Path | Controller#action\n"
      text << "--- | --- | ---\n"
      routes.each do |route|
        text << "#{route.method} | #{route.path} | #{route.to}\n"
      end
      Kramdown::Document.new(text).to_html
    end
  end
end

Version data entries

18 entries across 18 versions & 1 rubygems

Version Path
jets-1.0.18 lib/jets/server/api_gateway.rb
jets-1.0.17 lib/jets/server/api_gateway.rb
jets-1.0.16 lib/jets/server/api_gateway.rb
jets-1.0.15 lib/jets/server/api_gateway.rb
jets-1.0.13 lib/jets/server/api_gateway.rb
jets-1.0.12 lib/jets/server/api_gateway.rb
jets-1.0.11 lib/jets/server/api_gateway.rb
jets-1.0.10 lib/jets/server/api_gateway.rb
jets-1.0.9 lib/jets/server/api_gateway.rb
jets-1.0.8 lib/jets/server/api_gateway.rb
jets-1.0.7 lib/jets/server/api_gateway.rb
jets-1.0.6 lib/jets/server/api_gateway.rb
jets-1.0.5 lib/jets/server/api_gateway.rb
jets-1.0.4 lib/jets/server/api_gateway.rb
jets-1.0.3 lib/jets/server/api_gateway.rb
jets-1.0.2 lib/jets/server/api_gateway.rb
jets-1.0.1 lib/jets/server/api_gateway.rb
jets-1.0.0 lib/jets/server/api_gateway.rb