/**
- * Pick out useful axios response fields.
- * @param {AxiosResponse} res
+ * 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',
]);
- 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;
};
}
-/**
- * Encodes single-level object as form data string.
- * @param {Object} data
- */
-const formData = (data) => {
- const formData = new URLSearchParams();
- Object.entries(data).forEach(([name, value]) => formData.set(name, value));
- return formData.toString();
-};
-
-
module.exports = {
fileScope,
- axiosResponseLogData,
+ gotResponseLogData,
logTruncate,
pick,
setSymmetricDifference,
properURLComponentName,
- formData,
};
\ No newline at end of file