1package extras
 2
 3import (
 4	"log"
 5	"os"
 6	"strings"
 7	"time"
 8
 9	"github.com/go-ping/ping"
10)
11
12var LeftButtonState = false
13var RightButtonState = false
14var LeftButtonPressedTime time.Time
15var NavigationHoldDuration float64
16var CloudflareIP string
17
18func checkError(error error) {
19	if error != nil {
20		log.Fatal(error)
21	}
22}
23
24func GetCWD() string {
25	path, err := os.Getwd()
26	checkError(err)
27	dirname, err := os.UserHomeDir()
28	checkError(err)
29	return strings.Replace(path+"/", dirname, "~", 1)
30}
31
32func FitWithinCharacterLimits(characterLimit int, stringToFit string) string {
33	if characterLimit > len(stringToFit) {
34		return stringToFit
35	}
36	return string(stringToFit[:characterLimit-1])
37}
38
39func PingCloudflare() bool {
40	pinger, err := ping.NewPinger(CloudflareIP)
41	if err != nil {
42		panic(err)
43	}
44	pinger.Count = 1
45	err = pinger.Run() // Blocks until finished.
46	if err != nil {
47		panic(err)
48	}
49	stats := pinger.Statistics()
50	if stats.PacketLoss == 0 {
51		return true
52	} else {
53		return false
54	}
55}