From acb690123f9012811db3cb05f0219a717495d9fb Mon Sep 17 00:00:00 2001 From: "Dennis C. Oosterhof" Date: Thu, 24 Apr 2025 14:20:23 +0200 Subject: [PATCH] Define the UA once --- resolver/helpers.go | 16 +++++++++++----- resolver/redirect.go | 2 +- resolver/resolver.go | 2 +- 3 files changed, 13 insertions(+), 7 deletions(-) diff --git a/resolver/helpers.go b/resolver/helpers.go index 846ed10..523b2c9 100644 --- a/resolver/helpers.go +++ b/resolver/helpers.go @@ -14,6 +14,12 @@ import ( "github.com/tidwall/gjson" ) +// Define common constants +const ( + // UserAgent is the user agent string used for all HTTP requests + UserAgent = "FediResolve/1.0 (https://melroy.org)" +) + // fetchActivityPubObjectWithSignature is a helper function that always signs HTTP requests // This is the preferred way to fetch ActivityPub content as many instances require signatures func (r *Resolver) fetchActivityPubObjectWithSignature(objectURL string) (string, error) { @@ -59,7 +65,7 @@ func (r *Resolver) fetchActivityPubObjectWithSignature(objectURL string) (string // Set headers req.Header.Set("Accept", "application/activity+json, application/ld+json; profile=\"https://www.w3.org/ns/activitystreams\", application/json") - req.Header.Set("User-Agent", "FediResolve/1.0 (https://github.com/dennis/fediresolve)") + req.Header.Set("User-Agent", UserAgent) req.Header.Set("Date", time.Now().UTC().Format(http.TimeFormat)) // Sign the request @@ -135,7 +141,7 @@ func (r *Resolver) fetchActivityPubObjectDirect(objectURL string) (string, error // Set Accept headers to request ActivityPub data req.Header.Set("Accept", "application/activity+json, application/ld+json; profile=\"https://www.w3.org/ns/activitystreams\", application/json") - req.Header.Set("User-Agent", "FediResolve/1.0 (https://github.com/dennis/fediresolve)") + req.Header.Set("User-Agent", UserAgent) // Perform the request fmt.Printf("Sending direct request with headers: %v\n", req.Header) @@ -225,7 +231,7 @@ func (r *Resolver) fetchWithSignature(objectURL string) (string, error) { // Set headers req.Header.Set("Accept", "application/activity+json, application/ld+json; profile=\"https://www.w3.org/ns/activitystreams\", application/json") - req.Header.Set("User-Agent", "FediResolve/1.0 (https://github.com/dennis/fediresolve)") + req.Header.Set("User-Agent", UserAgent) req.Header.Set("Date", time.Now().UTC().Format(http.TimeFormat)) // Sign the request @@ -352,7 +358,7 @@ func (r *Resolver) fetchActorData(actorURL string) (map[string]interface{}, erro // Set headers req.Header.Set("Accept", "application/activity+json, application/ld+json; profile=\"https://www.w3.org/ns/activitystreams\", application/json") - req.Header.Set("User-Agent", "FediResolve/1.0 (https://github.com/dennis/fediresolve)") + req.Header.Set("User-Agent", UserAgent) // Send the request resp, err := r.client.Do(req) @@ -457,7 +463,7 @@ func (r *Resolver) resolveActorViaWebFinger(username, domain string) (string, er // Set headers req.Header.Set("Accept", "application/jrd+json, application/json") - req.Header.Set("User-Agent", "FediResolve/1.0 (https://github.com/dennis/fediresolve)") + req.Header.Set("User-Agent", UserAgent) // Send the request resp, err := r.client.Do(req) diff --git a/resolver/redirect.go b/resolver/redirect.go index cb2b6bc..f451dfc 100644 --- a/resolver/redirect.go +++ b/resolver/redirect.go @@ -26,7 +26,7 @@ func (r *Resolver) checkForRedirect(inputURL string) (string, error) { } // Set standard browser-like headers - req.Header.Set("User-Agent", "FediResolve/1.0 (https://github.com/dennis/fediresolve)") + req.Header.Set("User-Agent", UserAgent) req.Header.Set("Accept", "text/html,application/xhtml+xml,application/xml") // Perform the request diff --git a/resolver/resolver.go b/resolver/resolver.go index 2db7176..d54e189 100644 --- a/resolver/resolver.go +++ b/resolver/resolver.go @@ -104,7 +104,7 @@ func (r *Resolver) resolveHandle(handle string) (string, error) { // Set appropriate headers for WebFinger req.Header.Set("Accept", "application/jrd+json, application/json") - req.Header.Set("User-Agent", "FediResolve/1.0 (https://github.com/dennis/fediresolve)") + req.Header.Set("User-Agent", UserAgent) // Fetch WebFinger data resp, err := r.client.Do(req)