comparison 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
comparison
equal deleted inserted replaced
1262:81d3a01fbd09 1263:382c444a6c77
11 local java_to_table_deep = Table.java_to_table_deep or error() 11 local java_to_table_deep = Table.java_to_table_deep or error()
12 local Package = require "luan:Package.luan" 12 local Package = require "luan:Package.luan"
13 local String = require "luan:String.luan" 13 local String = require "luan:String.luan"
14 local lower = String.lower or error() 14 local lower = String.lower or error()
15 local matches = String.matches or error() 15 local matches = String.matches or error()
16 local trim = String.trim or error()
16 local IoLuan = require "java:luan.modules.IoLuan" 17 local IoLuan = require "java:luan.modules.IoLuan"
17 local LuanJava = require "java:luan.Luan" 18 local LuanJava = require "java:luan.Luan"
18 local Request = require "java:luan.webserver.Request" 19 local Request = require "java:luan.webserver.Request"
19 local Response = require "java:luan.webserver.Response" 20 local Response = require "java:luan.webserver.Response"
20 local ResponseOutputStream = require "java:luan.webserver.ResponseOutputStream" 21 local ResponseOutputStream = require "java:luan.webserver.ResponseOutputStream"
21 local Status = require "java:luan.webserver.Status" 22 local Status = require "java:luan.webserver.Status"
22 local OutputStreamWriter = require "java:java.io.OutputStreamWriter" 23 local OutputStreamWriter = require "java:java.io.OutputStreamWriter"
23 local HashMap = require "java:java.util.HashMap" 24 local HashMap = require "java:java.util.HashMap"
25 local Logging = require "luan:logging/Logging.luan"
26 local logger = Logging.logger "Http"
24 27
25 28
26 local Http = {} 29 local Http = {}
27 30
28 local old_java_to_table_shallow = Table.java_to_table_shallow or error() 31 local old_java_to_table_shallow = Table.java_to_table_shallow or error()
155 end 158 end
156 response.writer and response.writer.close() 159 response.writer and response.writer.close()
157 return java 160 return java
158 end 161 end
159 162
163 function Http.error_priority(java_request,e)
164 return "error"
165 end
166
167 function Http.handle_error(java_request,e)
168 local call = Http.error_priority(java_request,e)
169 local err = e.get_stack_trace_string()
170 logger[call](err.."\n"..trim(java_request.rawHead).."\n")
171 local msg = "Internel Server Error\n\n"..err
172 return Response.errorResponse( Status.INTERNAL_SERVER_ERROR, msg )
173 end
174
160 return Http 175 return Http