(url)
| 3 | import { requireEnv, upstreamError } from './_common/upstream.js'; |
| 4 | |
| 5 | const qualityHandler = async (url) => { |
| 6 | const auth = requireEnv('GOOGLE_CLOUD_API_KEY', 'Quality check'); |
| 7 | if (auth.skipped) return auth; |
| 8 | const endpoint = |
| 9 | `https://www.googleapis.com/pagespeedonline/v5/runPagespeed?` + |
| 10 | `url=${encodeURIComponent(url)}&category=PERFORMANCE&category=ACCESSIBILITY` + |
| 11 | `&category=BEST_PRACTICES&category=SEO&category=PWA&strategy=mobile` + |
| 12 | `&key=${auth.value}`; |
| 13 | |
| 14 | let data; |
| 15 | try { |
| 16 | data = (await httpGet(endpoint)).data; |
| 17 | } catch (error) { |
| 18 | return upstreamError(error, 'Quality check'); |
| 19 | } |
| 20 | const result = data.lighthouseResult || data; |
| 21 | if (!result?.categories || !Object.keys(result.categories).length) { |
| 22 | return { skipped: 'No quality report available for this URL' }; |
| 23 | } |
| 24 | return result; |
| 25 | }; |
| 26 | |
| 27 | export const handler = middleware(qualityHandler); |
| 28 | export default handler; |
nothing calls this directly
no test coverage detected