1d325e3325a0e0702b64556fb9a4ac0185dc6569
[ndcode_site.git] / _lib / get_placeholder.jst
1 let logjson = (await import('@ndcode/logjson')).default
2 let XDate = require('xdate')
3
4 return async (env, session) => {
5   let data = await env.site.get_json('/_placeholder/data.json')
6
7   // placeholder data (name, email, address etc) is generated randomly)
8   // it is stored in session, so user shouldn't normally realize it's random,
9   // and updated every 24 hours (in case we generated an embarrassing one)
10   let placeholder = await session.get_json('placeholder')
11   if (placeholder === undefined || env.now >= placeholder.expires) {
12     let given_name = data.given_names[
13       Math.floor(Math.random() * data.given_names.length)
14     ]
15
16     let family_name = data.family_names[
17       Math.floor(Math.random() * data.family_names.length)
18     ]
19
20     let user =
21       Math.random() < .5 ?
22         [given_name, family_name] :
23         [family_name, given_name]
24     if (Math.random() < .5)
25       user = user.map(name => name.toLowerCase())
26     user = user.join(
27       data.separators[
28         Math.floor(Math.random() * data.separators.length)
29       ]
30     )
31     let domain_name = data.domain_names[
32       Math.floor(Math.random() * data.domain_names.length)
33     ]
34     let email = `${user}@${domain_name}`
35
36     let expires = new XDate(env.now)
37     expires.addDays(1)
38
39     placeholder = {
40       given_names: given_name,
41       family_name,
42       email,
43       expires: expires.getTime()
44     }
45     session.set_json('placeholder', placeholder)
46   }
47   return placeholder
48 }