web: set user-agent for all web requests

This commit is contained in:
James Bayliss
2021-02-26 21:51:15 +00:00
parent 9c2b2ece33
commit a9486e1ce2
6 changed files with 20 additions and 11 deletions

View File

@@ -19,9 +19,9 @@ builds:
- 7 - 7
ldflags: ldflags:
- -s -w - -s -w
- -X "main.Version={{ .Version }}" - -X "github.com/l3uddz/nabarr/build.Version={{ .Version }}"
- -X "main.GitCommit={{ .ShortCommit }}" - -X "github.com/l3uddz/nabarr/build.GitCommit={{ .ShortCommit }}"
- -X "main.Timestamp={{ .Timestamp }}" - -X "github.com/l3uddz/nabarr/build.Timestamp={{ .Timestamp }}"
flags: flags:
- -trimpath - -trimpath

View File

@@ -38,7 +38,7 @@ ${BUILD_PATH}/${CMD}: ${GO_FILES} go.sum
CGO_ENABLED=${CGO} go build \ CGO_ENABLED=${CGO} go build \
-mod vendor \ -mod vendor \
-trimpath \ -trimpath \
-ldflags "-s -w -X main.Version=${VERSION} -X main.GitCommit=${GIT_COMMIT} -X main.Timestamp=${TIMESTAMP}" \ -ldflags "-s -w -X github.com/l3uddz/nabarr/build.Version=${VERSION} -X github.com/l3uddz/nabarr/build.GitCommit=${GIT_COMMIT} -X github.com/l3uddz/nabarr/build.Timestamp=${TIMESTAMP}" \
-o ${BUILD_PATH}/${CMD} \ -o ${BUILD_PATH}/${CMD} \
./cmd/nabarr ./cmd/nabarr

7
build/build.go Normal file
View File

@@ -0,0 +1,7 @@
package build
var (
Version string
Timestamp string
GitCommit string
)

View File

@@ -6,6 +6,7 @@ import (
"github.com/alecthomas/kong" "github.com/alecthomas/kong"
"github.com/goccy/go-yaml" "github.com/goccy/go-yaml"
"github.com/l3uddz/nabarr" "github.com/l3uddz/nabarr"
"github.com/l3uddz/nabarr/build"
"github.com/l3uddz/nabarr/cache" "github.com/l3uddz/nabarr/cache"
"github.com/l3uddz/nabarr/cmd/nabarr/pvr" "github.com/l3uddz/nabarr/cmd/nabarr/pvr"
"github.com/l3uddz/nabarr/media" "github.com/l3uddz/nabarr/media"
@@ -28,10 +29,6 @@ type config struct {
} }
var ( var (
Version string
Timestamp string
GitCommit string
// CLI // CLI
cli struct { cli struct {
globals globals
@@ -67,7 +64,7 @@ func main() {
Compact: true, Compact: true,
}), }),
kong.Vars{ kong.Vars{
"version": fmt.Sprintf("%s (%s@%s)", Version, GitCommit, Timestamp), "version": fmt.Sprintf("%s (%s@%s)", build.Version, build.GitCommit, build.Timestamp),
"config_file": filepath.Join(defaultConfigPath(), "config.yml"), "config_file": filepath.Join(defaultConfigPath(), "config.yml"),
"cache_file": filepath.Join(defaultConfigPath(), "cache"), "cache_file": filepath.Join(defaultConfigPath(), "cache"),
"log_file": filepath.Join(defaultConfigPath(), "activity.log"), "log_file": filepath.Join(defaultConfigPath(), "activity.log"),

View File

@@ -5,6 +5,7 @@ import (
"fmt" "fmt"
"github.com/alecthomas/kong" "github.com/alecthomas/kong"
"github.com/blang/semver" "github.com/blang/semver"
"github.com/l3uddz/nabarr/build"
"github.com/rhysd/go-github-selfupdate/selfupdate" "github.com/rhysd/go-github-selfupdate/selfupdate"
"os" "os"
) )
@@ -15,7 +16,7 @@ func (u updateFlag) Decode(ctx *kong.DecodeContext) error { return nil }
func (u updateFlag) IsBool() bool { return true } func (u updateFlag) IsBool() bool { return true }
func (u updateFlag) BeforeApply(app *kong.Kong, vars kong.Vars) error { func (u updateFlag) BeforeApply(app *kong.Kong, vars kong.Vars) error {
// parse current version // parse current version
v, err := semver.Parse(Version) v, err := semver.Parse(build.Version)
if err != nil { if err != nil {
fmt.Printf("Failed parsing current build version: %v\n", err) fmt.Printf("Failed parsing current build version: %v\n", err)
app.Exit(1) app.Exit(1)
@@ -33,7 +34,7 @@ func (u updateFlag) BeforeApply(app *kong.Kong, vars kong.Vars) error {
// check version // check version
if !found || latest.Version.LTE(v) { if !found || latest.Version.LTE(v) {
fmt.Printf("Already using the latest version: %v\n", Version) fmt.Printf("Already using the latest version: %v\n", build.Version)
app.Exit(0) app.Exit(0)
return nil return nil
} }

View File

@@ -2,6 +2,7 @@ package util
import ( import (
"github.com/hashicorp/go-retryablehttp" "github.com/hashicorp/go-retryablehttp"
"github.com/l3uddz/nabarr/build"
"github.com/rs/zerolog" "github.com/rs/zerolog"
"go.uber.org/ratelimit" "go.uber.org/ratelimit"
"net/http" "net/http"
@@ -14,6 +15,9 @@ func NewRetryableHttpClient(timeout time.Duration, rl ratelimit.Limiter, log *ze
retryClient.RetryWaitMin = 1 * time.Second retryClient.RetryWaitMin = 1 * time.Second
retryClient.RetryWaitMax = 10 * time.Second retryClient.RetryWaitMax = 10 * time.Second
retryClient.RequestLogHook = func(l retryablehttp.Logger, request *http.Request, i int) { retryClient.RequestLogHook = func(l retryablehttp.Logger, request *http.Request, i int) {
// set user-agent
request.Header.Set("User-Agent", "nabarr/"+build.Version)
// rate limit // rate limit
if rl != nil { if rl != nil {
rl.Take() rl.Take()