add support for redeeming ticket, and sending ticket with issuer
[squeep-indieauth-helper] / lib / common.js
index dc0585471303780c5720ab0d5f62fdf55d11d059..b52b819da963d5172a06779e279cf3e2531acbcb 100644 (file)
@@ -1,35 +1,45 @@
 'use strict';
 
 const path = require('path');
+const { name: packageName, version: packageVersion } = require('../package');
+
+const libraryIdentifier = `${packageName}@${packageVersion}`;
 
 /**
  * Return a function which combines a part of the filename with a scope, for use in logging.
  * @param {string} filename
  */
 const fileScope = (filename) => {
-  let fScope = path.basename(filename, '.js');
-  if (fScope === 'index') {
-    fScope = path.basename(path.dirname(filename));
-  }
-  return (scope) => `${fScope}:${scope}`;
+  const shortFilename = path.basename(filename, '.js');
+  const fScope = (shortFilename === 'index') ? path.basename(path.dirname(filename)) : shortFilename;
+  return (scope) => [libraryIdentifier, fScope, scope].join(':');
 }
 
 
 /**
- * Pick out useful axios response fields.
- * @param {*} res
- * @returns
+ * Pick out useful got response fields.
+ * @param {GotResponse} res
+ * @returns {Object}
  */
-const axiosResponseLogData = (res) => {
+const gotResponseLogData = (res) => {
   const data = pick(res, [
-    'status',
-    'statusText',
+    'statusCode',
+    'statusMessage',
     'headers',
-    'elapsedTimeMs',
-    'data',
+    'body',
+    'error',
   ]);
-  if (data.data) {
-    data.data = logTruncate(data.data, 100);
+  if (typeof res.body === 'string') {
+    data.body = logTruncate(data.body, 100);
+  } else if (res.body instanceof Buffer) {
+    data.body = `<Buffer ${res.body.byteLength} bytes>`;
+  }
+  data.elapsedTimeMs = res?.timings?.phases?.total;
+  if (res?.redirectUrls?.length) {
+    data.redirectUrls = res.redirectUrls;
+  }
+  if (res?.retryCount) {
+    data.retryCount = res.retryCount;
   }
   return data;
 };
@@ -99,7 +109,7 @@ const properURLComponentName = (component) => {
 
 module.exports = {
   fileScope,
-  axiosResponseLogData,
+  gotResponseLogData,
   logTruncate,
   pick,
   setSymmetricDifference,