-
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathscalbi.go
126 lines (104 loc) · 2.62 KB
/
scalbi.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
package scalbi
import (
"bytes"
"encoding/json"
"fmt"
"log"
"net"
"net/http"
"time"
)
// Estruturas para rastreamento
type Scaltrack struct {
url URL
net Net
wifi Wifi
memory Memory
}
type URL struct{}
type Net struct{}
type Wifi struct{}
type Memory struct{}
// Função para criar uma nova instância de Scaltrack
func New() *Scaltrack {
return &Scaltrack{}
}
// Função para medir o tempo de resposta de uma URL
func (u URL) Time(url string) time.Duration {
start := time.Now()
_, err := http.Get(url)
if err != nil {
log.Printf("Erro ao acessar a URL: %v", err)
}
return time.Since(start)
}
// Função para verificar a conectividade com a internet
func (n Net) Ping() string {
_, err := net.Dial("tcp", "google.com:80")
if err != nil {
log.Printf("Erro ao tentar conectar: %v", err)
return "un"
}
return "av"
}
// Função para verificar o status de uma URL
func (u URL) Status(url string) string {
resp, err := http.Get(url)
if err != nil || resp.StatusCode != 200 {
log.Printf("Erro ao obter status da URL ou status diferente de 200: %v", err)
return "un"
}
return "av"
}
// Estrutura para armazenar dados
type Scal struct {
Data map[string]interface{}
}
// Função para criar uma nova instância de Scal
func NewScal() *Scal {
return &Scal{
Data: make(map[string]interface{}),
}
}
// Função para obter um valor de Scal
func (s *Scal) Get(key string) interface{} {
return s.Data[key]
}
// Função para definir um valor em Scal
func (s *Scal) Set(key string, value interface{}) {
s.Data[key] = value
}
// Função para renderizar um valor em Scal
func (s *Scal) Render(key string, value interface{}) string {
s.Set(key, value)
return fmt.Sprintf("{{ .%s }}", key)
}
// Função para renderizar o HTML com base nos dados passados
func (s *Scal) Server(writeFunc func(string) error, data map[string]string) error {
var buf bytes.Buffer
err := json.NewEncoder(&buf).Encode(data)
if err != nil {
log.Printf("Erro ao codificar dados para JSON: %v", err)
return err
}
htmlTemplate := `
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Scalbi :: By Wesley Yan Soares Brehmer (simplyYan)</title>
<script src="https://cdn.jsdelivr.net/gh/simplyYan/Scalbi@main/javascript.api/scalbi.mjs"></script>
</head>
<body>
<script>
const sca = new Scalbi();
sca.set(%s);
sca.create('main')
</script>
</body>
</html>
`
templateStr := fmt.Sprintf(htmlTemplate, buf.String())
return writeFunc(templateStr)
}