0
|
1 local Luan = require "luan:Luan.luan"
|
|
2 local error = Luan.error
|
|
3 local new_error = Luan.new_error or error()
|
|
4 local stringify = Luan.stringify or error()
|
|
5 local Parsers = require "luan:Parsers.luan"
|
|
6 local json_parse = Parsers.json_parse or error()
|
|
7 local json_string = Parsers.json_string or error()
|
|
8 local Io = require "luan:Io.luan"
|
|
9 local Http = require "luan:http/Http.luan"
|
|
10 local Mail = require "luan:mail/Mail.luan"
|
|
11 local Logging = require "luan:logging/Logging.luan"
|
|
12 local logger = Logging.logger "send.json"
|
|
13
|
|
14
|
|
15 local function user_error(msg)
|
|
16 local e = new_error(msg)
|
|
17 e.error = {
|
|
18 okay = false
|
|
19 error = msg
|
|
20 }
|
|
21 e.throw()
|
|
22 end
|
|
23
|
|
24 return function()
|
|
25 Io.stdout = Http.response.text_writer()
|
|
26 try
|
|
27 local server = Http.request.parameters.server or user_error "parameter 'server' missing"
|
|
28 local mail = Http.request.parameters.mail or user_error "parameter 'mail' missing"
|
|
29 try
|
|
30 server = json_parse(server)
|
|
31 catch e
|
|
32 user_error "invalid JSON in 'server'"
|
|
33 end
|
|
34 try
|
|
35 mail = json_parse(mail)
|
|
36 catch e
|
|
37 user_error "invalid JSON in 'mail'"
|
|
38 end
|
|
39 try
|
|
40 Mail.sender(server).send(mail)
|
|
41 catch e
|
|
42 logger.warn(e..stringify(server).."\n"..stringify(mail))
|
|
43 user_error(e.get_message())
|
|
44 end
|
|
45 %><%=json_string{okay=true}%><%
|
|
46 catch e
|
|
47 if e.error ~= nil then
|
|
48 %><%=json_string(e.error)%><%
|
|
49 return
|
|
50 end
|
|
51 e.throw()
|
|
52 end
|
|
53 end
|