This commit is contained in:
mats committed 2026-07-20 00:15:42 +02:00
1 parent fc5eefbe5e
commit c4c78f6646
2 files changed
+50

No files matched your search

+21
View File
@@ -0,0 +1,21 @@
package conv
import "strings"
// CountryFromHost extracts a country code from a hostname (or URL) by looking
// for known subdomain suffixes. Returns "se" when no country is detected.
//
// This replaces three duplicated implementations across the cart, checkout,
// and tracking services. The detection is deliberately coarse — hostnames
// like "shop-no.example.com" and URLs like "https://shop-no.example.com/page"
// both match.
func CountryFromHost(host string) string {
lower := strings.ToLower(host)
if strings.Contains(lower, "-no") {
return "no"
}
if strings.Contains(lower, "-se") {
return "se"
}
return "se"
}
+29
View File
@@ -0,0 +1,29 @@
package conv
import "testing"
func TestCountryFromHost(t *testing.T) {
tests := []struct {
host string
want string
}{
{"shop-no.example.com", "no"},
{"SHOP-NO.EXAMPLE.COM", "no"},
{"shop-se.example.com", "se"},
{"shop-se", "se"},
{"shop-no", "no"},
{"example.com", "se"},
{"", "se"},
{"localhost", "se"},
{"https://shop-no.example.com/page", "no"},
{"https://shop-se.example.com", "se"},
{"-no-", "no"},
{"nose.example.com", "se"}, // no "-no" substring — "nose" has no hyphen
}
for _, tt := range tests {
got := CountryFromHost(tt.host)
if got != tt.want {
t.Errorf("CountryFromHost(%q) = %q, want %q", tt.host, got, tt.want)
}
}
}