aboutsummaryrefslogtreecommitdiff
path: root/web
diff options
context:
space:
mode:
authorChristine Dodrill <me@christine.website>2019-04-08 16:05:06 +0000
committerChristine Dodrill <me@christine.website>2019-04-08 16:12:50 +0000
commitf5e9eded374394b7510b2492dc729d7952083a53 (patch)
tree6f196022eee050068151a4971734f0b3940b60f2 /web
parent9f53168d9af58b206fadbb1636e9ea0772f8730f (diff)
downloadx-f5e9eded374394b7510b2492dc729d7952083a53.tar.xz
x-f5e9eded374394b7510b2492dc729d7952083a53.zip
dnsd: include user agent with requestsv1.0.3
Diffstat (limited to 'web')
-rw-r--r--web/user_agent.go22
-rw-r--r--web/user_agent_test.go2
2 files changed, 19 insertions, 5 deletions
diff --git a/web/user_agent.go b/web/user_agent.go
index 8e4bd4c..99885a4 100644
--- a/web/user_agent.go
+++ b/web/user_agent.go
@@ -4,16 +4,30 @@ import (
"fmt"
"net/http"
"os"
- "path/filepath"
"runtime"
+ "time"
+
+ "github.com/celrenheit/sandflake"
+)
+
+var (
+ startID = sandflake.Next()
+ hostname = "<unknown>"
+ started = time.Now()
)
func init() {
http.DefaultTransport = &userAgentTransport{http.DefaultTransport}
+
+ name, _ := os.Hostname()
+ if name != "" {
+ hostname = name
+ }
}
-func genUserAgent() string {
- return fmt.Sprintf("github.com-Xe-x (%s/%s/%s; %s/bot; +https://github.com/Xe/x/blob/master/web/x.md)", runtime.Version(), runtime.GOOS, runtime.GOARCH, filepath.Base(os.Args[0]))
+// GenUserAgent creates a unique User-Agent string for outgoing HTTP requests.
+func GenUserAgent() string {
+ return fmt.Sprintf("github.com-Xe-x (%s/%s/%s; %s; +https://github.com/Xe/x/blob/master/web/x.md) Alive (%s; sandflake) Hostname/%s Started (%s)", runtime.Version(), runtime.GOOS, runtime.GOARCH, os.Args[0], startID.String(), hostname, started.Format(time.RFC3339))
}
type userAgentTransport struct {
@@ -21,6 +35,6 @@ type userAgentTransport struct {
}
func (uat userAgentTransport) RoundTrip(r *http.Request) (*http.Response, error) {
- r.Header.Set("User-Agent", genUserAgent())
+ r.Header.Set("User-Agent", GenUserAgent())
return uat.rt.RoundTrip(r)
}
diff --git a/web/user_agent_test.go b/web/user_agent_test.go
index e2ffca0..c2ecb6e 100644
--- a/web/user_agent_test.go
+++ b/web/user_agent_test.go
@@ -3,7 +3,7 @@ package web
import "testing"
func TestGenUserAgent(t *testing.T) {
- ua := genUserAgent()
+ ua := GenUserAgent()
if ua == "" {
t.Fatal("no user agent generated")
}