Major refactoring of get_session(), get_account(), get_nodemailer(), introduces ...
[ndcode_site.git] / api / feedback.json.jst
1 let XDate = require('xdate')
2
3 return async env => {
4   let get_nodemailer = await _require('/_lib/get_nodemailer.jst')
5   let post_request = await _require('/_lib/post_request.jst')
6
7   await post_request(
8     // env
9     env,
10     // handler
11     async (page, message) => {
12       // coerce and/or validate
13       page = page.slice(0, 256)
14       mesage = message.slice(0, 65536)
15       if (page.length === 0 || message.length === 0)
16         throw new Problem(
17           'Bad request',
18           'Minimum length check failed',
19           400
20         )
21
22       let transaction = await env.site.database.Transaction()
23       let nodemailer
24       let feedback_from, feedback_to
25       try {
26         let root = await transaction.get({})
27
28         nodemailer = await get_nodemailer(root, 'feedback')
29
30         let globals = await root.get('globals', {})
31         feedback_from = await globals.get_json('feedback_from')
32         feedback_to = await globals.get_json('feedback_to')
33       }
34       finally {
35         transaction.rollback()
36       }
37
38       await nodemailer.sendMail(
39         {
40           from: feedback_from,
41           to: feedback_to,
42           subject: 'Page: ' + page,
43           text: message
44         }
45       )
46     }
47   )
48 }