Unverified Commit 93ae8d99 authored by Anurag Hazra's avatar Anurag Hazra Committed by GitHub
Browse files

fix: wakatime stats fetcher (#871)

fixes #865
parent 799a8c1e
Loading
Loading
Loading
Loading
+3 −3
Original line number Diff line number Diff line
@@ -6,7 +6,7 @@ const {
  CONSTANTS,
  isLocaleAvailable,
} = require("../src/common/utils");
const { fetchLast7Days } = require("../src/fetchers/wakatime-fetcher");
const { fetchWakatimeStats } = require("../src/fetchers/wakatime-fetcher");
const wakatimeCard = require("../src/cards/wakatime-card");

module.exports = async (req, res) => {
@@ -35,7 +35,7 @@ module.exports = async (req, res) => {
  }

  try {
    const last7Days = await fetchLast7Days({ username, api_domain });
    const stats = await fetchWakatimeStats({ username, api_domain });

    let cacheSeconds = clampValue(
      parseInt(cache_seconds || CONSTANTS.TWO_HOURS, 10),
@@ -50,7 +50,7 @@ module.exports = async (req, res) => {
    res.setHeader("Cache-Control", `public, max-age=${cacheSeconds}`);

    return res.send(
      wakatimeCard(last7Days, {
      wakatimeCard(stats, {
        custom_title,
        hide_title: parseBoolean(hide_title),
        hide_border: parseBoolean(hide_border),
+3 −3
Original line number Diff line number Diff line
const axios = require("axios");

const fetchLast7Days = async ({ username, api_domain }) => {
const fetchWakatimeStats = async ({ username, api_domain }) => {
  try {
    const { data } = await axios.get(
      `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`,
      }/api/v1/users/${username}/stats?is_including_today=true`,
    );

    return data.data;
@@ -20,5 +20,5 @@ const fetchLast7Days = async ({ username, api_domain }) => {
};

module.exports = {
  fetchLast7Days,
  fetchWakatimeStats,
};
+20 −20
Original line number Diff line number Diff line
@@ -230,27 +230,27 @@ const langCardLocales = {
const wakatimeCardLocales = {
  "wakatimecard.title": {
    cn: "Wakatime 周统计",
    cs: "Statistiky týdne Wakatime",
    de: "Wakatime Wochen Status",
    en: "Wakatime Week Stats",
    es: "Estadísticas de la semana de Wakatime",
    fr: "Statistiques de la semaine de Wakatime",
    hu: "Wakatime heti statisztika",
    it: "Statistiche della settimana di Wakatime",
    ja: "Wakatime ウィーク統計",
    cs: "Statistiky Wakatime",
    de: "Wakatime Status",
    en: "Wakatime Stats",
    es: "Estadísticas de Wakatime",
    fr: "Statistiques de Wakatime",
    hu: "Wakatime statisztika",
    it: "Statistiche Wakatime",
    ja: "Wakatime ワカタイム統計",
    kr: "Wakatime 주간 통계",
    nl: "Wekelijkse Wakatime Status",
    "pt-pt": "Estatísticas semanais Wakatime",
    "pt-br": "Estatísticas da semana Wakatime",
    np: "Wakatime हप्ता तथ्या्क",
    el: "Εβδομαδιαία Στατιστικά από Wakatime",
    ru: "Статистика недели Wakatime",
    "uk-ua": "Статистика тижні Wakatime",
    id: "Status Mingguan Wakatime",
    my: "Statistik Minggu Wakatime",
    sk: "Týždenná Wakatime štatistika",
    tr: "Waketime Haftalık İstatistikler",
    pl: "Tygodniowe statystyki Wakatime",
    nl: "Takwimu za Wakatime",
    "pt-pt": "Estatísticas Wakatime",
    "pt-br": "Estatísticas Wakatime",
    np: "Wakatime तथ्या .्क",
    el: "Στατιστικά Wakatime",
    ru: "Статистика Вакатиме",
    "uk-ua": "Статистика Wakatime",
    id: "Status Wakatime",
    my: "Statistik Wakatime",
    sk: "Wakatime štatistika",
    tr: "Waketime İstatistikler",
    pl: "statystyki Wakatime",
  },
  "wakatimecard.nocodingactivity": {
    cn: "本周没有编程活动",
+2 −2
Original line number Diff line number Diff line
@@ -86,7 +86,7 @@ exports[`Test Render Wakatime Card should render correctly 1`] = `
        y=\\"0\\"
        class=\\"header\\"
        data-testid=\\"header\\"
      >Wakatime Week Stats</text>
      >Wakatime Stats</text>
    </g>
      </g>
    
@@ -237,7 +237,7 @@ exports[`Test Render Wakatime Card should render correctly with compact layout 1
        y=\\"0\\"
        class=\\"header\\"
        data-testid=\\"header\\"
      >Wakatime Week Stats</text>
      >Wakatime Stats</text>
    </g>
      </g>
    
+4 −4
Original line number Diff line number Diff line
require("@testing-library/jest-dom");
const axios = require("axios");
const MockAdapter = require("axios-mock-adapter");
const { fetchLast7Days } = require("../src/fetchers/wakatime-fetcher");
const { fetchWakatimeStats } = require("../src/fetchers/wakatime-fetcher");
const mock = new MockAdapter(axios);

afterEach(() => {
@@ -105,11 +105,11 @@ describe("Wakatime fetcher", () => {
    const username = "anuraghazra";
    mock
      .onGet(
        `https://wakatime.com/api/v1/users/${username}/stats/last_7_days?is_including_today=true`,
        `https://wakatime.com/api/v1/users/${username}/stats?is_including_today=true`,
      )
      .reply(200, wakaTimeData);

    const repo = await fetchLast7Days({ username });
    const repo = await fetchWakatimeStats({ username });
    expect(repo).toMatchInlineSnapshot(`
      Object {
        "categories": Array [
@@ -206,7 +206,7 @@ describe("Wakatime fetcher", () => {
  it("should throw error", async () => {
    mock.onGet(/\/https:\/\/wakatime\.com\/api/).reply(404, wakaTimeData);

    await expect(fetchLast7Days("noone")).rejects.toThrow(
    await expect(fetchWakatimeStats("noone")).rejects.toThrow(
      "Wakatime user not found, make sure you have a wakatime profile",
    );
  });