local html = require("lapis.html")
local accept_json
accept_json = function(self)
do
local accept = self.req.headers.accept
if accept then
local _exp_0 = type(accept)
if "string" == _exp_0 then
if accept:lower():match("application/json") then
return true
end
elseif "table" == _exp_0 then
for _index_0 = 1, #accept do
local v = accept[_index_0]
if v:lower():match("application/json") then
return true
end
end
end
end
end
return false
end
local ErrorPage
do
local _class_0
local _parent_0 = html.Widget
local _base_0 = {
style = function(self)
return style({
type = "text/css"
}, function()
return raw([[ body {
color: #222;
background: #ddd;
font-family: sans-serif;
margin: 20px;
}
h1, h2, pre {
margin: 20px;
}
pre {
white-space: pre-wrap;
}
.box {
background: white;
overflow: hidden;
box-shadow: 1px 1px 8px gray;
border-radius: 1px;
}
.footer {
text-align: center;
font-family: serif;
margin: 10px;
font-size: 12px;
color: #A7A7A7;
}
]])
end)
end,
content = function(self)
if accept_json(self) then
local to_json
to_json = require("lapis.util").to_json
self.res.headers["Content-Type"] = "application/json"
raw(to_json({
error = self.err,
traceback = self.trace,
lapis = {
version = require("lapis.version")
}
}))
return
end
return html_5(function()
head(function()
meta({
charset = "UTF-8"
})
title("Error")
return self:style()
end)
return body(function()
div({
class = "box"
}, function()
h1("Error")
pre(function()
return text(self.err)
end)
h2("Traceback")
return pre(function()
return text(self.trace)
end)
end)
local version = require("lapis.version")
return div({
class = "footer"
}, "lapis " .. tostring(version))
end)
end)
end
}
_base_0.__index = _base_0
setmetatable(_base_0, _parent_0.__base)
_class_0 = setmetatable({
__init = function(self, ...)
return _class_0.__parent.__init(self, ...)
end,
__base = _base_0,
__name = "ErrorPage",
__parent = _parent_0
}, {
__index = function(cls, name)
local val = rawget(_base_0, name)
if val == nil then
local parent = rawget(cls, "__parent")
if parent then
return parent[name]
end
else
return val
end
end,
__call = function(cls, ...)
local _self_0 = setmetatable({}, _base_0)
cls.__init(_self_0, ...)
return _self_0
end
})
_base_0.__class = _class_0
if _parent_0.__inherited then
_parent_0.__inherited(_parent_0, _class_0)
end
ErrorPage = _class_0
return _class_0
end