From dd6a040171485446a61b7bea193b54355c507164 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ferdinand=20M=C3=BCtsch?= Date: Tue, 22 Jun 2021 00:27:46 +0200 Subject: [PATCH] chore: add api tests for all alternative heartbeat endpoints --- coverage/coverage.out | 1281 +++++++++-------- routes/api/heartbeat.go | 37 +- static/docs/docs.go | 75 +- static/docs/swagger.json | 75 +- static/docs/swagger.yaml | 48 +- .../Wakapi API Tests.postman_collection.json | 415 +++++- 6 files changed, 1262 insertions(+), 669 deletions(-) diff --git a/coverage/coverage.out b/coverage/coverage.out index 932e571..e19f720 100644 --- a/coverage/coverage.out +++ b/coverage/coverage.out @@ -1,19 +1,42 @@ mode: set -github.com/muety/wakapi/models/heartbeats.go:7.31,9.2 1 0 -github.com/muety/wakapi/models/heartbeats.go:11.41,13.2 1 0 -github.com/muety/wakapi/models/heartbeats.go:15.36,17.2 1 0 -github.com/muety/wakapi/models/heartbeats.go:19.43,22.2 2 0 -github.com/muety/wakapi/models/heartbeats.go:24.41,26.18 1 0 -github.com/muety/wakapi/models/heartbeats.go:29.2,29.16 1 0 -github.com/muety/wakapi/models/heartbeats.go:26.18,28.3 1 0 -github.com/muety/wakapi/models/heartbeats.go:32.40,34.18 1 0 -github.com/muety/wakapi/models/heartbeats.go:37.2,37.24 1 0 -github.com/muety/wakapi/models/heartbeats.go:34.18,36.3 1 0 -github.com/muety/wakapi/models/mail.go:19.44,23.2 3 0 -github.com/muety/wakapi/models/mail.go:25.44,29.2 3 0 -github.com/muety/wakapi/models/mail.go:31.32,44.2 1 0 -github.com/muety/wakapi/models/mail.go:46.41,48.2 1 0 -github.com/muety/wakapi/models/project_label.go:11.39,13.2 1 0 +github.com/muety/wakapi/models/heartbeat.go:32.34,34.2 1 1 +github.com/muety/wakapi/models/heartbeat.go:36.65,38.46 2 1 +github.com/muety/wakapi/models/heartbeat.go:38.46,39.108 1 1 +github.com/muety/wakapi/models/heartbeat.go:39.108,42.4 2 1 +github.com/muety/wakapi/models/heartbeat.go:46.50,47.11 1 1 +github.com/muety/wakapi/models/heartbeat.go:60.2,60.15 1 1 +github.com/muety/wakapi/models/heartbeat.go:64.2,64.12 1 1 +github.com/muety/wakapi/models/heartbeat.go:48.22,49.18 1 1 +github.com/muety/wakapi/models/heartbeat.go:50.21,51.17 1 1 +github.com/muety/wakapi/models/heartbeat.go:52.23,53.19 1 1 +github.com/muety/wakapi/models/heartbeat.go:54.17,55.26 1 1 +github.com/muety/wakapi/models/heartbeat.go:56.22,57.18 1 1 +github.com/muety/wakapi/models/heartbeat.go:60.15,62.3 1 1 +github.com/muety/wakapi/models/heartbeat.go:67.37,83.2 1 0 +github.com/muety/wakapi/models/heartbeat.go:91.41,93.16 2 0 +github.com/muety/wakapi/models/heartbeat.go:96.2,97.10 2 0 +github.com/muety/wakapi/models/heartbeat.go:93.16,95.3 1 0 +github.com/muety/wakapi/models/language_mapping.go:11.42,13.2 1 0 +github.com/muety/wakapi/models/language_mapping.go:15.51,17.2 1 0 +github.com/muety/wakapi/models/language_mapping.go:19.52,21.2 1 0 +github.com/muety/wakapi/models/mail_address.go:15.13,18.2 2 1 +github.com/muety/wakapi/models/mail_address.go:24.38,26.2 1 0 +github.com/muety/wakapi/models/mail_address.go:28.35,30.21 2 1 +github.com/muety/wakapi/models/mail_address.go:36.2,36.11 1 1 +github.com/muety/wakapi/models/mail_address.go:30.21,31.21 1 1 +github.com/muety/wakapi/models/mail_address.go:34.3,34.18 1 1 +github.com/muety/wakapi/models/mail_address.go:31.21,33.4 1 1 +github.com/muety/wakapi/models/mail_address.go:39.35,41.2 1 1 +github.com/muety/wakapi/models/mail_address.go:43.43,45.22 2 0 +github.com/muety/wakapi/models/mail_address.go:48.2,48.12 1 0 +github.com/muety/wakapi/models/mail_address.go:45.22,47.3 1 0 +github.com/muety/wakapi/models/mail_address.go:51.46,53.22 2 1 +github.com/muety/wakapi/models/mail_address.go:56.2,56.12 1 1 +github.com/muety/wakapi/models/mail_address.go:53.22,55.3 1 1 +github.com/muety/wakapi/models/mail_address.go:59.40,60.22 1 1 +github.com/muety/wakapi/models/mail_address.go:65.2,65.13 1 1 +github.com/muety/wakapi/models/mail_address.go:60.22,61.17 1 1 +github.com/muety/wakapi/models/mail_address.go:61.17,63.4 1 1 github.com/muety/wakapi/models/user.go:8.13,10.2 1 1 github.com/muety/wakapi/models/user.go:79.36,80.22 1 1 github.com/muety/wakapi/models/user.go:83.2,84.16 2 1 @@ -29,93 +52,12 @@ github.com/muety/wakapi/models/user.go:116.45,118.2 1 0 github.com/muety/wakapi/models/user.go:120.45,122.2 1 0 github.com/muety/wakapi/models/user.go:124.39,126.2 1 0 github.com/muety/wakapi/models/user.go:128.39,131.2 2 0 -github.com/muety/wakapi/models/interval.go:39.47,40.23 1 0 -github.com/muety/wakapi/models/interval.go:45.2,45.14 1 0 -github.com/muety/wakapi/models/interval.go:40.23,41.13 1 0 -github.com/muety/wakapi/models/interval.go:41.13,43.4 1 0 -github.com/muety/wakapi/models/language_mapping.go:11.42,13.2 1 0 -github.com/muety/wakapi/models/language_mapping.go:15.51,17.2 1 0 -github.com/muety/wakapi/models/language_mapping.go:19.52,21.2 1 0 -github.com/muety/wakapi/models/shared.go:35.52,37.2 1 0 -github.com/muety/wakapi/models/shared.go:39.52,42.16 3 0 -github.com/muety/wakapi/models/shared.go:45.2,47.12 3 0 -github.com/muety/wakapi/models/shared.go:42.16,44.3 1 0 -github.com/muety/wakapi/models/shared.go:50.52,56.22 2 0 -github.com/muety/wakapi/models/shared.go:71.2,74.12 3 0 -github.com/muety/wakapi/models/shared.go:57.14,61.17 2 0 -github.com/muety/wakapi/models/shared.go:64.17,66.8 2 0 -github.com/muety/wakapi/models/shared.go:67.10,68.64 1 0 -github.com/muety/wakapi/models/shared.go:61.17,63.4 1 0 -github.com/muety/wakapi/models/shared.go:77.51,80.2 2 0 -github.com/muety/wakapi/models/shared.go:82.45,84.2 1 0 -github.com/muety/wakapi/models/shared.go:86.37,88.2 1 0 -github.com/muety/wakapi/models/shared.go:90.35,92.2 1 0 -github.com/muety/wakapi/models/shared.go:94.34,96.2 1 0 -github.com/muety/wakapi/models/summary.go:74.29,76.2 1 1 -github.com/muety/wakapi/models/summary.go:78.35,80.2 1 0 -github.com/muety/wakapi/models/summary.go:82.37,90.2 7 1 -github.com/muety/wakapi/models/summary.go:92.35,94.2 1 1 -github.com/muety/wakapi/models/summary.go:96.57,105.2 1 1 -github.com/muety/wakapi/models/summary.go:107.64,109.2 1 0 -github.com/muety/wakapi/models/summary.go:122.33,127.26 4 1 -github.com/muety/wakapi/models/summary.go:134.2,134.37 1 1 -github.com/muety/wakapi/models/summary.go:139.2,140.16 2 1 -github.com/muety/wakapi/models/summary.go:143.2,143.33 1 1 -github.com/muety/wakapi/models/summary.go:127.26,128.30 1 1 -github.com/muety/wakapi/models/summary.go:128.30,130.4 1 1 -github.com/muety/wakapi/models/summary.go:134.37,136.3 1 0 -github.com/muety/wakapi/models/summary.go:140.16,142.3 1 0 -github.com/muety/wakapi/models/summary.go:143.33,145.3 1 1 -github.com/muety/wakapi/models/summary.go:149.56,155.28 5 1 -github.com/muety/wakapi/models/summary.go:159.2,160.42 2 1 -github.com/muety/wakapi/models/summary.go:166.2,166.27 1 1 -github.com/muety/wakapi/models/summary.go:155.28,157.3 1 1 -github.com/muety/wakapi/models/summary.go:160.42,161.22 1 0 -github.com/muety/wakapi/models/summary.go:161.22,163.9 2 0 -github.com/muety/wakapi/models/summary.go:166.27,168.3 1 0 -github.com/muety/wakapi/models/summary.go:168.8,174.3 1 1 -github.com/muety/wakapi/models/summary.go:177.45,182.16 4 0 -github.com/muety/wakapi/models/summary.go:185.2,185.39 1 0 -github.com/muety/wakapi/models/summary.go:189.2,189.30 1 0 -github.com/muety/wakapi/models/summary.go:182.16,184.3 1 0 -github.com/muety/wakapi/models/summary.go:185.39,187.3 1 0 -github.com/muety/wakapi/models/summary.go:192.73,194.55 2 1 -github.com/muety/wakapi/models/summary.go:199.2,199.16 1 1 -github.com/muety/wakapi/models/summary.go:194.55,195.31 1 1 -github.com/muety/wakapi/models/summary.go:195.31,197.4 1 1 -github.com/muety/wakapi/models/summary.go:202.88,204.55 2 1 -github.com/muety/wakapi/models/summary.go:212.2,212.16 1 1 -github.com/muety/wakapi/models/summary.go:204.55,205.31 1 1 -github.com/muety/wakapi/models/summary.go:205.31,206.23 1 1 -github.com/muety/wakapi/models/summary.go:209.4,209.46 1 1 -github.com/muety/wakapi/models/summary.go:206.23,207.13 1 1 -github.com/muety/wakapi/models/summary.go:215.70,217.8 2 1 -github.com/muety/wakapi/models/summary.go:220.2,220.10 1 1 -github.com/muety/wakapi/models/summary.go:217.8,219.3 1 1 -github.com/muety/wakapi/models/summary.go:223.71,224.63 1 1 -github.com/muety/wakapi/models/summary.go:264.2,271.10 7 1 -github.com/muety/wakapi/models/summary.go:224.63,227.45 2 1 -github.com/muety/wakapi/models/summary.go:236.3,236.31 1 1 -github.com/muety/wakapi/models/summary.go:243.3,243.31 1 1 -github.com/muety/wakapi/models/summary.go:260.3,260.16 1 1 -github.com/muety/wakapi/models/summary.go:227.45,228.32 1 1 -github.com/muety/wakapi/models/summary.go:233.4,233.14 1 1 -github.com/muety/wakapi/models/summary.go:228.32,229.24 1 1 -github.com/muety/wakapi/models/summary.go:229.24,231.6 1 1 -github.com/muety/wakapi/models/summary.go:236.31,238.60 1 1 -github.com/muety/wakapi/models/summary.go:238.60,240.5 1 1 -github.com/muety/wakapi/models/summary.go:243.31,245.60 1 1 -github.com/muety/wakapi/models/summary.go:245.60,246.55 1 1 -github.com/muety/wakapi/models/summary.go:246.55,248.6 1 1 -github.com/muety/wakapi/models/summary.go:248.11,256.6 1 1 -github.com/muety/wakapi/models/summary.go:274.57,275.30 1 1 -github.com/muety/wakapi/models/summary.go:280.2,280.43 1 0 -github.com/muety/wakapi/models/summary.go:275.30,276.28 1 1 -github.com/muety/wakapi/models/summary.go:276.28,278.4 1 1 -github.com/muety/wakapi/models/summary.go:283.50,287.2 1 1 -github.com/muety/wakapi/models/summary.go:289.33,291.2 1 1 -github.com/muety/wakapi/models/summary.go:293.43,295.2 1 1 -github.com/muety/wakapi/models/summary.go:297.38,299.2 1 1 +github.com/muety/wakapi/models/alias.go:12.32,14.2 1 0 +github.com/muety/wakapi/models/alias.go:16.37,17.35 1 0 +github.com/muety/wakapi/models/alias.go:22.2,22.14 1 0 +github.com/muety/wakapi/models/alias.go:17.35,18.18 1 0 +github.com/muety/wakapi/models/alias.go:18.18,20.4 1 0 +github.com/muety/wakapi/models/project_label.go:11.39,13.2 1 0 github.com/muety/wakapi/models/filters.go:17.56,18.16 1 0 github.com/muety/wakapi/models/filters.go:32.2,32.19 1 0 github.com/muety/wakapi/models/filters.go:19.22,20.32 1 0 @@ -135,303 +77,108 @@ github.com/muety/wakapi/models/filters.go:42.8,42.27 1 1 github.com/muety/wakapi/models/filters.go:42.27,44.3 1 0 github.com/muety/wakapi/models/filters.go:44.8,44.28 1 1 github.com/muety/wakapi/models/filters.go:44.28,46.3 1 0 -github.com/muety/wakapi/models/filters.go:46.8,46.28 1 1 -github.com/muety/wakapi/models/filters.go:46.28,48.3 1 0 +github.com/muety/wakapi/models/filters.go:46.8,46.26 1 1 +github.com/muety/wakapi/models/filters.go:46.26,48.3 1 0 +github.com/muety/wakapi/models/interval.go:39.47,40.23 1 0 +github.com/muety/wakapi/models/interval.go:45.2,45.14 1 0 +github.com/muety/wakapi/models/interval.go:40.23,41.13 1 0 +github.com/muety/wakapi/models/interval.go:41.13,43.4 1 0 +github.com/muety/wakapi/models/mail.go:19.44,23.2 3 0 +github.com/muety/wakapi/models/mail.go:25.44,29.2 3 0 +github.com/muety/wakapi/models/mail.go:31.32,44.2 1 0 +github.com/muety/wakapi/models/mail.go:46.41,48.2 1 0 +github.com/muety/wakapi/models/summary.go:74.29,76.2 1 1 +github.com/muety/wakapi/models/summary.go:78.35,80.2 1 0 +github.com/muety/wakapi/models/summary.go:82.37,90.2 7 1 +github.com/muety/wakapi/models/summary.go:92.35,94.2 1 1 +github.com/muety/wakapi/models/summary.go:96.57,105.2 1 1 +github.com/muety/wakapi/models/summary.go:107.64,109.2 1 0 +github.com/muety/wakapi/models/summary.go:122.33,127.26 4 1 +github.com/muety/wakapi/models/summary.go:134.2,134.37 1 1 +github.com/muety/wakapi/models/summary.go:139.2,140.16 2 1 +github.com/muety/wakapi/models/summary.go:143.2,143.33 1 1 +github.com/muety/wakapi/models/summary.go:127.26,128.30 1 1 +github.com/muety/wakapi/models/summary.go:128.30,130.4 1 1 +github.com/muety/wakapi/models/summary.go:134.37,136.3 1 0 +github.com/muety/wakapi/models/summary.go:140.16,142.3 1 0 +github.com/muety/wakapi/models/summary.go:143.33,145.3 1 1 +github.com/muety/wakapi/models/summary.go:149.56,155.28 5 1 +github.com/muety/wakapi/models/summary.go:159.2,160.42 2 1 +github.com/muety/wakapi/models/summary.go:167.2,168.15 2 1 +github.com/muety/wakapi/models/summary.go:155.28,157.3 1 1 +github.com/muety/wakapi/models/summary.go:160.42,161.22 1 0 +github.com/muety/wakapi/models/summary.go:161.22,163.9 2 0 +github.com/muety/wakapi/models/summary.go:168.15,169.28 1 1 +github.com/muety/wakapi/models/summary.go:169.28,171.4 1 0 +github.com/muety/wakapi/models/summary.go:171.9,177.4 1 1 +github.com/muety/wakapi/models/summary.go:181.45,186.16 4 0 +github.com/muety/wakapi/models/summary.go:189.2,189.39 1 0 +github.com/muety/wakapi/models/summary.go:193.2,193.30 1 0 +github.com/muety/wakapi/models/summary.go:186.16,188.3 1 0 +github.com/muety/wakapi/models/summary.go:189.39,191.3 1 0 +github.com/muety/wakapi/models/summary.go:196.73,198.55 2 1 +github.com/muety/wakapi/models/summary.go:203.2,203.16 1 1 +github.com/muety/wakapi/models/summary.go:198.55,199.31 1 1 +github.com/muety/wakapi/models/summary.go:199.31,201.4 1 1 +github.com/muety/wakapi/models/summary.go:206.88,208.55 2 1 +github.com/muety/wakapi/models/summary.go:216.2,216.16 1 1 +github.com/muety/wakapi/models/summary.go:208.55,209.31 1 1 +github.com/muety/wakapi/models/summary.go:209.31,210.23 1 1 +github.com/muety/wakapi/models/summary.go:213.4,213.46 1 1 +github.com/muety/wakapi/models/summary.go:210.23,211.13 1 1 +github.com/muety/wakapi/models/summary.go:219.70,221.8 2 1 +github.com/muety/wakapi/models/summary.go:224.2,224.10 1 1 +github.com/muety/wakapi/models/summary.go:221.8,223.3 1 1 +github.com/muety/wakapi/models/summary.go:227.71,228.63 1 1 +github.com/muety/wakapi/models/summary.go:268.2,275.10 7 1 +github.com/muety/wakapi/models/summary.go:228.63,231.45 2 1 +github.com/muety/wakapi/models/summary.go:240.3,240.31 1 1 +github.com/muety/wakapi/models/summary.go:247.3,247.31 1 1 +github.com/muety/wakapi/models/summary.go:264.3,264.16 1 1 +github.com/muety/wakapi/models/summary.go:231.45,232.32 1 1 +github.com/muety/wakapi/models/summary.go:237.4,237.14 1 1 +github.com/muety/wakapi/models/summary.go:232.32,233.24 1 1 +github.com/muety/wakapi/models/summary.go:233.24,235.6 1 1 +github.com/muety/wakapi/models/summary.go:240.31,242.60 1 1 +github.com/muety/wakapi/models/summary.go:242.60,244.5 1 1 +github.com/muety/wakapi/models/summary.go:247.31,249.60 1 1 +github.com/muety/wakapi/models/summary.go:249.60,250.55 1 1 +github.com/muety/wakapi/models/summary.go:250.55,252.6 1 1 +github.com/muety/wakapi/models/summary.go:252.11,260.6 1 1 +github.com/muety/wakapi/models/summary.go:278.57,279.30 1 1 +github.com/muety/wakapi/models/summary.go:284.2,284.43 1 0 +github.com/muety/wakapi/models/summary.go:279.30,280.28 1 1 +github.com/muety/wakapi/models/summary.go:280.28,282.4 1 1 +github.com/muety/wakapi/models/summary.go:287.50,291.2 1 1 +github.com/muety/wakapi/models/summary.go:293.33,295.2 1 1 +github.com/muety/wakapi/models/summary.go:297.43,299.2 1 1 +github.com/muety/wakapi/models/summary.go:301.38,303.2 1 1 +github.com/muety/wakapi/models/heartbeats.go:7.31,9.2 1 0 +github.com/muety/wakapi/models/heartbeats.go:11.41,13.2 1 0 +github.com/muety/wakapi/models/heartbeats.go:15.36,17.2 1 0 +github.com/muety/wakapi/models/heartbeats.go:19.43,22.2 2 0 +github.com/muety/wakapi/models/heartbeats.go:24.41,26.18 1 0 +github.com/muety/wakapi/models/heartbeats.go:29.2,29.16 1 0 +github.com/muety/wakapi/models/heartbeats.go:26.18,28.3 1 0 +github.com/muety/wakapi/models/heartbeats.go:32.40,34.18 1 0 +github.com/muety/wakapi/models/heartbeats.go:37.2,37.24 1 0 +github.com/muety/wakapi/models/heartbeats.go:34.18,36.3 1 0 github.com/muety/wakapi/models/models.go:3.14,5.2 0 1 -github.com/muety/wakapi/models/alias.go:12.32,14.2 1 0 -github.com/muety/wakapi/models/alias.go:16.37,17.35 1 0 -github.com/muety/wakapi/models/alias.go:22.2,22.14 1 0 -github.com/muety/wakapi/models/alias.go:17.35,18.18 1 0 -github.com/muety/wakapi/models/alias.go:18.18,20.4 1 0 -github.com/muety/wakapi/models/heartbeat.go:32.34,34.2 1 1 -github.com/muety/wakapi/models/heartbeat.go:36.65,38.46 2 1 -github.com/muety/wakapi/models/heartbeat.go:38.46,39.108 1 1 -github.com/muety/wakapi/models/heartbeat.go:39.108,42.4 2 1 -github.com/muety/wakapi/models/heartbeat.go:46.50,47.11 1 1 -github.com/muety/wakapi/models/heartbeat.go:60.2,60.15 1 1 -github.com/muety/wakapi/models/heartbeat.go:64.2,64.12 1 1 -github.com/muety/wakapi/models/heartbeat.go:48.22,49.18 1 1 -github.com/muety/wakapi/models/heartbeat.go:50.21,51.17 1 1 -github.com/muety/wakapi/models/heartbeat.go:52.23,53.19 1 1 -github.com/muety/wakapi/models/heartbeat.go:54.17,55.26 1 1 -github.com/muety/wakapi/models/heartbeat.go:56.22,57.18 1 1 -github.com/muety/wakapi/models/heartbeat.go:60.15,62.3 1 1 -github.com/muety/wakapi/models/heartbeat.go:67.37,83.2 1 0 -github.com/muety/wakapi/models/heartbeat.go:91.41,93.16 2 0 -github.com/muety/wakapi/models/heartbeat.go:96.2,97.10 2 0 -github.com/muety/wakapi/models/heartbeat.go:93.16,95.3 1 0 -github.com/muety/wakapi/models/mail_address.go:15.13,18.2 2 1 -github.com/muety/wakapi/models/mail_address.go:24.38,26.2 1 0 -github.com/muety/wakapi/models/mail_address.go:28.35,30.21 2 1 -github.com/muety/wakapi/models/mail_address.go:36.2,36.11 1 1 -github.com/muety/wakapi/models/mail_address.go:30.21,31.21 1 1 -github.com/muety/wakapi/models/mail_address.go:34.3,34.18 1 1 -github.com/muety/wakapi/models/mail_address.go:31.21,33.4 1 1 -github.com/muety/wakapi/models/mail_address.go:39.35,41.2 1 1 -github.com/muety/wakapi/models/mail_address.go:43.43,45.22 2 0 -github.com/muety/wakapi/models/mail_address.go:48.2,48.12 1 0 -github.com/muety/wakapi/models/mail_address.go:45.22,47.3 1 0 -github.com/muety/wakapi/models/mail_address.go:51.46,53.22 2 1 -github.com/muety/wakapi/models/mail_address.go:56.2,56.12 1 1 -github.com/muety/wakapi/models/mail_address.go:53.22,55.3 1 1 -github.com/muety/wakapi/models/mail_address.go:59.40,60.22 1 1 -github.com/muety/wakapi/models/mail_address.go:65.2,65.13 1 1 -github.com/muety/wakapi/models/mail_address.go:60.22,61.17 1 1 -github.com/muety/wakapi/models/mail_address.go:61.17,63.4 1 1 -github.com/muety/wakapi/utils/set.go:3.51,5.26 2 0 -github.com/muety/wakapi/utils/set.go:8.2,8.12 1 0 -github.com/muety/wakapi/utils/set.go:5.26,7.3 1 0 -github.com/muety/wakapi/utils/set.go:11.49,13.21 2 0 -github.com/muety/wakapi/utils/set.go:16.2,16.14 1 0 -github.com/muety/wakapi/utils/set.go:13.21,15.3 1 0 -github.com/muety/wakapi/utils/template.go:8.41,10.16 2 0 -github.com/muety/wakapi/utils/template.go:13.2,13.23 1 0 -github.com/muety/wakapi/utils/template.go:10.16,12.3 1 0 -github.com/muety/wakapi/utils/template.go:16.37,17.30 1 0 -github.com/muety/wakapi/utils/template.go:20.2,20.10 1 0 -github.com/muety/wakapi/utils/template.go:17.30,19.3 1 0 -github.com/muety/wakapi/utils/auth.go:16.79,18.54 2 0 -github.com/muety/wakapi/utils/auth.go:22.2,24.16 3 0 -github.com/muety/wakapi/utils/auth.go:28.2,30.45 3 0 -github.com/muety/wakapi/utils/auth.go:33.2,34.32 2 0 -github.com/muety/wakapi/utils/auth.go:18.54,20.3 1 0 -github.com/muety/wakapi/utils/auth.go:24.16,26.3 1 0 -github.com/muety/wakapi/utils/auth.go:30.45,32.3 1 0 -github.com/muety/wakapi/utils/auth.go:37.65,39.85 2 0 -github.com/muety/wakapi/utils/auth.go:43.2,44.30 2 0 -github.com/muety/wakapi/utils/auth.go:39.85,41.3 1 0 -github.com/muety/wakapi/utils/auth.go:47.94,49.16 2 0 -github.com/muety/wakapi/utils/auth.go:53.2,53.107 1 0 -github.com/muety/wakapi/utils/auth.go:57.2,57.22 1 0 -github.com/muety/wakapi/utils/auth.go:49.16,51.3 1 0 -github.com/muety/wakapi/utils/auth.go:53.107,55.3 1 0 -github.com/muety/wakapi/utils/auth.go:60.56,64.2 3 0 -github.com/muety/wakapi/utils/auth.go:66.55,69.16 3 0 -github.com/muety/wakapi/utils/auth.go:72.2,72.16 1 0 -github.com/muety/wakapi/utils/auth.go:69.16,71.3 1 0 -github.com/muety/wakapi/utils/date.go:8.43,10.2 1 1 -github.com/muety/wakapi/utils/date.go:12.48,14.2 1 0 -github.com/muety/wakapi/utils/date.go:16.41,18.21 2 1 -github.com/muety/wakapi/utils/date.go:21.2,21.23 1 1 -github.com/muety/wakapi/utils/date.go:18.21,20.3 1 0 -github.com/muety/wakapi/utils/date.go:24.46,26.2 1 0 -github.com/muety/wakapi/utils/date.go:28.51,30.2 1 0 -github.com/muety/wakapi/utils/date.go:32.44,35.2 2 1 -github.com/muety/wakapi/utils/date.go:37.52,39.2 1 0 -github.com/muety/wakapi/utils/date.go:41.45,43.2 1 0 -github.com/muety/wakapi/utils/date.go:45.51,47.2 1 0 -github.com/muety/wakapi/utils/date.go:49.44,51.2 1 0 -github.com/muety/wakapi/utils/date.go:54.42,56.2 1 1 -github.com/muety/wakapi/utils/date.go:59.41,61.21 2 1 -github.com/muety/wakapi/utils/date.go:64.2,64.36 1 1 -github.com/muety/wakapi/utils/date.go:61.21,63.3 1 1 -github.com/muety/wakapi/utils/date.go:68.63,70.2 1 0 -github.com/muety/wakapi/utils/date.go:73.62,79.2 5 0 -github.com/muety/wakapi/utils/date.go:82.67,85.33 2 1 -github.com/muety/wakapi/utils/date.go:94.2,94.18 1 1 -github.com/muety/wakapi/utils/date.go:85.33,87.19 2 1 -github.com/muety/wakapi/utils/date.go:90.3,91.10 2 1 -github.com/muety/wakapi/utils/date.go:87.19,89.4 1 1 -github.com/muety/wakapi/utils/date.go:97.50,103.2 5 0 -github.com/muety/wakapi/utils/date.go:106.79,109.36 3 1 -github.com/muety/wakapi/utils/date.go:113.2,113.21 1 1 -github.com/muety/wakapi/utils/date.go:117.2,117.21 1 1 -github.com/muety/wakapi/utils/date.go:121.2,121.13 1 1 -github.com/muety/wakapi/utils/date.go:109.36,112.3 2 0 -github.com/muety/wakapi/utils/date.go:113.21,116.3 2 1 -github.com/muety/wakapi/utils/date.go:117.21,120.3 2 1 -github.com/muety/wakapi/utils/common.go:18.73,19.58 1 0 -github.com/muety/wakapi/utils/common.go:22.2,22.87 1 0 -github.com/muety/wakapi/utils/common.go:25.2,25.64 1 0 -github.com/muety/wakapi/utils/common.go:19.58,21.3 1 0 -github.com/muety/wakapi/utils/common.go:22.87,24.3 1 0 -github.com/muety/wakapi/utils/common.go:28.40,30.2 1 0 -github.com/muety/wakapi/utils/common.go:32.44,34.2 1 0 -github.com/muety/wakapi/utils/common.go:36.49,38.2 1 0 -github.com/muety/wakapi/utils/common.go:40.45,42.2 1 0 -github.com/muety/wakapi/utils/common.go:44.24,46.2 1 0 -github.com/muety/wakapi/utils/common.go:48.56,51.45 3 1 -github.com/muety/wakapi/utils/common.go:54.2,54.40 1 1 -github.com/muety/wakapi/utils/common.go:51.45,53.3 1 1 -github.com/muety/wakapi/utils/filesystem.go:14.68,16.16 2 0 -github.com/muety/wakapi/utils/filesystem.go:20.2,21.15 2 0 -github.com/muety/wakapi/utils/filesystem.go:33.2,33.15 1 0 -github.com/muety/wakapi/utils/filesystem.go:16.16,18.3 1 0 -github.com/muety/wakapi/utils/filesystem.go:21.15,23.47 2 0 -github.com/muety/wakapi/utils/filesystem.go:23.47,25.23 2 0 -github.com/muety/wakapi/utils/filesystem.go:29.4,29.19 1 0 -github.com/muety/wakapi/utils/filesystem.go:25.23,27.5 1 0 -github.com/muety/wakapi/utils/http.go:9.90,12.58 3 0 -github.com/muety/wakapi/utils/http.go:12.58,14.3 1 0 -github.com/muety/wakapi/utils/strings.go:8.34,10.2 1 0 -github.com/muety/wakapi/utils/strings.go:12.77,13.29 1 0 -github.com/muety/wakapi/utils/strings.go:18.2,18.19 1 0 -github.com/muety/wakapi/utils/strings.go:13.29,14.18 1 0 -github.com/muety/wakapi/utils/strings.go:14.18,16.4 1 0 -github.com/muety/wakapi/utils/summary.go:10.66,11.40 1 0 -github.com/muety/wakapi/utils/summary.go:16.2,16.48 1 0 -github.com/muety/wakapi/utils/summary.go:11.40,12.27 1 0 -github.com/muety/wakapi/utils/summary.go:12.27,14.4 1 0 -github.com/muety/wakapi/utils/summary.go:19.88,22.2 2 0 -github.com/muety/wakapi/utils/summary.go:24.95,26.16 2 0 -github.com/muety/wakapi/utils/summary.go:29.2,29.38 1 0 -github.com/muety/wakapi/utils/summary.go:26.16,28.3 1 0 -github.com/muety/wakapi/utils/summary.go:32.105,36.18 3 0 -github.com/muety/wakapi/utils/summary.go:71.2,71.22 1 0 -github.com/muety/wakapi/utils/summary.go:37.28,38.26 1 0 -github.com/muety/wakapi/utils/summary.go:39.32,41.24 2 0 -github.com/muety/wakapi/utils/summary.go:42.31,43.29 1 0 -github.com/muety/wakapi/utils/summary.go:44.31,46.27 2 0 -github.com/muety/wakapi/utils/summary.go:47.32,48.30 1 0 -github.com/muety/wakapi/utils/summary.go:49.32,51.28 2 0 -github.com/muety/wakapi/utils/summary.go:52.31,53.29 1 0 -github.com/muety/wakapi/utils/summary.go:54.32,55.31 1 0 -github.com/muety/wakapi/utils/summary.go:56.41,58.42 2 0 -github.com/muety/wakapi/utils/summary.go:59.33,60.32 1 0 -github.com/muety/wakapi/utils/summary.go:61.33,62.32 1 0 -github.com/muety/wakapi/utils/summary.go:63.35,64.32 1 0 -github.com/muety/wakapi/utils/summary.go:65.26,66.21 1 0 -github.com/muety/wakapi/utils/summary.go:67.10,68.39 1 0 -github.com/muety/wakapi/utils/summary.go:74.73,81.56 5 0 -github.com/muety/wakapi/utils/summary.go:97.2,104.8 2 0 -github.com/muety/wakapi/utils/summary.go:81.56,83.3 1 0 -github.com/muety/wakapi/utils/summary.go:83.8,83.54 1 0 -github.com/muety/wakapi/utils/summary.go:83.54,85.3 1 0 -github.com/muety/wakapi/utils/summary.go:85.8,87.17 2 0 -github.com/muety/wakapi/utils/summary.go:91.3,92.17 2 0 -github.com/muety/wakapi/utils/summary.go:87.17,89.4 1 0 -github.com/muety/wakapi/utils/summary.go:92.17,94.4 1 0 -github.com/muety/wakapi/utils/summary.go:107.48,111.51 2 0 -github.com/muety/wakapi/utils/summary.go:114.2,114.12 1 0 -github.com/muety/wakapi/utils/summary.go:111.51,113.3 1 0 -github.com/muety/wakapi/utils/collection.go:3.59,5.22 2 0 -github.com/muety/wakapi/utils/collection.go:8.2,8.15 1 0 -github.com/muety/wakapi/utils/collection.go:5.22,7.3 1 0 -github.com/muety/wakapi/utils/color.go:8.90,10.32 2 0 -github.com/muety/wakapi/utils/color.go:15.2,15.15 1 0 -github.com/muety/wakapi/utils/color.go:10.32,11.50 1 0 -github.com/muety/wakapi/utils/color.go:11.50,13.4 1 0 -github.com/muety/wakapi/middlewares/logging.go:20.102,21.43 1 0 -github.com/muety/wakapi/middlewares/logging.go:21.43,27.3 1 0 -github.com/muety/wakapi/middlewares/logging.go:30.80,39.44 7 0 -github.com/muety/wakapi/middlewares/logging.go:45.2,54.3 1 0 -github.com/muety/wakapi/middlewares/logging.go:39.44,40.38 1 0 -github.com/muety/wakapi/middlewares/logging.go:40.38,42.4 1 0 -github.com/muety/wakapi/middlewares/logging.go:57.41,59.14 2 0 -github.com/muety/wakapi/middlewares/logging.go:62.2,62.14 1 0 -github.com/muety/wakapi/middlewares/logging.go:65.2,65.11 1 0 -github.com/muety/wakapi/middlewares/logging.go:59.14,61.3 1 0 -github.com/muety/wakapi/middlewares/logging.go:62.14,64.3 1 0 -github.com/muety/wakapi/middlewares/logging.go:68.41,69.42 1 0 -github.com/muety/wakapi/middlewares/logging.go:72.2,72.12 1 0 -github.com/muety/wakapi/middlewares/logging.go:69.42,71.3 1 0 -github.com/muety/wakapi/middlewares/logging.go:103.52,105.2 1 0 -github.com/muety/wakapi/middlewares/logging.go:117.45,118.20 1 0 -github.com/muety/wakapi/middlewares/logging.go:118.20,122.3 3 0 -github.com/muety/wakapi/middlewares/logging.go:124.54,127.18 3 0 -github.com/muety/wakapi/middlewares/logging.go:134.2,135.15 2 0 -github.com/muety/wakapi/middlewares/logging.go:127.18,130.17 2 0 -github.com/muety/wakapi/middlewares/logging.go:130.17,132.4 1 0 -github.com/muety/wakapi/middlewares/logging.go:137.42,138.20 1 0 -github.com/muety/wakapi/middlewares/logging.go:138.20,140.3 1 0 -github.com/muety/wakapi/middlewares/logging.go:142.36,144.2 1 0 -github.com/muety/wakapi/middlewares/logging.go:145.42,147.2 1 0 -github.com/muety/wakapi/middlewares/logging.go:148.40,150.2 1 0 -github.com/muety/wakapi/middlewares/logging.go:151.52,153.2 1 0 -github.com/muety/wakapi/middlewares/principal.go:15.62,17.2 1 0 -github.com/muety/wakapi/middlewares/principal.go:19.58,21.2 1 0 -github.com/muety/wakapi/middlewares/principal.go:42.71,43.43 1 0 -github.com/muety/wakapi/middlewares/principal.go:43.43,45.3 1 0 -github.com/muety/wakapi/middlewares/principal.go:48.81,51.2 2 0 -github.com/muety/wakapi/middlewares/principal.go:53.55,54.52 1 0 -github.com/muety/wakapi/middlewares/principal.go:54.52,56.3 1 0 -github.com/muety/wakapi/middlewares/principal.go:59.49,60.52 1 0 -github.com/muety/wakapi/middlewares/principal.go:63.2,63.12 1 0 -github.com/muety/wakapi/middlewares/principal.go:60.52,62.3 1 0 -github.com/muety/wakapi/middlewares/security.go:19.62,20.43 1 0 -github.com/muety/wakapi/middlewares/security.go:20.43,22.3 1 0 -github.com/muety/wakapi/middlewares/security.go:25.80,26.36 1 0 -github.com/muety/wakapi/middlewares/security.go:31.2,31.27 1 0 -github.com/muety/wakapi/middlewares/security.go:26.36,27.30 1 0 -github.com/muety/wakapi/middlewares/security.go:27.30,29.4 1 0 -github.com/muety/wakapi/middlewares/sentry.go:15.60,16.43 1 0 -github.com/muety/wakapi/middlewares/sentry.go:16.43,20.3 1 0 -github.com/muety/wakapi/middlewares/sentry.go:23.78,26.54 3 0 -github.com/muety/wakapi/middlewares/sentry.go:26.54,27.43 1 0 -github.com/muety/wakapi/middlewares/sentry.go:27.43,29.4 1 0 -github.com/muety/wakapi/middlewares/authenticate.go:19.91,25.2 1 1 -github.com/muety/wakapi/middlewares/authenticate.go:27.90,30.2 2 0 -github.com/muety/wakapi/middlewares/authenticate.go:32.90,35.2 2 0 -github.com/muety/wakapi/middlewares/authenticate.go:37.71,38.71 1 0 -github.com/muety/wakapi/middlewares/authenticate.go:38.71,40.3 1 0 -github.com/muety/wakapi/middlewares/authenticate.go:43.107,47.16 3 0 -github.com/muety/wakapi/middlewares/authenticate.go:51.2,51.31 1 0 -github.com/muety/wakapi/middlewares/authenticate.go:67.2,68.12 2 0 -github.com/muety/wakapi/middlewares/authenticate.go:47.16,49.3 1 0 -github.com/muety/wakapi/middlewares/authenticate.go:51.31,52.31 1 0 -github.com/muety/wakapi/middlewares/authenticate.go:57.3,57.29 1 0 -github.com/muety/wakapi/middlewares/authenticate.go:64.3,64.9 1 0 -github.com/muety/wakapi/middlewares/authenticate.go:52.31,55.4 2 0 -github.com/muety/wakapi/middlewares/authenticate.go:57.29,60.4 2 0 -github.com/muety/wakapi/middlewares/authenticate.go:60.9,63.4 2 0 -github.com/muety/wakapi/middlewares/authenticate.go:71.70,72.39 1 0 -github.com/muety/wakapi/middlewares/authenticate.go:77.2,77.14 1 0 -github.com/muety/wakapi/middlewares/authenticate.go:72.39,73.60 1 0 -github.com/muety/wakapi/middlewares/authenticate.go:73.60,75.4 1 0 -github.com/muety/wakapi/middlewares/authenticate.go:80.92,82.16 2 1 -github.com/muety/wakapi/middlewares/authenticate.go:86.2,89.16 4 1 -github.com/muety/wakapi/middlewares/authenticate.go:92.2,92.18 1 1 -github.com/muety/wakapi/middlewares/authenticate.go:82.16,84.3 1 1 -github.com/muety/wakapi/middlewares/authenticate.go:89.16,91.3 1 0 -github.com/muety/wakapi/middlewares/authenticate.go:95.92,97.16 2 0 -github.com/muety/wakapi/middlewares/authenticate.go:101.2,102.16 2 0 -github.com/muety/wakapi/middlewares/authenticate.go:109.2,109.18 1 0 -github.com/muety/wakapi/middlewares/authenticate.go:97.16,99.3 1 0 -github.com/muety/wakapi/middlewares/authenticate.go:102.16,104.3 1 0 -github.com/muety/wakapi/middlewares/filetype.go:13.83,14.43 1 0 -github.com/muety/wakapi/middlewares/filetype.go:14.43,19.3 1 0 -github.com/muety/wakapi/middlewares/filetype.go:22.84,24.34 2 0 -github.com/muety/wakapi/middlewares/filetype.go:31.2,31.27 1 0 -github.com/muety/wakapi/middlewares/filetype.go:24.34,25.50 1 0 -github.com/muety/wakapi/middlewares/filetype.go:25.50,29.4 3 0 -github.com/muety/wakapi/config/eventbus.go:18.13,20.2 1 1 -github.com/muety/wakapi/config/eventbus.go:22.26,24.2 1 0 -github.com/muety/wakapi/config/fs.go:9.56,10.19 1 0 -github.com/muety/wakapi/config/fs.go:13.2,13.19 1 0 -github.com/muety/wakapi/config/fs.go:10.19,12.3 1 0 -github.com/muety/wakapi/config/sentry.go:22.35,24.2 1 0 -github.com/muety/wakapi/config/sentry.go:26.62,29.2 2 0 -github.com/muety/wakapi/config/sentry.go:39.33,46.2 2 0 -github.com/muety/wakapi/config/sentry.go:48.79,51.2 2 0 -github.com/muety/wakapi/config/sentry.go:53.72,57.2 3 0 -github.com/muety/wakapi/config/sentry.go:59.71,63.2 3 0 -github.com/muety/wakapi/config/sentry.go:65.71,69.2 3 0 -github.com/muety/wakapi/config/sentry.go:71.72,75.2 3 0 -github.com/muety/wakapi/config/sentry.go:77.72,81.2 3 0 -github.com/muety/wakapi/config/sentry.go:83.67,88.18 4 0 -github.com/muety/wakapi/config/sentry.go:100.2,100.28 1 0 -github.com/muety/wakapi/config/sentry.go:88.18,89.65 1 0 -github.com/muety/wakapi/config/sentry.go:89.65,92.42 3 0 -github.com/muety/wakapi/config/sentry.go:95.4,96.10 2 0 -github.com/muety/wakapi/config/sentry.go:92.42,94.5 1 0 -github.com/muety/wakapi/config/sentry.go:110.50,114.91 1 0 -github.com/muety/wakapi/config/sentry.go:114.91,115.29 1 0 -github.com/muety/wakapi/config/sentry.go:119.4,122.38 3 0 -github.com/muety/wakapi/config/sentry.go:127.4,127.39 1 0 -github.com/muety/wakapi/config/sentry.go:130.4,130.69 1 0 -github.com/muety/wakapi/config/sentry.go:115.29,117.5 1 0 -github.com/muety/wakapi/config/sentry.go:122.38,123.38 1 0 -github.com/muety/wakapi/config/sentry.go:123.38,125.6 1 0 -github.com/muety/wakapi/config/sentry.go:127.39,129.5 1 0 -github.com/muety/wakapi/config/sentry.go:132.79,133.27 1 0 -github.com/muety/wakapi/config/sentry.go:140.4,140.16 1 0 -github.com/muety/wakapi/config/sentry.go:133.27,134.84 1 0 -github.com/muety/wakapi/config/sentry.go:134.84,135.42 1 0 -github.com/muety/wakapi/config/sentry.go:135.42,137.7 1 0 -github.com/muety/wakapi/config/sentry.go:142.17,144.3 1 0 -github.com/muety/wakapi/config/sentry.go:147.49,151.51 2 0 -github.com/muety/wakapi/config/sentry.go:154.2,154.12 1 0 -github.com/muety/wakapi/config/sentry.go:151.51,153.3 1 0 +github.com/muety/wakapi/models/shared.go:35.52,37.2 1 0 +github.com/muety/wakapi/models/shared.go:39.52,42.16 3 0 +github.com/muety/wakapi/models/shared.go:45.2,47.12 3 0 +github.com/muety/wakapi/models/shared.go:42.16,44.3 1 0 +github.com/muety/wakapi/models/shared.go:50.52,56.22 2 0 +github.com/muety/wakapi/models/shared.go:71.2,74.12 3 0 +github.com/muety/wakapi/models/shared.go:57.14,61.17 2 0 +github.com/muety/wakapi/models/shared.go:64.17,66.8 2 0 +github.com/muety/wakapi/models/shared.go:67.10,68.64 1 0 +github.com/muety/wakapi/models/shared.go:61.17,63.4 1 0 +github.com/muety/wakapi/models/shared.go:77.51,80.2 2 0 +github.com/muety/wakapi/models/shared.go:82.45,84.2 1 0 +github.com/muety/wakapi/models/shared.go:86.37,88.2 1 0 +github.com/muety/wakapi/models/shared.go:90.35,92.2 1 0 +github.com/muety/wakapi/models/shared.go:94.34,96.2 1 0 github.com/muety/wakapi/config/utils.go:5.78,7.22 2 0 github.com/muety/wakapi/config/utils.go:13.2,13.11 1 0 github.com/muety/wakapi/config/utils.go:7.22,8.18 1 0 @@ -526,215 +273,127 @@ github.com/muety/wakapi/config/db.go:68.56,70.16 2 1 github.com/muety/wakapi/config/db.go:74.2,81.3 1 1 github.com/muety/wakapi/config/db.go:70.16,72.3 1 0 github.com/muety/wakapi/config/db.go:84.54,86.2 1 1 -github.com/muety/wakapi/services/project_label.go:18.111,24.2 1 0 -github.com/muety/wakapi/services/project_label.go:26.80,28.2 1 0 -github.com/muety/wakapi/services/project_label.go:30.90,31.51 1 0 -github.com/muety/wakapi/services/project_label.go:35.2,36.16 2 0 -github.com/muety/wakapi/services/project_label.go:39.2,40.20 2 0 -github.com/muety/wakapi/services/project_label.go:31.51,33.3 1 0 -github.com/muety/wakapi/services/project_label.go:36.16,38.3 1 0 -github.com/muety/wakapi/services/project_label.go:43.108,46.16 3 0 -github.com/muety/wakapi/services/project_label.go:50.2,50.31 1 0 -github.com/muety/wakapi/services/project_label.go:58.2,58.20 1 0 -github.com/muety/wakapi/services/project_label.go:46.16,48.3 1 0 -github.com/muety/wakapi/services/project_label.go:50.31,51.41 1 0 -github.com/muety/wakapi/services/project_label.go:51.41,53.4 1 0 -github.com/muety/wakapi/services/project_label.go:53.9,55.4 1 0 -github.com/muety/wakapi/services/project_label.go:61.98,63.16 2 0 -github.com/muety/wakapi/services/project_label.go:67.2,68.20 2 0 -github.com/muety/wakapi/services/project_label.go:63.16,65.3 1 0 -github.com/muety/wakapi/services/project_label.go:71.74,72.24 1 0 -github.com/muety/wakapi/services/project_label.go:75.2,77.12 3 0 -github.com/muety/wakapi/services/project_label.go:72.24,74.3 1 0 -github.com/muety/wakapi/services/summary.go:29.191,38.2 1 1 -github.com/muety/wakapi/services/summary.go:42.136,45.66 2 1 -github.com/muety/wakapi/services/summary.go:50.2,50.44 1 1 -github.com/muety/wakapi/services/summary.go:56.2,56.65 1 1 -github.com/muety/wakapi/services/summary.go:61.2,62.16 2 1 -github.com/muety/wakapi/services/summary.go:67.2,72.30 5 1 -github.com/muety/wakapi/services/summary.go:45.66,47.3 1 0 -github.com/muety/wakapi/services/summary.go:50.44,53.3 2 1 -github.com/muety/wakapi/services/summary.go:56.65,58.3 1 0 -github.com/muety/wakapi/services/summary.go:62.16,64.3 1 0 -github.com/muety/wakapi/services/summary.go:75.101,78.52 2 1 -github.com/muety/wakapi/services/summary.go:83.2,84.16 2 1 -github.com/muety/wakapi/services/summary.go:89.2,90.44 2 1 -github.com/muety/wakapi/services/summary.go:99.2,100.16 2 1 -github.com/muety/wakapi/services/summary.go:105.2,106.30 2 1 -github.com/muety/wakapi/services/summary.go:78.52,80.3 1 0 -github.com/muety/wakapi/services/summary.go:84.16,86.3 1 0 -github.com/muety/wakapi/services/summary.go:90.44,91.78 1 1 -github.com/muety/wakapi/services/summary.go:91.78,93.4 1 1 -github.com/muety/wakapi/services/summary.go:93.9,95.4 1 0 -github.com/muety/wakapi/services/summary.go:100.16,102.3 1 0 -github.com/muety/wakapi/services/summary.go:109.102,112.89 2 1 -github.com/muety/wakapi/services/summary.go:118.2,122.26 4 1 -github.com/muety/wakapi/services/summary.go:127.2,133.34 6 1 -github.com/muety/wakapi/services/summary.go:149.2,149.26 1 1 -github.com/muety/wakapi/services/summary.go:154.2,166.30 3 1 -github.com/muety/wakapi/services/summary.go:112.89,114.3 1 1 -github.com/muety/wakapi/services/summary.go:114.8,116.3 1 0 -github.com/muety/wakapi/services/summary.go:122.26,124.3 1 1 -github.com/muety/wakapi/services/summary.go:133.34,135.20 2 1 -github.com/muety/wakapi/services/summary.go:136.30,137.29 1 1 -github.com/muety/wakapi/services/summary.go:138.31,139.30 1 1 -github.com/muety/wakapi/services/summary.go:140.29,141.28 1 1 -github.com/muety/wakapi/services/summary.go:142.25,143.24 1 1 -github.com/muety/wakapi/services/summary.go:144.30,145.29 1 1 -github.com/muety/wakapi/services/summary.go:149.26,152.3 2 1 -github.com/muety/wakapi/services/summary.go:171.76,173.2 1 0 -github.com/muety/wakapi/services/summary.go:175.62,178.2 2 0 -github.com/muety/wakapi/services/summary.go:180.66,183.2 2 0 -github.com/muety/wakapi/services/summary.go:187.127,190.31 2 1 -github.com/muety/wakapi/services/summary.go:213.2,214.30 2 1 -github.com/muety/wakapi/services/summary.go:222.2,222.40 1 1 -github.com/muety/wakapi/services/summary.go:226.2,226.67 1 1 -github.com/muety/wakapi/services/summary.go:190.31,193.35 2 1 -github.com/muety/wakapi/services/summary.go:197.3,197.13 1 1 -github.com/muety/wakapi/services/summary.go:201.3,206.27 2 1 -github.com/muety/wakapi/services/summary.go:210.3,210.26 1 1 -github.com/muety/wakapi/services/summary.go:193.35,195.4 1 1 -github.com/muety/wakapi/services/summary.go:197.13,198.12 1 1 -github.com/muety/wakapi/services/summary.go:206.27,209.4 2 1 -github.com/muety/wakapi/services/summary.go:214.30,220.3 1 1 -github.com/muety/wakapi/services/summary.go:222.40,224.3 1 1 -github.com/muety/wakapi/services/summary.go:229.87,230.72 1 1 -github.com/muety/wakapi/services/summary.go:238.2,239.16 2 1 -github.com/muety/wakapi/services/summary.go:244.2,245.37 2 1 -github.com/muety/wakapi/services/summary.go:249.2,251.30 3 1 -github.com/muety/wakapi/services/summary.go:262.2,263.29 2 1 -github.com/muety/wakapi/services/summary.go:266.2,267.16 2 1 -github.com/muety/wakapi/services/summary.go:230.72,236.3 1 1 -github.com/muety/wakapi/services/summary.go:239.16,242.3 2 0 -github.com/muety/wakapi/services/summary.go:245.37,247.3 1 1 -github.com/muety/wakapi/services/summary.go:251.30,252.48 1 1 -github.com/muety/wakapi/services/summary.go:252.48,253.41 1 1 -github.com/muety/wakapi/services/summary.go:256.4,257.29 2 1 -github.com/muety/wakapi/services/summary.go:253.41,255.5 1 1 -github.com/muety/wakapi/services/summary.go:263.29,265.3 1 1 -github.com/muety/wakapi/services/summary.go:270.97,271.24 1 1 -github.com/muety/wakapi/services/summary.go:275.2,290.30 5 1 -github.com/muety/wakapi/services/summary.go:319.2,322.26 3 1 -github.com/muety/wakapi/services/summary.go:271.24,273.3 1 0 -github.com/muety/wakapi/services/summary.go:290.30,292.41 2 1 -github.com/muety/wakapi/services/summary.go:297.3,297.38 1 1 -github.com/muety/wakapi/services/summary.go:301.3,301.37 1 1 -github.com/muety/wakapi/services/summary.go:305.3,305.34 1 1 -github.com/muety/wakapi/services/summary.go:309.3,316.25 7 1 -github.com/muety/wakapi/services/summary.go:292.41,294.12 2 1 -github.com/muety/wakapi/services/summary.go:297.38,299.4 1 0 -github.com/muety/wakapi/services/summary.go:301.37,303.4 1 1 -github.com/muety/wakapi/services/summary.go:305.34,307.4 1 1 -github.com/muety/wakapi/services/summary.go:325.127,329.32 2 1 -github.com/muety/wakapi/services/summary.go:333.2,333.27 1 1 -github.com/muety/wakapi/services/summary.go:341.2,343.26 3 1 -github.com/muety/wakapi/services/summary.go:348.2,348.43 1 1 -github.com/muety/wakapi/services/summary.go:352.2,352.17 1 1 -github.com/muety/wakapi/services/summary.go:329.32,331.3 1 1 -github.com/muety/wakapi/services/summary.go:333.27,334.37 1 1 -github.com/muety/wakapi/services/summary.go:334.37,336.4 1 1 -github.com/muety/wakapi/services/summary.go:336.9,338.4 1 1 -github.com/muety/wakapi/services/summary.go:343.26,346.3 2 1 -github.com/muety/wakapi/services/summary.go:348.43,350.3 1 1 -github.com/muety/wakapi/services/summary.go:355.116,356.25 1 1 -github.com/muety/wakapi/services/summary.go:360.2,363.44 2 1 -github.com/muety/wakapi/services/summary.go:368.2,368.40 1 1 -github.com/muety/wakapi/services/summary.go:393.2,393.54 1 1 -github.com/muety/wakapi/services/summary.go:397.2,397.18 1 1 -github.com/muety/wakapi/services/summary.go:356.25,358.3 1 0 -github.com/muety/wakapi/services/summary.go:363.44,365.3 1 1 -github.com/muety/wakapi/services/summary.go:368.40,370.19 2 1 -github.com/muety/wakapi/services/summary.go:377.3,382.34 3 1 -github.com/muety/wakapi/services/summary.go:387.3,387.22 1 1 -github.com/muety/wakapi/services/summary.go:370.19,371.12 1 1 -github.com/muety/wakapi/services/summary.go:382.34,384.4 1 1 -github.com/muety/wakapi/services/summary.go:387.22,389.4 1 1 -github.com/muety/wakapi/services/summary.go:393.54,395.3 1 1 -github.com/muety/wakapi/services/summary.go:400.59,402.2 1 1 -github.com/muety/wakapi/services/summary.go:404.63,405.37 1 0 -github.com/muety/wakapi/services/summary.go:405.37,406.36 1 0 -github.com/muety/wakapi/services/summary.go:406.36,408.4 1 0 -github.com/muety/wakapi/services/user.go:21.73,28.2 1 0 -github.com/muety/wakapi/services/user.go:30.74,31.40 1 0 -github.com/muety/wakapi/services/user.go:35.2,36.16 2 0 -github.com/muety/wakapi/services/user.go:40.2,41.15 2 0 -github.com/muety/wakapi/services/user.go:31.40,33.3 1 0 -github.com/muety/wakapi/services/user.go:36.16,38.3 1 0 -github.com/muety/wakapi/services/user.go:44.72,45.37 1 0 -github.com/muety/wakapi/services/user.go:49.2,50.16 2 0 -github.com/muety/wakapi/services/user.go:54.2,55.15 2 0 -github.com/muety/wakapi/services/user.go:45.37,47.3 1 0 -github.com/muety/wakapi/services/user.go:50.16,52.3 1 0 -github.com/muety/wakapi/services/user.go:58.76,60.2 1 0 -github.com/muety/wakapi/services/user.go:62.86,64.2 1 0 -github.com/muety/wakapi/services/user.go:66.58,68.2 1 0 -github.com/muety/wakapi/services/user.go:70.86,72.2 1 0 -github.com/muety/wakapi/services/user.go:74.61,77.2 2 0 -github.com/muety/wakapi/services/user.go:79.48,81.2 1 0 -github.com/muety/wakapi/services/user.go:83.102,93.93 2 0 -github.com/muety/wakapi/services/user.go:99.2,99.38 1 0 -github.com/muety/wakapi/services/user.go:93.93,95.3 1 0 -github.com/muety/wakapi/services/user.go:95.8,97.3 1 0 -github.com/muety/wakapi/services/user.go:102.73,106.2 3 0 -github.com/muety/wakapi/services/user.go:108.78,112.2 3 0 -github.com/muety/wakapi/services/user.go:114.99,117.2 2 0 -github.com/muety/wakapi/services/user.go:119.106,122.96 3 0 -github.com/muety/wakapi/services/user.go:127.2,127.68 1 0 -github.com/muety/wakapi/services/user.go:122.96,124.3 1 0 -github.com/muety/wakapi/services/user.go:124.8,126.3 1 0 -github.com/muety/wakapi/services/user.go:130.85,132.2 1 0 -github.com/muety/wakapi/services/user.go:134.57,141.2 4 0 -github.com/muety/wakapi/services/user.go:143.38,145.2 1 0 -github.com/muety/wakapi/services/user.go:147.57,152.2 1 0 -github.com/muety/wakapi/services/misc.go:21.126,28.2 1 0 -github.com/muety/wakapi/services/misc.go:40.50,42.48 1 0 -github.com/muety/wakapi/services/misc.go:46.2,48.19 3 0 -github.com/muety/wakapi/services/misc.go:42.48,44.3 1 0 -github.com/muety/wakapi/services/misc.go:51.51,53.16 2 0 -github.com/muety/wakapi/services/misc.go:57.2,60.26 3 0 -github.com/muety/wakapi/services/misc.go:66.2,68.40 2 0 -github.com/muety/wakapi/services/misc.go:73.2,75.33 3 0 -github.com/muety/wakapi/services/misc.go:79.2,84.17 2 0 -github.com/muety/wakapi/services/misc.go:88.2,91.17 1 0 -github.com/muety/wakapi/services/misc.go:95.2,95.12 1 0 -github.com/muety/wakapi/services/misc.go:53.16,55.3 1 0 -github.com/muety/wakapi/services/misc.go:60.26,65.3 1 0 -github.com/muety/wakapi/services/misc.go:68.40,70.3 1 0 -github.com/muety/wakapi/services/misc.go:75.33,78.3 2 0 -github.com/muety/wakapi/services/misc.go:84.17,86.3 1 0 -github.com/muety/wakapi/services/misc.go:91.17,93.3 1 0 -github.com/muety/wakapi/services/misc.go:98.116,99.24 1 0 -github.com/muety/wakapi/services/misc.go:99.24,100.151 1 0 -github.com/muety/wakapi/services/misc.go:100.151,102.4 1 0 -github.com/muety/wakapi/services/misc.go:102.9,107.4 1 0 -github.com/muety/wakapi/services/report.go:30.122,44.33 4 0 -github.com/muety/wakapi/services/report.go:50.2,50.12 1 0 -github.com/muety/wakapi/services/report.go:44.33,45.31 1 0 -github.com/muety/wakapi/services/report.go:45.31,47.4 1 0 -github.com/muety/wakapi/services/report.go:53.38,57.16 3 0 -github.com/muety/wakapi/services/report.go:61.2,62.26 2 0 -github.com/muety/wakapi/services/report.go:57.16,59.3 1 0 -github.com/muety/wakapi/services/report.go:62.26,64.3 1 0 -github.com/muety/wakapi/services/report.go:69.61,74.22 3 0 -github.com/muety/wakapi/services/report.go:80.2,80.61 1 0 -github.com/muety/wakapi/services/report.go:94.2,94.24 1 0 -github.com/muety/wakapi/services/report.go:74.22,77.3 2 0 -github.com/muety/wakapi/services/report.go:80.61,89.47 3 0 -github.com/muety/wakapi/services/report.go:89.47,91.4 1 0 -github.com/muety/wakapi/services/report.go:97.80,98.22 1 0 -github.com/muety/wakapi/services/report.go:102.2,102.29 1 0 -github.com/muety/wakapi/services/report.go:107.2,111.16 4 0 -github.com/muety/wakapi/services/report.go:116.2,123.65 2 0 -github.com/muety/wakapi/services/report.go:128.2,129.12 2 0 -github.com/muety/wakapi/services/report.go:98.22,100.3 1 0 -github.com/muety/wakapi/services/report.go:102.29,105.3 2 0 -github.com/muety/wakapi/services/report.go:111.16,114.3 2 0 -github.com/muety/wakapi/services/report.go:123.65,126.3 2 0 -github.com/muety/wakapi/services/report.go:132.63,133.41 1 0 -github.com/muety/wakapi/services/report.go:140.2,140.12 1 0 -github.com/muety/wakapi/services/report.go:133.41,134.30 1 0 -github.com/muety/wakapi/services/report.go:134.30,135.16 1 0 -github.com/muety/wakapi/services/report.go:135.16,137.5 1 0 +github.com/muety/wakapi/config/eventbus.go:18.13,20.2 1 1 +github.com/muety/wakapi/config/eventbus.go:22.26,24.2 1 0 +github.com/muety/wakapi/config/fs.go:9.56,10.19 1 0 +github.com/muety/wakapi/config/fs.go:13.2,13.19 1 0 +github.com/muety/wakapi/config/fs.go:10.19,12.3 1 0 +github.com/muety/wakapi/config/sentry.go:22.35,24.2 1 0 +github.com/muety/wakapi/config/sentry.go:26.62,29.2 2 0 +github.com/muety/wakapi/config/sentry.go:39.33,46.2 2 0 +github.com/muety/wakapi/config/sentry.go:48.79,51.2 2 0 +github.com/muety/wakapi/config/sentry.go:53.72,57.2 3 0 +github.com/muety/wakapi/config/sentry.go:59.71,63.2 3 0 +github.com/muety/wakapi/config/sentry.go:65.71,69.2 3 0 +github.com/muety/wakapi/config/sentry.go:71.72,75.2 3 0 +github.com/muety/wakapi/config/sentry.go:77.72,81.2 3 0 +github.com/muety/wakapi/config/sentry.go:83.67,88.18 4 0 +github.com/muety/wakapi/config/sentry.go:100.2,100.28 1 0 +github.com/muety/wakapi/config/sentry.go:88.18,89.65 1 0 +github.com/muety/wakapi/config/sentry.go:89.65,92.42 3 0 +github.com/muety/wakapi/config/sentry.go:95.4,96.10 2 0 +github.com/muety/wakapi/config/sentry.go:92.42,94.5 1 0 +github.com/muety/wakapi/config/sentry.go:110.50,114.91 1 0 +github.com/muety/wakapi/config/sentry.go:114.91,115.29 1 0 +github.com/muety/wakapi/config/sentry.go:119.4,122.38 3 0 +github.com/muety/wakapi/config/sentry.go:127.4,127.39 1 0 +github.com/muety/wakapi/config/sentry.go:130.4,130.69 1 0 +github.com/muety/wakapi/config/sentry.go:115.29,117.5 1 0 +github.com/muety/wakapi/config/sentry.go:122.38,123.38 1 0 +github.com/muety/wakapi/config/sentry.go:123.38,125.6 1 0 +github.com/muety/wakapi/config/sentry.go:127.39,129.5 1 0 +github.com/muety/wakapi/config/sentry.go:132.79,133.27 1 0 +github.com/muety/wakapi/config/sentry.go:140.4,140.16 1 0 +github.com/muety/wakapi/config/sentry.go:133.27,134.84 1 0 +github.com/muety/wakapi/config/sentry.go:134.84,135.42 1 0 +github.com/muety/wakapi/config/sentry.go:135.42,137.7 1 0 +github.com/muety/wakapi/config/sentry.go:142.17,144.3 1 0 +github.com/muety/wakapi/config/sentry.go:147.49,151.51 2 0 +github.com/muety/wakapi/config/sentry.go:154.2,154.12 1 0 +github.com/muety/wakapi/config/sentry.go:151.51,153.3 1 0 +github.com/muety/wakapi/middlewares/authenticate.go:19.91,25.2 1 1 +github.com/muety/wakapi/middlewares/authenticate.go:27.90,30.2 2 0 +github.com/muety/wakapi/middlewares/authenticate.go:32.90,35.2 2 0 +github.com/muety/wakapi/middlewares/authenticate.go:37.71,38.71 1 0 +github.com/muety/wakapi/middlewares/authenticate.go:38.71,40.3 1 0 +github.com/muety/wakapi/middlewares/authenticate.go:43.107,47.16 3 0 +github.com/muety/wakapi/middlewares/authenticate.go:51.2,51.31 1 0 +github.com/muety/wakapi/middlewares/authenticate.go:67.2,68.12 2 0 +github.com/muety/wakapi/middlewares/authenticate.go:47.16,49.3 1 0 +github.com/muety/wakapi/middlewares/authenticate.go:51.31,52.31 1 0 +github.com/muety/wakapi/middlewares/authenticate.go:57.3,57.29 1 0 +github.com/muety/wakapi/middlewares/authenticate.go:64.3,64.9 1 0 +github.com/muety/wakapi/middlewares/authenticate.go:52.31,55.4 2 0 +github.com/muety/wakapi/middlewares/authenticate.go:57.29,60.4 2 0 +github.com/muety/wakapi/middlewares/authenticate.go:60.9,63.4 2 0 +github.com/muety/wakapi/middlewares/authenticate.go:71.70,72.39 1 0 +github.com/muety/wakapi/middlewares/authenticate.go:77.2,77.14 1 0 +github.com/muety/wakapi/middlewares/authenticate.go:72.39,73.60 1 0 +github.com/muety/wakapi/middlewares/authenticate.go:73.60,75.4 1 0 +github.com/muety/wakapi/middlewares/authenticate.go:80.92,82.16 2 1 +github.com/muety/wakapi/middlewares/authenticate.go:86.2,89.16 4 1 +github.com/muety/wakapi/middlewares/authenticate.go:92.2,92.18 1 1 +github.com/muety/wakapi/middlewares/authenticate.go:82.16,84.3 1 1 +github.com/muety/wakapi/middlewares/authenticate.go:89.16,91.3 1 0 +github.com/muety/wakapi/middlewares/authenticate.go:95.92,97.16 2 0 +github.com/muety/wakapi/middlewares/authenticate.go:101.2,102.16 2 0 +github.com/muety/wakapi/middlewares/authenticate.go:109.2,109.18 1 0 +github.com/muety/wakapi/middlewares/authenticate.go:97.16,99.3 1 0 +github.com/muety/wakapi/middlewares/authenticate.go:102.16,104.3 1 0 +github.com/muety/wakapi/middlewares/filetype.go:13.83,14.43 1 0 +github.com/muety/wakapi/middlewares/filetype.go:14.43,19.3 1 0 +github.com/muety/wakapi/middlewares/filetype.go:22.84,24.34 2 0 +github.com/muety/wakapi/middlewares/filetype.go:31.2,31.27 1 0 +github.com/muety/wakapi/middlewares/filetype.go:24.34,25.50 1 0 +github.com/muety/wakapi/middlewares/filetype.go:25.50,29.4 3 0 +github.com/muety/wakapi/middlewares/logging.go:20.102,21.43 1 0 +github.com/muety/wakapi/middlewares/logging.go:21.43,27.3 1 0 +github.com/muety/wakapi/middlewares/logging.go:30.80,39.44 7 0 +github.com/muety/wakapi/middlewares/logging.go:45.2,54.3 1 0 +github.com/muety/wakapi/middlewares/logging.go:39.44,40.38 1 0 +github.com/muety/wakapi/middlewares/logging.go:40.38,42.4 1 0 +github.com/muety/wakapi/middlewares/logging.go:57.41,59.14 2 0 +github.com/muety/wakapi/middlewares/logging.go:62.2,62.14 1 0 +github.com/muety/wakapi/middlewares/logging.go:65.2,65.11 1 0 +github.com/muety/wakapi/middlewares/logging.go:59.14,61.3 1 0 +github.com/muety/wakapi/middlewares/logging.go:62.14,64.3 1 0 +github.com/muety/wakapi/middlewares/logging.go:68.41,69.42 1 0 +github.com/muety/wakapi/middlewares/logging.go:72.2,72.12 1 0 +github.com/muety/wakapi/middlewares/logging.go:69.42,71.3 1 0 +github.com/muety/wakapi/middlewares/logging.go:103.52,105.2 1 0 +github.com/muety/wakapi/middlewares/logging.go:117.45,118.20 1 0 +github.com/muety/wakapi/middlewares/logging.go:118.20,122.3 3 0 +github.com/muety/wakapi/middlewares/logging.go:124.54,127.18 3 0 +github.com/muety/wakapi/middlewares/logging.go:134.2,135.15 2 0 +github.com/muety/wakapi/middlewares/logging.go:127.18,130.17 2 0 +github.com/muety/wakapi/middlewares/logging.go:130.17,132.4 1 0 +github.com/muety/wakapi/middlewares/logging.go:137.42,138.20 1 0 +github.com/muety/wakapi/middlewares/logging.go:138.20,140.3 1 0 +github.com/muety/wakapi/middlewares/logging.go:142.36,144.2 1 0 +github.com/muety/wakapi/middlewares/logging.go:145.42,147.2 1 0 +github.com/muety/wakapi/middlewares/logging.go:148.40,150.2 1 0 +github.com/muety/wakapi/middlewares/logging.go:151.52,153.2 1 0 +github.com/muety/wakapi/middlewares/principal.go:15.62,17.2 1 0 +github.com/muety/wakapi/middlewares/principal.go:19.58,21.2 1 0 +github.com/muety/wakapi/middlewares/principal.go:42.71,43.43 1 0 +github.com/muety/wakapi/middlewares/principal.go:43.43,45.3 1 0 +github.com/muety/wakapi/middlewares/principal.go:48.81,51.2 2 0 +github.com/muety/wakapi/middlewares/principal.go:53.55,54.52 1 0 +github.com/muety/wakapi/middlewares/principal.go:54.52,56.3 1 0 +github.com/muety/wakapi/middlewares/principal.go:59.49,60.52 1 0 +github.com/muety/wakapi/middlewares/principal.go:63.2,63.12 1 0 +github.com/muety/wakapi/middlewares/principal.go:60.52,62.3 1 0 +github.com/muety/wakapi/middlewares/security.go:19.62,20.43 1 0 +github.com/muety/wakapi/middlewares/security.go:20.43,22.3 1 0 +github.com/muety/wakapi/middlewares/security.go:25.80,26.36 1 0 +github.com/muety/wakapi/middlewares/security.go:31.2,31.27 1 0 +github.com/muety/wakapi/middlewares/security.go:26.36,27.30 1 0 +github.com/muety/wakapi/middlewares/security.go:27.30,29.4 1 0 +github.com/muety/wakapi/middlewares/sentry.go:15.60,16.43 1 0 +github.com/muety/wakapi/middlewares/sentry.go:16.43,20.3 1 0 +github.com/muety/wakapi/middlewares/sentry.go:23.78,26.54 3 0 +github.com/muety/wakapi/middlewares/sentry.go:26.54,27.43 1 0 +github.com/muety/wakapi/middlewares/sentry.go:27.43,29.4 1 0 github.com/muety/wakapi/services/aggregation.go:29.142,37.2 1 0 github.com/muety/wakapi/services/aggregation.go:46.43,48.37 1 0 github.com/muety/wakapi/services/aggregation.go:52.2,54.19 3 0 @@ -785,6 +444,107 @@ github.com/muety/wakapi/services/aggregation.go:176.27,178.3 1 0 github.com/muety/wakapi/services/aggregation.go:181.83,196.41 5 0 github.com/muety/wakapi/services/aggregation.go:196.41,206.3 3 0 github.com/muety/wakapi/services/aggregation.go:209.34,212.2 2 0 +github.com/muety/wakapi/services/misc.go:21.126,28.2 1 0 +github.com/muety/wakapi/services/misc.go:40.50,42.48 1 0 +github.com/muety/wakapi/services/misc.go:46.2,48.19 3 0 +github.com/muety/wakapi/services/misc.go:42.48,44.3 1 0 +github.com/muety/wakapi/services/misc.go:51.51,53.16 2 0 +github.com/muety/wakapi/services/misc.go:57.2,60.26 3 0 +github.com/muety/wakapi/services/misc.go:66.2,68.40 2 0 +github.com/muety/wakapi/services/misc.go:73.2,75.33 3 0 +github.com/muety/wakapi/services/misc.go:79.2,84.17 2 0 +github.com/muety/wakapi/services/misc.go:88.2,91.17 1 0 +github.com/muety/wakapi/services/misc.go:95.2,95.12 1 0 +github.com/muety/wakapi/services/misc.go:53.16,55.3 1 0 +github.com/muety/wakapi/services/misc.go:60.26,65.3 1 0 +github.com/muety/wakapi/services/misc.go:68.40,70.3 1 0 +github.com/muety/wakapi/services/misc.go:75.33,78.3 2 0 +github.com/muety/wakapi/services/misc.go:84.17,86.3 1 0 +github.com/muety/wakapi/services/misc.go:91.17,93.3 1 0 +github.com/muety/wakapi/services/misc.go:98.116,99.24 1 0 +github.com/muety/wakapi/services/misc.go:99.24,100.151 1 0 +github.com/muety/wakapi/services/misc.go:100.151,102.4 1 0 +github.com/muety/wakapi/services/misc.go:102.9,107.4 1 0 +github.com/muety/wakapi/services/project_label.go:18.111,24.2 1 0 +github.com/muety/wakapi/services/project_label.go:26.80,28.2 1 0 +github.com/muety/wakapi/services/project_label.go:30.90,31.51 1 0 +github.com/muety/wakapi/services/project_label.go:35.2,36.16 2 0 +github.com/muety/wakapi/services/project_label.go:39.2,40.20 2 0 +github.com/muety/wakapi/services/project_label.go:31.51,33.3 1 0 +github.com/muety/wakapi/services/project_label.go:36.16,38.3 1 0 +github.com/muety/wakapi/services/project_label.go:43.108,46.16 3 0 +github.com/muety/wakapi/services/project_label.go:50.2,50.31 1 0 +github.com/muety/wakapi/services/project_label.go:58.2,58.20 1 0 +github.com/muety/wakapi/services/project_label.go:46.16,48.3 1 0 +github.com/muety/wakapi/services/project_label.go:50.31,51.41 1 0 +github.com/muety/wakapi/services/project_label.go:51.41,53.4 1 0 +github.com/muety/wakapi/services/project_label.go:53.9,55.4 1 0 +github.com/muety/wakapi/services/project_label.go:61.98,63.16 2 0 +github.com/muety/wakapi/services/project_label.go:67.2,68.20 2 0 +github.com/muety/wakapi/services/project_label.go:63.16,65.3 1 0 +github.com/muety/wakapi/services/project_label.go:71.74,72.24 1 0 +github.com/muety/wakapi/services/project_label.go:75.2,77.12 3 0 +github.com/muety/wakapi/services/project_label.go:72.24,74.3 1 0 +github.com/muety/wakapi/services/report.go:30.122,44.33 4 0 +github.com/muety/wakapi/services/report.go:50.2,50.12 1 0 +github.com/muety/wakapi/services/report.go:44.33,45.31 1 0 +github.com/muety/wakapi/services/report.go:45.31,47.4 1 0 +github.com/muety/wakapi/services/report.go:53.38,57.16 3 0 +github.com/muety/wakapi/services/report.go:61.2,62.26 2 0 +github.com/muety/wakapi/services/report.go:57.16,59.3 1 0 +github.com/muety/wakapi/services/report.go:62.26,64.3 1 0 +github.com/muety/wakapi/services/report.go:69.61,74.22 3 0 +github.com/muety/wakapi/services/report.go:80.2,80.61 1 0 +github.com/muety/wakapi/services/report.go:94.2,94.24 1 0 +github.com/muety/wakapi/services/report.go:74.22,77.3 2 0 +github.com/muety/wakapi/services/report.go:80.61,89.47 3 0 +github.com/muety/wakapi/services/report.go:89.47,91.4 1 0 +github.com/muety/wakapi/services/report.go:97.80,98.22 1 0 +github.com/muety/wakapi/services/report.go:102.2,102.29 1 0 +github.com/muety/wakapi/services/report.go:107.2,111.16 4 0 +github.com/muety/wakapi/services/report.go:116.2,123.65 2 0 +github.com/muety/wakapi/services/report.go:128.2,129.12 2 0 +github.com/muety/wakapi/services/report.go:98.22,100.3 1 0 +github.com/muety/wakapi/services/report.go:102.29,105.3 2 0 +github.com/muety/wakapi/services/report.go:111.16,114.3 2 0 +github.com/muety/wakapi/services/report.go:123.65,126.3 2 0 +github.com/muety/wakapi/services/report.go:132.63,133.41 1 0 +github.com/muety/wakapi/services/report.go:140.2,140.12 1 0 +github.com/muety/wakapi/services/report.go:133.41,134.30 1 0 +github.com/muety/wakapi/services/report.go:134.30,135.16 1 0 +github.com/muety/wakapi/services/report.go:135.16,137.5 1 0 +github.com/muety/wakapi/services/user.go:21.73,28.2 1 0 +github.com/muety/wakapi/services/user.go:30.74,31.40 1 0 +github.com/muety/wakapi/services/user.go:35.2,36.16 2 0 +github.com/muety/wakapi/services/user.go:40.2,41.15 2 0 +github.com/muety/wakapi/services/user.go:31.40,33.3 1 0 +github.com/muety/wakapi/services/user.go:36.16,38.3 1 0 +github.com/muety/wakapi/services/user.go:44.72,45.37 1 0 +github.com/muety/wakapi/services/user.go:49.2,50.16 2 0 +github.com/muety/wakapi/services/user.go:54.2,55.15 2 0 +github.com/muety/wakapi/services/user.go:45.37,47.3 1 0 +github.com/muety/wakapi/services/user.go:50.16,52.3 1 0 +github.com/muety/wakapi/services/user.go:58.76,60.2 1 0 +github.com/muety/wakapi/services/user.go:62.86,64.2 1 0 +github.com/muety/wakapi/services/user.go:66.58,68.2 1 0 +github.com/muety/wakapi/services/user.go:70.86,72.2 1 0 +github.com/muety/wakapi/services/user.go:74.61,77.2 2 0 +github.com/muety/wakapi/services/user.go:79.48,81.2 1 0 +github.com/muety/wakapi/services/user.go:83.102,93.93 2 0 +github.com/muety/wakapi/services/user.go:99.2,99.38 1 0 +github.com/muety/wakapi/services/user.go:93.93,95.3 1 0 +github.com/muety/wakapi/services/user.go:95.8,97.3 1 0 +github.com/muety/wakapi/services/user.go:102.73,106.2 3 0 +github.com/muety/wakapi/services/user.go:108.78,112.2 3 0 +github.com/muety/wakapi/services/user.go:114.99,117.2 2 0 +github.com/muety/wakapi/services/user.go:119.106,122.96 3 0 +github.com/muety/wakapi/services/user.go:127.2,127.68 1 0 +github.com/muety/wakapi/services/user.go:122.96,124.3 1 0 +github.com/muety/wakapi/services/user.go:124.8,126.3 1 0 +github.com/muety/wakapi/services/user.go:130.85,132.2 1 0 +github.com/muety/wakapi/services/user.go:134.57,141.2 4 0 +github.com/muety/wakapi/services/user.go:143.38,145.2 1 0 +github.com/muety/wakapi/services/user.go:147.57,152.2 1 0 github.com/muety/wakapi/services/alias.go:17.77,22.2 1 1 github.com/muety/wakapi/services/alias.go:26.60,27.43 1 1 github.com/muety/wakapi/services/alias.go:30.2,30.14 1 1 @@ -820,38 +580,41 @@ github.com/muety/wakapi/services/alias.go:95.21,97.4 1 0 github.com/muety/wakapi/services/alias.go:104.31,106.3 1 0 github.com/muety/wakapi/services/alias.go:111.52,112.51 1 0 github.com/muety/wakapi/services/alias.go:112.51,114.3 1 0 -github.com/muety/wakapi/services/heartbeat.go:21.141,28.2 1 0 -github.com/muety/wakapi/services/heartbeat.go:30.72,33.2 2 0 -github.com/muety/wakapi/services/heartbeat.go:35.80,40.32 3 0 -github.com/muety/wakapi/services/heartbeat.go:48.2,48.55 1 0 -github.com/muety/wakapi/services/heartbeat.go:40.32,41.36 1 0 -github.com/muety/wakapi/services/heartbeat.go:45.3,45.43 1 0 -github.com/muety/wakapi/services/heartbeat.go:41.36,44.4 2 0 -github.com/muety/wakapi/services/heartbeat.go:51.53,53.2 1 0 -github.com/muety/wakapi/services/heartbeat.go:55.76,57.2 1 0 -github.com/muety/wakapi/services/heartbeat.go:59.96,61.2 1 0 -github.com/muety/wakapi/services/heartbeat.go:63.111,65.16 2 0 -github.com/muety/wakapi/services/heartbeat.go:68.2,68.43 1 0 -github.com/muety/wakapi/services/heartbeat.go:65.16,67.3 1 0 -github.com/muety/wakapi/services/heartbeat.go:71.92,73.2 1 0 -github.com/muety/wakapi/services/heartbeat.go:75.116,77.2 1 0 -github.com/muety/wakapi/services/heartbeat.go:79.78,81.2 1 0 -github.com/muety/wakapi/services/heartbeat.go:83.104,85.54 2 0 -github.com/muety/wakapi/services/heartbeat.go:89.2,90.16 2 0 -github.com/muety/wakapi/services/heartbeat.go:93.2,94.21 2 0 -github.com/muety/wakapi/services/heartbeat.go:85.54,87.3 1 0 -github.com/muety/wakapi/services/heartbeat.go:90.16,92.3 1 0 -github.com/muety/wakapi/services/heartbeat.go:97.62,99.2 1 0 -github.com/muety/wakapi/services/heartbeat.go:101.116,103.16 2 0 -github.com/muety/wakapi/services/heartbeat.go:107.2,107.28 1 0 -github.com/muety/wakapi/services/heartbeat.go:111.2,111.24 1 0 -github.com/muety/wakapi/services/heartbeat.go:103.16,105.3 1 0 -github.com/muety/wakapi/services/heartbeat.go:107.28,109.3 1 0 -github.com/muety/wakapi/services/heartbeat.go:114.96,116.2 1 0 -github.com/muety/wakapi/services/heartbeat.go:118.107,120.55 2 0 -github.com/muety/wakapi/services/heartbeat.go:120.55,121.58 1 0 -github.com/muety/wakapi/services/heartbeat.go:121.58,125.4 1 0 -github.com/muety/wakapi/services/heartbeat.go:129.85,135.2 5 0 +github.com/muety/wakapi/services/heartbeat.go:22.141,29.2 1 0 +github.com/muety/wakapi/services/heartbeat.go:31.72,34.2 2 0 +github.com/muety/wakapi/services/heartbeat.go:36.80,41.32 3 0 +github.com/muety/wakapi/services/heartbeat.go:49.2,49.55 1 0 +github.com/muety/wakapi/services/heartbeat.go:41.32,42.36 1 0 +github.com/muety/wakapi/services/heartbeat.go:46.3,46.43 1 0 +github.com/muety/wakapi/services/heartbeat.go:42.36,45.4 2 0 +github.com/muety/wakapi/services/heartbeat.go:52.53,54.2 1 0 +github.com/muety/wakapi/services/heartbeat.go:56.76,58.2 1 0 +github.com/muety/wakapi/services/heartbeat.go:60.96,62.2 1 0 +github.com/muety/wakapi/services/heartbeat.go:64.111,66.16 2 0 +github.com/muety/wakapi/services/heartbeat.go:69.2,69.43 1 0 +github.com/muety/wakapi/services/heartbeat.go:66.16,68.3 1 0 +github.com/muety/wakapi/services/heartbeat.go:72.92,74.2 1 0 +github.com/muety/wakapi/services/heartbeat.go:76.116,78.2 1 0 +github.com/muety/wakapi/services/heartbeat.go:80.78,82.2 1 0 +github.com/muety/wakapi/services/heartbeat.go:84.104,86.54 2 0 +github.com/muety/wakapi/services/heartbeat.go:90.2,91.16 2 0 +github.com/muety/wakapi/services/heartbeat.go:95.2,96.28 2 0 +github.com/muety/wakapi/services/heartbeat.go:102.2,103.22 2 0 +github.com/muety/wakapi/services/heartbeat.go:86.54,88.3 1 0 +github.com/muety/wakapi/services/heartbeat.go:91.16,93.3 1 0 +github.com/muety/wakapi/services/heartbeat.go:96.28,97.33 1 0 +github.com/muety/wakapi/services/heartbeat.go:97.33,99.4 1 0 +github.com/muety/wakapi/services/heartbeat.go:106.62,108.2 1 0 +github.com/muety/wakapi/services/heartbeat.go:110.116,112.16 2 0 +github.com/muety/wakapi/services/heartbeat.go:116.2,116.28 1 0 +github.com/muety/wakapi/services/heartbeat.go:120.2,120.24 1 0 +github.com/muety/wakapi/services/heartbeat.go:112.16,114.3 1 0 +github.com/muety/wakapi/services/heartbeat.go:116.28,118.3 1 0 +github.com/muety/wakapi/services/heartbeat.go:123.96,125.2 1 0 +github.com/muety/wakapi/services/heartbeat.go:127.107,129.55 2 0 +github.com/muety/wakapi/services/heartbeat.go:129.55,130.58 1 0 +github.com/muety/wakapi/services/heartbeat.go:130.58,134.4 1 0 +github.com/muety/wakapi/services/heartbeat.go:138.85,144.2 5 0 github.com/muety/wakapi/services/key_value.go:14.89,19.2 1 0 github.com/muety/wakapi/services/key_value.go:21.83,23.2 1 0 github.com/muety/wakapi/services/key_value.go:25.78,27.16 2 0 @@ -878,3 +641,243 @@ github.com/muety/wakapi/services/language_mapping.go:66.82,67.26 1 0 github.com/muety/wakapi/services/language_mapping.go:70.2,72.12 3 0 github.com/muety/wakapi/services/language_mapping.go:67.26,69.3 1 0 github.com/muety/wakapi/services/language_mapping.go:75.74,78.2 1 0 +github.com/muety/wakapi/services/summary.go:29.191,38.2 1 1 +github.com/muety/wakapi/services/summary.go:42.136,45.66 2 1 +github.com/muety/wakapi/services/summary.go:50.2,50.44 1 1 +github.com/muety/wakapi/services/summary.go:56.2,56.65 1 1 +github.com/muety/wakapi/services/summary.go:61.2,62.16 2 1 +github.com/muety/wakapi/services/summary.go:67.2,72.30 5 1 +github.com/muety/wakapi/services/summary.go:45.66,47.3 1 0 +github.com/muety/wakapi/services/summary.go:50.44,53.3 2 1 +github.com/muety/wakapi/services/summary.go:56.65,58.3 1 0 +github.com/muety/wakapi/services/summary.go:62.16,64.3 1 0 +github.com/muety/wakapi/services/summary.go:75.101,78.16 2 1 +github.com/muety/wakapi/services/summary.go:83.2,84.44 2 1 +github.com/muety/wakapi/services/summary.go:93.2,94.16 2 1 +github.com/muety/wakapi/services/summary.go:98.2,98.30 1 1 +github.com/muety/wakapi/services/summary.go:78.16,80.3 1 0 +github.com/muety/wakapi/services/summary.go:84.44,85.78 1 1 +github.com/muety/wakapi/services/summary.go:85.78,87.4 1 1 +github.com/muety/wakapi/services/summary.go:87.9,89.4 1 0 +github.com/muety/wakapi/services/summary.go:94.16,96.3 1 0 +github.com/muety/wakapi/services/summary.go:101.102,104.89 2 1 +github.com/muety/wakapi/services/summary.go:110.2,114.26 4 1 +github.com/muety/wakapi/services/summary.go:119.2,125.34 6 1 +github.com/muety/wakapi/services/summary.go:141.2,141.26 1 1 +github.com/muety/wakapi/services/summary.go:146.2,158.30 3 1 +github.com/muety/wakapi/services/summary.go:104.89,106.3 1 1 +github.com/muety/wakapi/services/summary.go:106.8,108.3 1 0 +github.com/muety/wakapi/services/summary.go:114.26,116.3 1 1 +github.com/muety/wakapi/services/summary.go:125.34,127.20 2 1 +github.com/muety/wakapi/services/summary.go:128.30,129.29 1 1 +github.com/muety/wakapi/services/summary.go:130.31,131.30 1 1 +github.com/muety/wakapi/services/summary.go:132.29,133.28 1 1 +github.com/muety/wakapi/services/summary.go:134.25,135.24 1 1 +github.com/muety/wakapi/services/summary.go:136.30,137.29 1 1 +github.com/muety/wakapi/services/summary.go:141.26,144.3 2 1 +github.com/muety/wakapi/services/summary.go:163.76,165.2 1 0 +github.com/muety/wakapi/services/summary.go:167.62,170.2 2 0 +github.com/muety/wakapi/services/summary.go:172.66,175.2 2 0 +github.com/muety/wakapi/services/summary.go:179.127,182.31 2 1 +github.com/muety/wakapi/services/summary.go:205.2,206.30 2 1 +github.com/muety/wakapi/services/summary.go:214.2,214.40 1 1 +github.com/muety/wakapi/services/summary.go:218.2,218.67 1 1 +github.com/muety/wakapi/services/summary.go:182.31,185.35 2 1 +github.com/muety/wakapi/services/summary.go:189.3,189.13 1 1 +github.com/muety/wakapi/services/summary.go:193.3,198.27 2 1 +github.com/muety/wakapi/services/summary.go:202.3,202.26 1 1 +github.com/muety/wakapi/services/summary.go:185.35,187.4 1 1 +github.com/muety/wakapi/services/summary.go:189.13,190.12 1 1 +github.com/muety/wakapi/services/summary.go:198.27,201.4 2 1 +github.com/muety/wakapi/services/summary.go:206.30,212.3 1 1 +github.com/muety/wakapi/services/summary.go:214.40,216.3 1 1 +github.com/muety/wakapi/services/summary.go:221.87,222.72 1 1 +github.com/muety/wakapi/services/summary.go:230.2,231.16 2 1 +github.com/muety/wakapi/services/summary.go:236.2,237.37 2 1 +github.com/muety/wakapi/services/summary.go:241.2,243.30 3 1 +github.com/muety/wakapi/services/summary.go:254.2,255.29 2 1 +github.com/muety/wakapi/services/summary.go:260.2,261.16 2 1 +github.com/muety/wakapi/services/summary.go:222.72,228.3 1 1 +github.com/muety/wakapi/services/summary.go:231.16,234.3 2 0 +github.com/muety/wakapi/services/summary.go:237.37,239.3 1 1 +github.com/muety/wakapi/services/summary.go:243.30,244.48 1 1 +github.com/muety/wakapi/services/summary.go:244.48,245.41 1 1 +github.com/muety/wakapi/services/summary.go:248.4,249.29 2 1 +github.com/muety/wakapi/services/summary.go:245.41,247.5 1 1 +github.com/muety/wakapi/services/summary.go:255.29,256.18 1 1 +github.com/muety/wakapi/services/summary.go:256.18,258.4 1 1 +github.com/muety/wakapi/services/summary.go:264.97,265.24 1 1 +github.com/muety/wakapi/services/summary.go:269.2,284.30 5 1 +github.com/muety/wakapi/services/summary.go:313.2,316.26 3 1 +github.com/muety/wakapi/services/summary.go:265.24,267.3 1 0 +github.com/muety/wakapi/services/summary.go:284.30,286.41 2 1 +github.com/muety/wakapi/services/summary.go:291.3,291.38 1 1 +github.com/muety/wakapi/services/summary.go:295.3,295.37 1 1 +github.com/muety/wakapi/services/summary.go:299.3,299.34 1 1 +github.com/muety/wakapi/services/summary.go:303.3,310.25 7 1 +github.com/muety/wakapi/services/summary.go:286.41,288.12 2 1 +github.com/muety/wakapi/services/summary.go:291.38,293.4 1 0 +github.com/muety/wakapi/services/summary.go:295.37,297.4 1 1 +github.com/muety/wakapi/services/summary.go:299.34,301.4 1 1 +github.com/muety/wakapi/services/summary.go:319.127,323.32 2 1 +github.com/muety/wakapi/services/summary.go:327.2,327.27 1 1 +github.com/muety/wakapi/services/summary.go:335.2,337.26 3 1 +github.com/muety/wakapi/services/summary.go:342.2,342.43 1 1 +github.com/muety/wakapi/services/summary.go:346.2,346.17 1 1 +github.com/muety/wakapi/services/summary.go:323.32,325.3 1 1 +github.com/muety/wakapi/services/summary.go:327.27,328.37 1 1 +github.com/muety/wakapi/services/summary.go:328.37,330.4 1 1 +github.com/muety/wakapi/services/summary.go:330.9,332.4 1 1 +github.com/muety/wakapi/services/summary.go:337.26,340.3 2 1 +github.com/muety/wakapi/services/summary.go:342.43,344.3 1 1 +github.com/muety/wakapi/services/summary.go:349.116,350.25 1 1 +github.com/muety/wakapi/services/summary.go:354.2,357.44 2 1 +github.com/muety/wakapi/services/summary.go:362.2,362.40 1 1 +github.com/muety/wakapi/services/summary.go:387.2,387.54 1 1 +github.com/muety/wakapi/services/summary.go:391.2,391.18 1 1 +github.com/muety/wakapi/services/summary.go:350.25,352.3 1 0 +github.com/muety/wakapi/services/summary.go:357.44,359.3 1 1 +github.com/muety/wakapi/services/summary.go:362.40,364.19 2 1 +github.com/muety/wakapi/services/summary.go:371.3,376.34 3 1 +github.com/muety/wakapi/services/summary.go:381.3,381.22 1 1 +github.com/muety/wakapi/services/summary.go:364.19,365.12 1 1 +github.com/muety/wakapi/services/summary.go:376.34,378.4 1 1 +github.com/muety/wakapi/services/summary.go:381.22,383.4 1 1 +github.com/muety/wakapi/services/summary.go:387.54,389.3 1 1 +github.com/muety/wakapi/services/summary.go:394.59,396.2 1 1 +github.com/muety/wakapi/services/summary.go:398.63,399.37 1 0 +github.com/muety/wakapi/services/summary.go:399.37,400.36 1 0 +github.com/muety/wakapi/services/summary.go:400.36,402.4 1 0 +github.com/muety/wakapi/utils/filesystem.go:14.68,16.16 2 0 +github.com/muety/wakapi/utils/filesystem.go:20.2,21.15 2 0 +github.com/muety/wakapi/utils/filesystem.go:33.2,33.15 1 0 +github.com/muety/wakapi/utils/filesystem.go:16.16,18.3 1 0 +github.com/muety/wakapi/utils/filesystem.go:21.15,23.47 2 0 +github.com/muety/wakapi/utils/filesystem.go:23.47,25.23 2 0 +github.com/muety/wakapi/utils/filesystem.go:29.4,29.19 1 0 +github.com/muety/wakapi/utils/filesystem.go:25.23,27.5 1 0 +github.com/muety/wakapi/utils/http.go:9.90,12.58 3 0 +github.com/muety/wakapi/utils/http.go:12.58,14.3 1 0 +github.com/muety/wakapi/utils/set.go:3.51,5.26 2 0 +github.com/muety/wakapi/utils/set.go:8.2,8.12 1 0 +github.com/muety/wakapi/utils/set.go:5.26,7.3 1 0 +github.com/muety/wakapi/utils/set.go:11.49,13.21 2 0 +github.com/muety/wakapi/utils/set.go:16.2,16.14 1 0 +github.com/muety/wakapi/utils/set.go:13.21,15.3 1 0 +github.com/muety/wakapi/utils/strings.go:8.34,10.2 1 0 +github.com/muety/wakapi/utils/strings.go:12.77,13.29 1 0 +github.com/muety/wakapi/utils/strings.go:18.2,18.19 1 0 +github.com/muety/wakapi/utils/strings.go:13.29,14.18 1 0 +github.com/muety/wakapi/utils/strings.go:14.18,16.4 1 0 +github.com/muety/wakapi/utils/auth.go:16.79,18.54 2 0 +github.com/muety/wakapi/utils/auth.go:22.2,24.16 3 0 +github.com/muety/wakapi/utils/auth.go:28.2,30.45 3 0 +github.com/muety/wakapi/utils/auth.go:33.2,34.32 2 0 +github.com/muety/wakapi/utils/auth.go:18.54,20.3 1 0 +github.com/muety/wakapi/utils/auth.go:24.16,26.3 1 0 +github.com/muety/wakapi/utils/auth.go:30.45,32.3 1 0 +github.com/muety/wakapi/utils/auth.go:37.65,39.85 2 0 +github.com/muety/wakapi/utils/auth.go:43.2,44.30 2 0 +github.com/muety/wakapi/utils/auth.go:39.85,41.3 1 0 +github.com/muety/wakapi/utils/auth.go:47.94,49.16 2 0 +github.com/muety/wakapi/utils/auth.go:53.2,53.107 1 0 +github.com/muety/wakapi/utils/auth.go:57.2,57.22 1 0 +github.com/muety/wakapi/utils/auth.go:49.16,51.3 1 0 +github.com/muety/wakapi/utils/auth.go:53.107,55.3 1 0 +github.com/muety/wakapi/utils/auth.go:60.56,64.2 3 0 +github.com/muety/wakapi/utils/auth.go:66.55,69.16 3 0 +github.com/muety/wakapi/utils/auth.go:72.2,72.16 1 0 +github.com/muety/wakapi/utils/auth.go:69.16,71.3 1 0 +github.com/muety/wakapi/utils/color.go:8.90,10.32 2 0 +github.com/muety/wakapi/utils/color.go:15.2,15.15 1 0 +github.com/muety/wakapi/utils/color.go:10.32,11.50 1 0 +github.com/muety/wakapi/utils/color.go:11.50,13.4 1 0 +github.com/muety/wakapi/utils/common.go:18.73,19.58 1 0 +github.com/muety/wakapi/utils/common.go:22.2,22.87 1 0 +github.com/muety/wakapi/utils/common.go:25.2,25.64 1 0 +github.com/muety/wakapi/utils/common.go:19.58,21.3 1 0 +github.com/muety/wakapi/utils/common.go:22.87,24.3 1 0 +github.com/muety/wakapi/utils/common.go:28.40,30.2 1 0 +github.com/muety/wakapi/utils/common.go:32.44,34.2 1 0 +github.com/muety/wakapi/utils/common.go:36.49,38.2 1 0 +github.com/muety/wakapi/utils/common.go:40.45,42.2 1 0 +github.com/muety/wakapi/utils/common.go:44.24,46.2 1 0 +github.com/muety/wakapi/utils/common.go:48.56,51.45 3 1 +github.com/muety/wakapi/utils/common.go:54.2,54.40 1 1 +github.com/muety/wakapi/utils/common.go:51.45,53.3 1 1 +github.com/muety/wakapi/utils/date.go:8.43,10.2 1 1 +github.com/muety/wakapi/utils/date.go:12.48,14.2 1 0 +github.com/muety/wakapi/utils/date.go:16.41,18.21 2 1 +github.com/muety/wakapi/utils/date.go:21.2,21.23 1 1 +github.com/muety/wakapi/utils/date.go:18.21,20.3 1 0 +github.com/muety/wakapi/utils/date.go:24.46,26.2 1 0 +github.com/muety/wakapi/utils/date.go:28.51,30.2 1 0 +github.com/muety/wakapi/utils/date.go:32.44,35.2 2 1 +github.com/muety/wakapi/utils/date.go:37.52,39.2 1 0 +github.com/muety/wakapi/utils/date.go:41.45,43.2 1 0 +github.com/muety/wakapi/utils/date.go:45.51,47.2 1 0 +github.com/muety/wakapi/utils/date.go:49.44,51.2 1 0 +github.com/muety/wakapi/utils/date.go:54.42,56.2 1 1 +github.com/muety/wakapi/utils/date.go:59.41,61.21 2 1 +github.com/muety/wakapi/utils/date.go:64.2,64.36 1 1 +github.com/muety/wakapi/utils/date.go:61.21,63.3 1 1 +github.com/muety/wakapi/utils/date.go:68.63,70.2 1 0 +github.com/muety/wakapi/utils/date.go:73.62,79.2 5 0 +github.com/muety/wakapi/utils/date.go:82.67,85.33 2 1 +github.com/muety/wakapi/utils/date.go:94.2,94.18 1 1 +github.com/muety/wakapi/utils/date.go:85.33,87.19 2 1 +github.com/muety/wakapi/utils/date.go:90.3,91.10 2 1 +github.com/muety/wakapi/utils/date.go:87.19,89.4 1 1 +github.com/muety/wakapi/utils/date.go:97.50,103.2 5 0 +github.com/muety/wakapi/utils/date.go:106.79,109.36 3 1 +github.com/muety/wakapi/utils/date.go:113.2,113.21 1 1 +github.com/muety/wakapi/utils/date.go:117.2,117.21 1 1 +github.com/muety/wakapi/utils/date.go:121.2,121.13 1 1 +github.com/muety/wakapi/utils/date.go:109.36,112.3 2 0 +github.com/muety/wakapi/utils/date.go:113.21,116.3 2 1 +github.com/muety/wakapi/utils/date.go:117.21,120.3 2 1 +github.com/muety/wakapi/utils/template.go:8.41,10.16 2 0 +github.com/muety/wakapi/utils/template.go:13.2,13.23 1 0 +github.com/muety/wakapi/utils/template.go:10.16,12.3 1 0 +github.com/muety/wakapi/utils/template.go:16.37,17.30 1 0 +github.com/muety/wakapi/utils/template.go:20.2,20.10 1 0 +github.com/muety/wakapi/utils/template.go:17.30,19.3 1 0 +github.com/muety/wakapi/utils/collection.go:3.59,5.22 2 0 +github.com/muety/wakapi/utils/collection.go:8.2,8.15 1 0 +github.com/muety/wakapi/utils/collection.go:5.22,7.3 1 0 +github.com/muety/wakapi/utils/summary.go:10.66,11.40 1 0 +github.com/muety/wakapi/utils/summary.go:16.2,16.48 1 0 +github.com/muety/wakapi/utils/summary.go:11.40,12.27 1 0 +github.com/muety/wakapi/utils/summary.go:12.27,14.4 1 0 +github.com/muety/wakapi/utils/summary.go:19.88,22.2 2 0 +github.com/muety/wakapi/utils/summary.go:24.95,26.16 2 0 +github.com/muety/wakapi/utils/summary.go:29.2,29.38 1 0 +github.com/muety/wakapi/utils/summary.go:26.16,28.3 1 0 +github.com/muety/wakapi/utils/summary.go:32.105,36.18 3 0 +github.com/muety/wakapi/utils/summary.go:71.2,71.22 1 0 +github.com/muety/wakapi/utils/summary.go:37.28,38.26 1 0 +github.com/muety/wakapi/utils/summary.go:39.32,41.24 2 0 +github.com/muety/wakapi/utils/summary.go:42.31,43.29 1 0 +github.com/muety/wakapi/utils/summary.go:44.31,46.27 2 0 +github.com/muety/wakapi/utils/summary.go:47.32,48.30 1 0 +github.com/muety/wakapi/utils/summary.go:49.32,51.28 2 0 +github.com/muety/wakapi/utils/summary.go:52.31,53.29 1 0 +github.com/muety/wakapi/utils/summary.go:54.32,55.31 1 0 +github.com/muety/wakapi/utils/summary.go:56.41,58.42 2 0 +github.com/muety/wakapi/utils/summary.go:59.33,60.32 1 0 +github.com/muety/wakapi/utils/summary.go:61.33,62.32 1 0 +github.com/muety/wakapi/utils/summary.go:63.35,64.32 1 0 +github.com/muety/wakapi/utils/summary.go:65.26,66.21 1 0 +github.com/muety/wakapi/utils/summary.go:67.10,68.39 1 0 +github.com/muety/wakapi/utils/summary.go:74.73,81.56 5 0 +github.com/muety/wakapi/utils/summary.go:97.2,104.8 2 0 +github.com/muety/wakapi/utils/summary.go:81.56,83.3 1 0 +github.com/muety/wakapi/utils/summary.go:83.8,83.54 1 0 +github.com/muety/wakapi/utils/summary.go:83.54,85.3 1 0 +github.com/muety/wakapi/utils/summary.go:85.8,87.17 2 0 +github.com/muety/wakapi/utils/summary.go:91.3,92.17 2 0 +github.com/muety/wakapi/utils/summary.go:87.17,89.4 1 0 +github.com/muety/wakapi/utils/summary.go:92.17,94.4 1 0 +github.com/muety/wakapi/utils/summary.go:107.48,111.51 2 0 +github.com/muety/wakapi/utils/summary.go:114.2,114.12 1 0 +github.com/muety/wakapi/utils/summary.go:111.51,113.3 1 0 diff --git a/routes/api/heartbeat.go b/routes/api/heartbeat.go index 1362567..b80e689 100644 --- a/routes/api/heartbeat.go +++ b/routes/api/heartbeat.go @@ -45,6 +45,8 @@ func (h *HeartbeatApiHandler) RegisterRoutes(router *mux.Router) { // see https://github.com/muety/wakapi/issues/203 r.Path("/heartbeat").Methods(http.MethodPost).HandlerFunc(h.Post) r.Path("/heartbeats").Methods(http.MethodPost).HandlerFunc(h.Post) + r.Path("/users/{user}/heartbeats").Methods(http.MethodPost).HandlerFunc(h.Post) + r.Path("/users/{user}/heartbeats.bulk").Methods(http.MethodPost).HandlerFunc(h.Post) r.Path("/v1/users/{user}/heartbeats").Methods(http.MethodPost).HandlerFunc(h.Post) r.Path("/v1/users/{user}/heartbeats.bulk").Methods(http.MethodPost).HandlerFunc(h.Post) r.Path("/compat/wakatime/v1/users/{user}/heartbeats").Methods(http.MethodPost).HandlerFunc(h.Post) @@ -149,9 +151,10 @@ func (h *HeartbeatApiHandler) tryParseSingle(r *http.Request) ([]*models.Heartbe // construct weird response format (see https://github.com/wakatime/wakatime/blob/2e636d389bf5da4e998e05d5285a96ce2c181e3d/wakatime/api.py#L288) // to make the cli consider all heartbeats to having been successfully saved -// response looks like: { "responses": [ [ { "data": {...} }, 201 ], ... ] } -// update: this was probably a temporary bug at wakatime, responses actually looks like so: https://pastr.de/p/nyf6kj2e6843fbw4xkj4h4pj +// response looks like: { "responses": [ [ null, 201 ], ... ] } +// this was probably a temporary bug at wakatime, responses actually looks like so: https://pastr.de/p/nyf6kj2e6843fbw4xkj4h4pj // TODO: adapt response format some time +// however, wakatime-cli is still able to parse the response (see https://github.com/wakatime/wakatime-cli/blob/c2076c0e1abc1449baf5b7ac7db391b06041c719/pkg/api/heartbeat.go#L127), so no urgent need for action func constructSuccessResponse(n int) *heartbeatResponseVm { responses := make([][]interface{}, n) @@ -189,14 +192,14 @@ func (h *HeartbeatApiHandler) postAlias1() {} // @Router /compat/wakatime/v1/users/{user}/heartbeats [post] func (h *HeartbeatApiHandler) postAlias2() {} -// @Summary Push new heartbeats +// @Summary Push a new heartbeat // @ID post-heartbeat-4 // @Tags heartbeat // @Accept json -// @Param heartbeat body []models.Heartbeat true "Multiple heartbeats" +// @Param heartbeat body models.Heartbeat true "A single heartbeat" // @Security ApiKeyAuth // @Success 201 -// @Router /heartbeats [post] +// @Router /users/{user}/heartbeats [post] func (h *HeartbeatApiHandler) postAlias3() {} // @Summary Push new heartbeats @@ -206,7 +209,7 @@ func (h *HeartbeatApiHandler) postAlias3() {} // @Param heartbeat body []models.Heartbeat true "Multiple heartbeats" // @Security ApiKeyAuth // @Success 201 -// @Router /v1/users/{user}/heartbeats.bulk [post] +// @Router /heartbeats [post] func (h *HeartbeatApiHandler) postAlias4() {} // @Summary Push new heartbeats @@ -216,5 +219,25 @@ func (h *HeartbeatApiHandler) postAlias4() {} // @Param heartbeat body []models.Heartbeat true "Multiple heartbeats" // @Security ApiKeyAuth // @Success 201 -// @Router /compat/wakatime/v1/users/{user}/heartbeats.bulk [post] +// @Router /v1/users/{user}/heartbeats.bulk [post] func (h *HeartbeatApiHandler) postAlias5() {} + +// @Summary Push new heartbeats +// @ID post-heartbeat-7 +// @Tags heartbeat +// @Accept json +// @Param heartbeat body []models.Heartbeat true "Multiple heartbeats" +// @Security ApiKeyAuth +// @Success 201 +// @Router /compat/wakatime/v1/users/{user}/heartbeats.bulk [post] +func (h *HeartbeatApiHandler) postAlias6() {} + +// @Summary Push new heartbeats +// @ID post-heartbeat-8 +// @Tags heartbeat +// @Accept json +// @Param heartbeat body []models.Heartbeat true "Multiple heartbeats" +// @Security ApiKeyAuth +// @Success 201 +// @Router /users/{user}/heartbeats.bulk [post] +func (h *HeartbeatApiHandler) postAlias7() {} diff --git a/static/docs/docs.go b/static/docs/docs.go index 3cc4cb6..9292700 100644 --- a/static/docs/docs.go +++ b/static/docs/docs.go @@ -207,7 +207,7 @@ var doc = `{ "heartbeat" ], "summary": "Push new heartbeats", - "operationId": "post-heartbeat-6", + "operationId": "post-heartbeat-7", "parameters": [ { "description": "Multiple heartbeats", @@ -460,7 +460,7 @@ var doc = `{ "heartbeat" ], "summary": "Push new heartbeats", - "operationId": "post-heartbeat-4", + "operationId": "post-heartbeat-5", "parameters": [ { "description": "Multiple heartbeats", @@ -547,6 +547,75 @@ var doc = `{ } } }, + "/users/{user}/heartbeats": { + "post": { + "security": [ + { + "ApiKeyAuth": [] + } + ], + "consumes": [ + "application/json" + ], + "tags": [ + "heartbeat" + ], + "summary": "Push a new heartbeat", + "operationId": "post-heartbeat-4", + "parameters": [ + { + "description": "A single heartbeat", + "name": "heartbeat", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/models.Heartbeat" + } + } + ], + "responses": { + "201": { + "description": "" + } + } + } + }, + "/users/{user}/heartbeats.bulk": { + "post": { + "security": [ + { + "ApiKeyAuth": [] + } + ], + "consumes": [ + "application/json" + ], + "tags": [ + "heartbeat" + ], + "summary": "Push new heartbeats", + "operationId": "post-heartbeat-8", + "parameters": [ + { + "description": "Multiple heartbeats", + "name": "heartbeat", + "in": "body", + "required": true, + "schema": { + "type": "array", + "items": { + "$ref": "#/definitions/models.Heartbeat" + } + } + } + ], + "responses": { + "201": { + "description": "" + } + } + } + }, "/v1/users/{user}/heartbeats": { "post": { "security": [ @@ -594,7 +663,7 @@ var doc = `{ "heartbeat" ], "summary": "Push new heartbeats", - "operationId": "post-heartbeat-5", + "operationId": "post-heartbeat-6", "parameters": [ { "description": "Multiple heartbeats", diff --git a/static/docs/swagger.json b/static/docs/swagger.json index 6764e80..a9ce7b9 100644 --- a/static/docs/swagger.json +++ b/static/docs/swagger.json @@ -191,7 +191,7 @@ "heartbeat" ], "summary": "Push new heartbeats", - "operationId": "post-heartbeat-6", + "operationId": "post-heartbeat-7", "parameters": [ { "description": "Multiple heartbeats", @@ -444,7 +444,7 @@ "heartbeat" ], "summary": "Push new heartbeats", - "operationId": "post-heartbeat-4", + "operationId": "post-heartbeat-5", "parameters": [ { "description": "Multiple heartbeats", @@ -531,6 +531,75 @@ } } }, + "/users/{user}/heartbeats": { + "post": { + "security": [ + { + "ApiKeyAuth": [] + } + ], + "consumes": [ + "application/json" + ], + "tags": [ + "heartbeat" + ], + "summary": "Push a new heartbeat", + "operationId": "post-heartbeat-4", + "parameters": [ + { + "description": "A single heartbeat", + "name": "heartbeat", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/models.Heartbeat" + } + } + ], + "responses": { + "201": { + "description": "" + } + } + } + }, + "/users/{user}/heartbeats.bulk": { + "post": { + "security": [ + { + "ApiKeyAuth": [] + } + ], + "consumes": [ + "application/json" + ], + "tags": [ + "heartbeat" + ], + "summary": "Push new heartbeats", + "operationId": "post-heartbeat-8", + "parameters": [ + { + "description": "Multiple heartbeats", + "name": "heartbeat", + "in": "body", + "required": true, + "schema": { + "type": "array", + "items": { + "$ref": "#/definitions/models.Heartbeat" + } + } + } + ], + "responses": { + "201": { + "description": "" + } + } + } + }, "/v1/users/{user}/heartbeats": { "post": { "security": [ @@ -578,7 +647,7 @@ "heartbeat" ], "summary": "Push new heartbeats", - "operationId": "post-heartbeat-5", + "operationId": "post-heartbeat-6", "parameters": [ { "description": "Multiple heartbeats", diff --git a/static/docs/swagger.yaml b/static/docs/swagger.yaml index d39a35b..ad2b6fb 100644 --- a/static/docs/swagger.yaml +++ b/static/docs/swagger.yaml @@ -436,7 +436,7 @@ paths: post: consumes: - application/json - operationId: post-heartbeat-6 + operationId: post-heartbeat-7 parameters: - description: Multiple heartbeats in: body @@ -604,7 +604,7 @@ paths: post: consumes: - application/json - operationId: post-heartbeat-4 + operationId: post-heartbeat-5 parameters: - description: Multiple heartbeats in: body @@ -667,6 +667,48 @@ paths: summary: Retrieve a summary tags: - summary + /users/{user}/heartbeats: + post: + consumes: + - application/json + operationId: post-heartbeat-4 + parameters: + - description: A single heartbeat + in: body + name: heartbeat + required: true + schema: + $ref: '#/definitions/models.Heartbeat' + responses: + "201": + description: "" + security: + - ApiKeyAuth: [] + summary: Push a new heartbeat + tags: + - heartbeat + /users/{user}/heartbeats.bulk: + post: + consumes: + - application/json + operationId: post-heartbeat-8 + parameters: + - description: Multiple heartbeats + in: body + name: heartbeat + required: true + schema: + items: + $ref: '#/definitions/models.Heartbeat' + type: array + responses: + "201": + description: "" + security: + - ApiKeyAuth: [] + summary: Push new heartbeats + tags: + - heartbeat /v1/users/{user}/heartbeats: post: consumes: @@ -691,7 +733,7 @@ paths: post: consumes: - application/json - operationId: post-heartbeat-5 + operationId: post-heartbeat-6 parameters: - description: Multiple heartbeats in: body diff --git a/testing/Wakapi API Tests.postman_collection.json b/testing/Wakapi API Tests.postman_collection.json index 76c59f9..bd5bd58 100644 --- a/testing/Wakapi API Tests.postman_collection.json +++ b/testing/Wakapi API Tests.postman_collection.json @@ -299,7 +299,7 @@ "header": [], "body": { "mode": "raw", - "raw": "[{\n \"entity\": \"/home/user1/dev/project1/main.go\",\n \"project\": \"wakapi\",\n \"language\": \"Go\",\n \"is_write\": true,\n \"type\": \"file\",\n \"category\": null,\n \"branch\": null,\n \"time\": {{tsNowMinus1Min}}\n},\n{\n \"entity\": \"/home/user1/dev/project1/main.go\",\n \"project\": \"wakapi\",\n \"language\": \"Go\",\n \"is_write\": true,\n \"type\": \"file\",\n \"category\": null,\n \"branch\": null,\n \"time\": {{tsNowMinus2Min}}\n}]", + "raw": "[{\n \"entity\": \"/home/user1/dev/project1/main.go\",\n \"project\": \"wakapi\",\n \"language\": \"Go\",\n \"is_write\": true,\n \"type\": \"file\",\n \"category\": null,\n \"branch\": null,\n \"time\": {{ts1}}\n},\n{\n \"entity\": \"/home/user1/dev/project1/main.go\",\n \"project\": \"wakapi\",\n \"language\": \"Go\",\n \"is_write\": true,\n \"type\": \"file\",\n \"category\": null,\n \"branch\": null,\n \"time\": {{ts3}}\n}]", "options": { "raw": { "language": "json" @@ -326,11 +326,18 @@ "listen": "test", "script": { "exec": [ - "pm.test(\"Status code is 400\", function () {", - " // only check if endpoint is present (non-404), 400 is fine because invalid body sent", - " pm.response.to.have.status(400);", + "pm.test(\"Status code is 201\", function () {", + " pm.response.to.have.status(201);", "});", - "" + "", + "pm.test(\"Response body is correct\", function () {", + " var jsonData = pm.response.json();", + " pm.expect(jsonData.responses.length).to.eql(2);", + " pm.expect(jsonData.responses[0].length).to.eql(2);", + " pm.expect(jsonData.responses[1].length).to.eql(2);", + " pm.expect(jsonData.responses[0][1]).to.eql(201);", + " pm.expect(jsonData.responses[1][1]).to.eql(201);", + "});" ], "type": "text/javascript" } @@ -354,7 +361,7 @@ "header": [], "body": { "mode": "raw", - "raw": "", + "raw": "[{\n \"entity\": \"/home/user1/dev/project1/main.go\",\n \"project\": \"wakapi\",\n \"language\": \"Go\",\n \"is_write\": true,\n \"type\": \"file\",\n \"category\": null,\n \"branch\": null,\n \"time\": {{ts1}}\n},\n{\n \"entity\": \"/home/user1/dev/project1/main.go\",\n \"project\": \"wakapi\",\n \"language\": \"Go\",\n \"is_write\": true,\n \"type\": \"file\",\n \"category\": null,\n \"branch\": null,\n \"time\": {{ts2}}\n}]", "options": { "raw": { "language": "json" @@ -384,11 +391,18 @@ "listen": "test", "script": { "exec": [ - "pm.test(\"Status code is 400\", function () {", - " // only check if endpoint is present (non-404), 400 is fine because invalid body sent", - " pm.response.to.have.status(400);", + "pm.test(\"Status code is 201\", function () {", + " pm.response.to.have.status(201);", "});", - "" + "", + "pm.test(\"Response body is correct\", function () {", + " var jsonData = pm.response.json();", + " pm.expect(jsonData.responses.length).to.eql(2);", + " pm.expect(jsonData.responses[0].length).to.eql(2);", + " pm.expect(jsonData.responses[1].length).to.eql(2);", + " pm.expect(jsonData.responses[0][1]).to.eql(201);", + " pm.expect(jsonData.responses[1][1]).to.eql(201);", + "});" ], "type": "text/javascript" } @@ -412,7 +426,7 @@ "header": [], "body": { "mode": "raw", - "raw": "", + "raw": "[{\n \"entity\": \"/home/user1/dev/project1/main.go\",\n \"project\": \"wakapi\",\n \"language\": \"Go\",\n \"is_write\": true,\n \"type\": \"file\",\n \"category\": null,\n \"branch\": null,\n \"time\": {{ts1}}\n},\n{\n \"entity\": \"/home/user1/dev/project1/main.go\",\n \"project\": \"wakapi\",\n \"language\": \"Go\",\n \"is_write\": true,\n \"type\": \"file\",\n \"category\": null,\n \"branch\": null,\n \"time\": {{ts2}}\n}]", "options": { "raw": { "language": "json" @@ -437,6 +451,376 @@ }, "response": [] }, + { + "name": "Create heartbeats (alt 3)", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "pm.test(\"Status code is 201\", function () {", + " pm.response.to.have.status(201);", + "});", + "", + "pm.test(\"Response body is correct\", function () {", + " var jsonData = pm.response.json();", + " pm.expect(jsonData.responses.length).to.eql(2);", + " pm.expect(jsonData.responses[0].length).to.eql(2);", + " pm.expect(jsonData.responses[1].length).to.eql(2);", + " pm.expect(jsonData.responses[0][1]).to.eql(201);", + " pm.expect(jsonData.responses[1][1]).to.eql(201);", + "});" + ], + "type": "text/javascript" + } + } + ], + "protocolProfileBehavior": { + "disableCookies": true + }, + "request": { + "auth": { + "type": "bearer", + "bearer": [ + { + "key": "token", + "value": "{{WRITEUSER_TOKEN}}", + "type": "string" + } + ] + }, + "method": "POST", + "header": [], + "body": { + "mode": "raw", + "raw": "[{\n \"entity\": \"/home/user1/dev/project1/main.go\",\n \"project\": \"wakapi\",\n \"language\": \"Go\",\n \"is_write\": true,\n \"type\": \"file\",\n \"category\": null,\n \"branch\": null,\n \"time\": {{ts1}}\n},\n{\n \"entity\": \"/home/user1/dev/project1/main.go\",\n \"project\": \"wakapi\",\n \"language\": \"Go\",\n \"is_write\": true,\n \"type\": \"file\",\n \"category\": null,\n \"branch\": null,\n \"time\": {{ts2}}\n}]", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{BASE_URL}}/api/users/current/heartbeats.bulk", + "host": [ + "{{BASE_URL}}" + ], + "path": [ + "api", + "users", + "current", + "heartbeats.bulk" + ] + } + }, + "response": [] + }, + { + "name": "Create heartbeats (alt 4, single)", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "pm.test(\"Status code is 201\", function () {", + " pm.response.to.have.status(201);", + "});", + "", + "pm.test(\"Response body is correct\", function () {", + " var jsonData = pm.response.json();", + " pm.expect(jsonData.responses.length).to.eql(1);", + " pm.expect(jsonData.responses[0].length).to.eql(2);", + " pm.expect(jsonData.responses[0][1]).to.eql(201);", + "});" + ], + "type": "text/javascript" + } + } + ], + "protocolProfileBehavior": { + "disableCookies": true + }, + "request": { + "auth": { + "type": "bearer", + "bearer": [ + { + "key": "token", + "value": "{{WRITEUSER_TOKEN}}", + "type": "string" + } + ] + }, + "method": "POST", + "header": [], + "body": { + "mode": "raw", + "raw": "{\n \"entity\": \"/home/user1/dev/project1/main.go\",\n \"project\": \"wakapi\",\n \"language\": \"Go\",\n \"is_write\": true,\n \"type\": \"file\",\n \"category\": null,\n \"branch\": null,\n \"time\": {{ts1}}\n}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{BASE_URL}}/api/heartbeat", + "host": [ + "{{BASE_URL}}" + ], + "path": [ + "api", + "heartbeat" + ] + } + }, + "response": [] + }, + { + "name": "Create heartbeats (alt 5, single)", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "pm.test(\"Status code is 201\", function () {", + " pm.response.to.have.status(201);", + "});", + "", + "pm.test(\"Response body is correct\", function () {", + " var jsonData = pm.response.json();", + " pm.expect(jsonData.responses.length).to.eql(1);", + " pm.expect(jsonData.responses[0].length).to.eql(2);", + " pm.expect(jsonData.responses[0][1]).to.eql(201);", + "});" + ], + "type": "text/javascript" + } + } + ], + "protocolProfileBehavior": { + "disableCookies": true + }, + "request": { + "auth": { + "type": "bearer", + "bearer": [ + { + "key": "token", + "value": "{{WRITEUSER_TOKEN}}", + "type": "string" + } + ] + }, + "method": "POST", + "header": [], + "body": { + "mode": "raw", + "raw": "{\n \"entity\": \"/home/user1/dev/project1/main.go\",\n \"project\": \"wakapi\",\n \"language\": \"Go\",\n \"is_write\": true,\n \"type\": \"file\",\n \"category\": null,\n \"branch\": null,\n \"time\": {{ts1}}\n}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{BASE_URL}}/api/v1/users/current/heartbeats", + "host": [ + "{{BASE_URL}}" + ], + "path": [ + "api", + "v1", + "users", + "current", + "heartbeats" + ] + } + }, + "response": [] + }, + { + "name": "Create heartbeats (alt 6, single)", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "pm.test(\"Status code is 201\", function () {", + " pm.response.to.have.status(201);", + "});", + "", + "pm.test(\"Response body is correct\", function () {", + " var jsonData = pm.response.json();", + " pm.expect(jsonData.responses.length).to.eql(1);", + " pm.expect(jsonData.responses[0].length).to.eql(2);", + " pm.expect(jsonData.responses[0][1]).to.eql(201);", + "});" + ], + "type": "text/javascript" + } + } + ], + "protocolProfileBehavior": { + "disableCookies": true + }, + "request": { + "auth": { + "type": "bearer", + "bearer": [ + { + "key": "token", + "value": "{{WRITEUSER_TOKEN}}", + "type": "string" + } + ] + }, + "method": "POST", + "header": [], + "body": { + "mode": "raw", + "raw": "{\n \"entity\": \"/home/user1/dev/project1/main.go\",\n \"project\": \"wakapi\",\n \"language\": \"Go\",\n \"is_write\": true,\n \"type\": \"file\",\n \"category\": null,\n \"branch\": null,\n \"time\": {{ts1}}\n}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{BASE_URL}}/api/compat/wakatime/v1/users/current/heartbeats", + "host": [ + "{{BASE_URL}}" + ], + "path": [ + "api", + "compat", + "wakatime", + "v1", + "users", + "current", + "heartbeats" + ] + } + }, + "response": [] + }, + { + "name": "Create heartbeats (alt 7, single)", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "pm.test(\"Status code is 201\", function () {", + " pm.response.to.have.status(201);", + "});", + "", + "pm.test(\"Response body is correct\", function () {", + " var jsonData = pm.response.json();", + " pm.expect(jsonData.responses.length).to.eql(1);", + " pm.expect(jsonData.responses[0].length).to.eql(2);", + " pm.expect(jsonData.responses[0][1]).to.eql(201);", + "});" + ], + "type": "text/javascript" + } + } + ], + "protocolProfileBehavior": { + "disableCookies": true + }, + "request": { + "auth": { + "type": "bearer", + "bearer": [ + { + "key": "token", + "value": "{{WRITEUSER_TOKEN}}", + "type": "string" + } + ] + }, + "method": "POST", + "header": [], + "body": { + "mode": "raw", + "raw": "{\n \"entity\": \"/home/user1/dev/project1/main.go\",\n \"project\": \"wakapi\",\n \"language\": \"Go\",\n \"is_write\": true,\n \"type\": \"file\",\n \"category\": null,\n \"branch\": null,\n \"time\": {{ts1}}\n}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{BASE_URL}}/api/users/current/heartbeats", + "host": [ + "{{BASE_URL}}" + ], + "path": [ + "api", + "users", + "current", + "heartbeats" + ] + } + }, + "response": [] + }, + { + "name": "Create heartbeats (non-matching)", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "pm.test(\"Status code is 404\", function () {", + " pm.response.to.have.status(404);", + "});" + ], + "type": "text/javascript" + } + } + ], + "protocolProfileBehavior": { + "disableCookies": true + }, + "request": { + "auth": { + "type": "bearer", + "bearer": [ + { + "key": "token", + "value": "{{WRITEUSER_TOKEN}}", + "type": "string" + } + ] + }, + "method": "POST", + "header": [], + "body": { + "mode": "raw", + "raw": "{\n \"entity\": \"/home/user1/dev/project1/main.go\",\n \"project\": \"wakapi\",\n \"language\": \"Go\",\n \"is_write\": true,\n \"type\": \"file\",\n \"category\": null,\n \"branch\": null,\n \"time\": {{ts1}}\n}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{BASE_URL}}/api/v2/users/current/heartbeats", + "host": [ + "{{BASE_URL}}" + ], + "path": [ + "api", + "v2", + "users", + "current", + "heartbeats" + ] + } + }, + "response": [] + }, { "name": "Create heartbeats (unauthorized)", "event": [ @@ -732,8 +1116,8 @@ "", "pm.test(\"Correct dates\", function () {", " const jsonData = pm.response.json();", - " pm.expect(moment(jsonData.from).unix()).to.gt(moment(pm.variables.get('tsStartOfDayDate')).unix())", - " pm.expect(moment(jsonData.to).unix()).to.gt(moment(pm.variables.get('tsEndOfDayDate')).unix())", + " pm.expect(moment(jsonData.from).unix()).to.gte(moment(pm.variables.get('tsStartOfDayDate')).unix())", + " pm.expect(moment(jsonData.to).unix()).to.gte(moment(pm.variables.get('tsEndOfDayDate')).unix())", "});", "" ], @@ -2469,7 +2853,10 @@ "pm.variables.set('tsEndOfTomorrowIso', endOfTomorrow.toISOString())", "pm.variables.set('tsStartOfDayDate', startOfDay.format('YYYY-MM-DD'))", "pm.variables.set('tsEndOfDayDate', endOfDay.format('YYYY-MM-DD'))", - "pm.variables.set('tsEndOfTomorrowDate', endOfTomorrow.format('YYYY-MM-DD'))" + "pm.variables.set('tsEndOfTomorrowDate', endOfTomorrow.format('YYYY-MM-DD'))", + "pm.variables.set('ts1', now.startOf('hour').format('x') / 1000)", + "pm.variables.set('ts2', now.startOf('hour').add(1, 'm').format('x') / 1000)", + "pm.variables.set('ts3', now.startOf('hour').add(2, 'm').format('x') / 1000)" ] } },