Move analytics stuff into the html page template in businessdataflow.git
authorNick Downing <downing.nick@gmail.com>
Tue, 9 Oct 2018 02:13:59 +0000 (13:13 +1100)
committerNick Downing <downing.nick@gmail.com>
Tue, 9 Oct 2018 02:13:59 +0000 (13:13 +1100)
site.js

diff --git a/site.js b/site.js
index 1e6f47e..482b1bf 100644 (file)
--- a/site.js
+++ b/site.js
@@ -7,7 +7,6 @@ let resources = require('./resources')
 let server = require('./server')
 let util = require('util')
 let url = require('url')
-let XDate = require('xdate')
 
 let fs_readFile = util.promisify(fs.readFile)
 let fs_stat = util.promisify(fs.stat)
@@ -81,56 +80,6 @@ let app = async (site, site_root, req, res, protocol) => {
     config.mime_types[file_type] :
     config.mime_type_default
 
-  if (file_type == 'html') {
-    let path_analytics = site_root + '/analytics'
-    let path_sessions = path_analytics + '/sessions.json'
-    let path_pageviews = path_analytics + '/pageviews.json'
-
-    await resources.try_mkdir(path_analytics)
-    let sessions = await resources.json_cache.get(path_sessions, {})
-    let pageviews = await resources.json_cache.get(path_pageviews, {})
-
-    let cookies = cookie.parse(req.headers.cookie || ''), session_key
-    if (
-      !cookies.hasOwnProperty('session_key') ||
-      !sessions.hasOwnProperty(session_key = cookies.session_key)
-    ) {
-      session_key = crypto.randomBytes(16).toString('hex')
-      console.log('new session', session_key)
-      sessions[session_key] = {pageviews: {}}
-    }
-    let session = sessions[session_key]
-  
-    let expires = new XDate()
-    expires.addMonths(1)
-    expires = expires.toUTCString()
-    res.setHeader(
-      'Set-Cookie',
-      'session_key=' + session_key + '; expires=' + expires + '; path=/;'
-    )
-    session.expires = expires
-
-    if (!pageviews.hasOwnProperty(page)) {
-      console.log('new pageview', page)
-      pageviews[page] = {}
-    }
-    let pageview = pageviews[page]
-    ++pageview.visits;
-
-    //if (!session.hasOwnProperty('pageviews'))
-    //  session.pageviews = {}
-    let session_pageviews = session.pageviews
-    if (!session_pageviews.hasOwnProperty(page)) {
-      console.log('new session_pageview', page)
-      session_pageviews[page] = 0
-      ++pageview.unique_visits
-    }
-    ++session_pageviews[page]
-
-    await resources.json_cache.set(path_sessions)
-    await resources.json_cache.set(path_pageviews)
-  }
-
   if (dir_name_is_pub) {
     temp = site_root + dir_name + '/' + file_name
     try {
@@ -179,9 +128,24 @@ let app = async (site, site_root, req, res, protocol) => {
       try {
         let buffers = []
         let env = {
+          cookies: cookie.parse(req.headers.cookie || ''),
           lang: 'en',
           page: page,
           query: parsed_url.query,
+          resources: resources,
+          set_cookie: (key, value, expires, path) => {
+            res.setHeader(
+              'Set-Cookie',
+              key +
+              '=' +
+              value +
+              '; expires=' +
+              expires +
+              '; path=' +
+              path +
+              ';'
+            )
+          },
           site: site,
           site_root: site_root
         }