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
|
package shared
import (
"fmt"
"net/http"
"os"
"strings"
)
const (
versionFileName = "www/version.txt"
userAgentTemplate = "rss-kakapo/%s (+https://%s)"
)
type IUserAgent interface {
AddUserAgent(req *http.Request)
}
type userAgent struct {
userAgentValue string
}
func NewUserAgent(cfg *Config) IUserAgent {
return &userAgent{
userAgentValue: buildUserAgentString(cfg.Host),
}
}
func buildUserAgentString(host string) string {
versionBytes, _ := os.ReadFile(versionFileName)
versionStr := string(versionBytes)
versionStr = strings.TrimSpace(versionStr)
versionStr = strings.TrimPrefix(versionStr, "v")
return fmt.Sprintf(userAgentTemplate, versionStr, host)
}
func (ua *userAgent) AddUserAgent(req *http.Request) {
req.Header.Add("User-Agent", ua.userAgentValue)
}
|