update
This commit is contained in:
1 parent
fc5eefbe5e
commit
c4c78f6646
2 files changed
+50
No files matched your search
@@ -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"
|
||||
}
|
||||
@@ -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)
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user