Files
Checkmate/Server/service/pageSpeedService.js
T

46 lines
1.3 KiB
JavaScript
Raw Normal View History

2024-07-22 19:49:05 -07:00
const PageSpeedCheck = require("../models/PageSpeedCheck");
const axios = require("axios");
const logger = require("../utils/logger");
class PageSpeedService {
constructor() {
this.SERVICE_NAME = "PageSpeedService";
}
2024-07-22 19:49:33 -07:00
/**
* Runs a PageSpeed check using Google Lighthouse API.
* @param {string} url - The URL to check.
* @returns {Promise<Object>} The results from the PageSpeed API.
*/
2024-07-22 19:49:05 -07:00
async runPageSpeedCheck(url) {
try {
2024-07-24 12:34:42 -07:00
const response = await axios({
method: 'get',
url: 'https://pagespeedonline.googleapis.com/pagespeedonline/v5/runPagespeed',
params: {
url: url,
categories: 'performance,accessibility,best-practices,seo',
},
});
2024-07-22 19:49:05 -07:00
return response.data;
} catch (error) {
logger.error(`Error running PageSpeed check for ${url}`, {
service: this.SERVICE_NAME,
error: error.message,
});
throw new Error("Failed to run PageSpeed check");
}
}
2024-07-22 19:49:33 -07:00
/**
* Creates a new PageSpeedCheck document.
* @param {Object} data - The data for the new PageSpeedCheck.
* @returns {Promise<PageSpeedCheck>} The created PageSpeedCheck document.
*/
2024-07-22 19:49:05 -07:00
async createPageSpeedCheck(data) {
const newPageSpeedCheck = new PageSpeedCheck(data);
return await newPageSpeedCheck.save();
}
}
module.exports = PageSpeedService;