Handler to all kind of HTTP request methods.

all is a special request handler, which is not derived from any HTTP method. This method is used to respond at a path for all request methods.

In the following example, the handler will be executed for requests to "/user" whether you are using GET, POST, PUT, DELETE, or any other HTTP request method.

class AllHandler
    super Handler

    redef fun all(req, res) do res.send "Every request to the homepage"
end

Using the all method you can also implement other HTTP request methods.

class MergeHandler
    super Handler

    redef fun all(req, res) do
        if req.method == "MERGE" then
            # handle that method
        else super # keep handle GET, POST, PUT and DELETE methods
    end
end

Property definitions

popcorn $ Handler :: all
	# Handler to all kind of HTTP request methods.
	#
	# `all` is a special request handler, which is not derived from any
	# HTTP method. This method is used to respond at a path for all request methods.
	#
	# In the following example, the handler will be executed for requests to "/user"
	# whether you are using GET, POST, PUT, DELETE, or any other HTTP request method.
	#
	# ~~~
	# class AllHandler
	#	super Handler
	#
	#	redef fun all(req, res) do res.send "Every request to the homepage"
	# end
	# ~~~
	#
	# Using the `all` method you can also implement other HTTP request methods.
	#
	# ~~~
	# class MergeHandler
	#	super Handler
	#
	#	redef fun all(req, res) do
	#		if req.method == "MERGE" then
	#			# handle that method
	#		else super # keep handle GET, POST, PUT and DELETE methods
	#	end
	# end
	# ~~~
	fun all(req: HttpRequest, res: HttpResponse) do
		if req.method == "GET" then
			get(req, res)
		else if req.method == "POST" then
			post(req, res)
		else if req.method == "PUT" then
			put(req, res)
		else if req.method == "DELETE" then
			delete(req, res)
		else
			res.status_code = 405
		end
	end
lib/popcorn/pop_handlers.nit:82,2--123,4

popcorn $ RequestClock :: all
	redef fun all(req, res) do req.clock = new Clock
lib/popcorn/pop_logging.nit:29,2--49

popcorn $ SessionInit :: all
	redef fun all(req, res) do if req.session == null then req.session = new Session
lib/popcorn/pop_sessions.nit:71,2--81

popcorn $ RequestTimeHandler :: all
	redef fun all(req, res) do req.timer = new Clock
lib/popcorn/examples/middlewares/example_advanced_logger.nit:30,2--49

popcorn $ AdvancedLoggerHandler :: all
	redef fun all(req, res) do
		var timer = req.timer
		if timer != null then
			print "{req.method} {req.uri} {res.color_status} ({timer.total}s)"
		else
			print "{req.method} {req.uri} {res.color_status}"
		end
	end
lib/popcorn/examples/middlewares/example_advanced_logger.nit:36,2--43,4

popcorn $ HtmlErrorHandler :: all
	redef fun all(req, res) do
		if res.status_code != 200 then
			res.send(new HtmlErrorTemplate(res.status_code, "An error occurred!"))
		end
	end
lib/popcorn/examples/middlewares/example_html_error_handler.nit:44,2--48,4

popcorn $ SimpleErrorHandler :: all
	redef fun all(req, res) do
		if res.status_code != 200 then
			res.send("An error occurred!", res.status_code)
		end
	end
lib/popcorn/examples/middlewares/example_simple_error_handler.nit:22,2--26,4

popcorn $ SimpleLoggerHandler :: all
	redef fun all(req, res) do print "Request Logged"
lib/popcorn/examples/middlewares/example_simple_logger.nit:24,2--50

popcorn $ UserLogger :: all
	redef fun all(req, res) do print "User logged"
lib/popcorn/examples/routing/example_router.nit:30,2--47

popcorn $ PopLogger :: all
	redef fun all(req, res) do
		var clock = req.clock
		if clock != null then
			add_raw(info_level, "{req.method} {req.url} {status(res)} ({clock.total}s)")
		else
			add_raw(info_level, "{req.method} {req.url} {status(res)}")
		end
	end
lib/popcorn/pop_logging.nit:42,2--49,4

popcorn $ PopTracker :: all
	redef fun all(req, res) do
		config.tracker_logs.save new LogEntry(req, res)
	end
lib/popcorn/pop_tracker.nit:95,2--97,4