diff --git a/api/wakatime.js b/api/wakatime.js index 36446bbd9a4f1..44f0984d36bd8 100644 --- a/api/wakatime.js +++ b/api/wakatime.js @@ -25,6 +25,7 @@ module.exports = async (req, res) => { custom_title, locale, layout, + api_domain, } = req.query; res.setHeader("Content-Type", "image/svg+xml"); @@ -34,7 +35,7 @@ module.exports = async (req, res) => { } try { - const last7Days = await fetchLast7Days({ username }); + const last7Days = await fetchLast7Days({ username, api_domain }); let cacheSeconds = clampValue( parseInt(cache_seconds || CONSTANTS.TWO_HOURS, 10), diff --git a/src/fetchers/wakatime-fetcher.js b/src/fetchers/wakatime-fetcher.js index 41ea22f211f35..f6f2b5ec818ef 100644 --- a/src/fetchers/wakatime-fetcher.js +++ b/src/fetchers/wakatime-fetcher.js @@ -1,14 +1,16 @@ const axios = require("axios"); -const fetchLast7Days = async ({ username }) => { +const fetchLast7Days = async ({ username, api_domain }) => { try { const { data } = await axios.get( - `https://wakatime.com/api/v1/users/${username}/stats/last_7_days?is_including_today=true`, + `https://${ + api_domain ? api_domain.replace(/[^a-z-.0-9]/gi, "") : "wakatime.com" + }/api/v1/users/${username}/stats/last_7_days?is_including_today=true`, ); return data.data; } catch (err) { - if (err.response.status === 404) { + if (err.response.status < 200 || err.response.status > 299) { throw new Error( "Wakatime user not found, make sure you have a wakatime profile", );