diff src/luan/modules/http/Http.luan @ 1263:382c444a6c77

add Http.eval_in_root and Http.handle_error
author Franklin Schmidt <fschmidt@gmail.com>
date Mon, 24 Sep 2018 22:06:25 -0600
parents 198d6af7330a
children 781ec0a92bb5
line wrap: on
line diff
--- a/src/luan/modules/http/Http.luan	Mon Sep 24 14:48:59 2018 -0600
+++ b/src/luan/modules/http/Http.luan	Mon Sep 24 22:06:25 2018 -0600
@@ -13,6 +13,7 @@
 local String = require "luan:String.luan"
 local lower = String.lower or error()
 local matches = String.matches or error()
+local trim = String.trim or error()
 local IoLuan = require "java:luan.modules.IoLuan"
 local LuanJava = require "java:luan.Luan"
 local Request = require "java:luan.webserver.Request"
@@ -21,6 +22,8 @@
 local Status = require "java:luan.webserver.Status"
 local OutputStreamWriter = require "java:java.io.OutputStreamWriter"
 local HashMap = require "java:java.util.HashMap"
+local Logging = require "luan:logging/Logging.luan"
+local logger = Logging.logger "Http"
 
 
 local Http = {}
@@ -157,4 +160,16 @@
 	return java
 end
 
+function Http.error_priority(java_request,e)
+	return "error"
+end
+
+function Http.handle_error(java_request,e)
+	local call = Http.error_priority(java_request,e)
+	local err = e.get_stack_trace_string()
+	logger[call](err.."\n"..trim(java_request.rawHead).."\n")
+	local msg = "Internel Server Error\n\n"..err
+	return Response.errorResponse( Status.INTERNAL_SERVER_ERROR, msg )
+end
+
 return Http