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