aboutsummaryrefslogtreecommitdiff
path: root/web
diff options
context:
space:
mode:
authorChristine Dodrill <me@christine.website>2019-11-28 18:22:38 +0000
committerChristine Dodrill <me@christine.website>2019-11-28 18:24:54 +0000
commit389f7b5a7764e3d0ca050d440393daadac8d176d (patch)
tree1b6e9d1d4829e3ee15a6705d48510fc96057a561 /web
parent2dfde39f006f8e6fa69d68dd72dd10d67e9b1cfd (diff)
downloadx-389f7b5a7764e3d0ca050d440393daadac8d176d.tar.xz
x-389f7b5a7764e3d0ca050d440393daadac8d176d.zip
web: move useragent to its own package
Diffstat (limited to 'web')
-rw-r--r--web/user_agent.go40
-rw-r--r--web/useragent/user_agent.go43
-rw-r--r--web/useragent/user_agent_test.go (renamed from web/user_agent_test.go)2
-rw-r--r--web/x.md4
4 files changed, 44 insertions, 45 deletions
diff --git a/web/user_agent.go b/web/user_agent.go
deleted file mode 100644
index 249f6b7..0000000
--- a/web/user_agent.go
+++ /dev/null
@@ -1,40 +0,0 @@
-package web
-
-import (
- "fmt"
- "net/http"
- "os"
- "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
- }
-}
-
-// 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://within.website/.x.botinfo) 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 {
- rt http.RoundTripper
-}
-
-func (uat userAgentTransport) RoundTrip(r *http.Request) (*http.Response, error) {
- r.Header.Set("User-Agent", GenUserAgent())
- return uat.rt.RoundTrip(r)
-}
diff --git a/web/useragent/user_agent.go b/web/useragent/user_agent.go
new file mode 100644
index 0000000..0f521c9
--- /dev/null
+++ b/web/useragent/user_agent.go
@@ -0,0 +1,43 @@
+package useragent
+
+import (
+ "fmt"
+ "net/http"
+ "os"
+ "runtime"
+)
+
+var (
+ hostname = "<unknown>"
+)
+
+func init() {
+ name, _ := os.Hostname()
+ if name != "" {
+ hostname = name
+ }
+}
+
+// GenUserAgent creates a unique User-Agent string for outgoing HTTP requests.
+func GenUserAgent(prefix, infoURL string) string {
+ return fmt.Sprintf(
+ "%s (%s/%s/%s; %s; +%s) Hostname/%s",
+ prefix, runtime.Version(), runtime.GOOS, runtime.GOARCH, infoURL,
+ os.Args[0], hostname,
+ )
+}
+
+// Transport wraps a http transport with user agent information.
+func Transport(prefix, infoURL string, rt http.RoundTripper) http.RoundTripper {
+ return userAgentTransport{prefix: prefix, rt: rt}
+}
+
+type userAgentTransport struct {
+ prefix, infoURL string
+ rt http.RoundTripper
+}
+
+func (uat userAgentTransport) RoundTrip(r *http.Request) (*http.Response, error) {
+ r.Header.Set("User-Agent", GenUserAgent(uat.prefix))
+ return uat.rt.RoundTrip(r)
+}
diff --git a/web/user_agent_test.go b/web/useragent/user_agent_test.go
index c2ecb6e..702bcf7 100644
--- a/web/user_agent_test.go
+++ b/web/useragent/user_agent_test.go
@@ -1,4 +1,4 @@
-package web
+package useragent
import "testing"
diff --git a/web/x.md b/web/x.md
deleted file mode 100644
index 09a7165..0000000
--- a/web/x.md
+++ /dev/null
@@ -1,4 +0,0 @@
-# x repo bots
-
-Hello, if you are reading this, you have found this URL in your access logs.
-If one of these programs is doing something you don't want them to do, please [contact me](https://christine.website/contact) or open an issue [on this repo](https://github.com/Xe/x).