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