From 018c1e5dee4ea885e587548a0f1cd5d42492e4a4 Mon Sep 17 00:00:00 2001 From: GoEdgeLab Date: Thu, 24 Aug 2023 11:50:47 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E6=A3=80=E6=9F=A5=E4=B8=AD?= =?UTF-8?q?=E5=9B=BD=E7=89=B9=E6=AE=8A=E5=8C=BA=E5=9F=9F=E7=9A=84=E5=87=BD?= =?UTF-8?q?=E6=95=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pkg/serverconfigs/regionconfigs/china.go | 17 ++++++++++++++++ pkg/serverconfigs/regionconfigs/china_test.go | 20 +++++++++++++++++++ 2 files changed, 37 insertions(+) create mode 100644 pkg/serverconfigs/regionconfigs/china_test.go diff --git a/pkg/serverconfigs/regionconfigs/china.go b/pkg/serverconfigs/regionconfigs/china.go index c10df3c..9f1b9f6 100644 --- a/pkg/serverconfigs/regionconfigs/china.go +++ b/pkg/serverconfigs/regionconfigs/china.go @@ -39,3 +39,20 @@ func CheckRegionProvinceIsInChinaMainland(regionProvinceId RegionProvinceId) boo regionProvinceId != RegionChinaProvinceIdMO && regionProvinceId != RegionChinaProvinceIdTW } + +func MatchUserRegion(userCountryId int64, userProvinceId int64, regionId int64) bool { + if userCountryId == RegionChinaId { + switch regionId { + case RegionChinaIdMainland: // china.mainland + return CheckRegionProvinceIsInChinaMainland(userProvinceId) + case RegionChinaIdHK: // china.hk + return userProvinceId == RegionChinaProvinceIdHK + case RegionChinaIdMO: // china.mo + return userProvinceId == RegionChinaProvinceIdMO + case RegionChinaIdTW: // china.tw + return userProvinceId == RegionChinaProvinceIdTW + } + } + + return userCountryId == regionId +} diff --git a/pkg/serverconfigs/regionconfigs/china_test.go b/pkg/serverconfigs/regionconfigs/china_test.go new file mode 100644 index 0000000..402e6fa --- /dev/null +++ b/pkg/serverconfigs/regionconfigs/china_test.go @@ -0,0 +1,20 @@ +// Copyright 2023 GoEdge CDN goedge.cdn@gmail.com. All rights reserved. Official site: https://goedge.cn . + +package regionconfigs_test + +import ( + "github.com/TeaOSLab/EdgeCommon/pkg/serverconfigs/regionconfigs" + "github.com/iwind/TeaGo/assert" + "testing" +) + +func TestMatchUserRegion(t *testing.T) { + var a = assert.NewAssertion(t) + a.IsTrue(regionconfigs.MatchUserRegion(regionconfigs.RegionChinaId, 1, 1)) + a.IsTrue(regionconfigs.MatchUserRegion(regionconfigs.RegionChinaId, 1, regionconfigs.RegionChinaIdMainland)) + a.IsTrue(regionconfigs.MatchUserRegion(regionconfigs.RegionChinaId, regionconfigs.RegionChinaProvinceIdHK, regionconfigs.RegionChinaIdHK)) + a.IsTrue(regionconfigs.MatchUserRegion(regionconfigs.RegionChinaId, regionconfigs.RegionChinaProvinceIdMO, regionconfigs.RegionChinaIdMO)) + a.IsTrue(regionconfigs.MatchUserRegion(regionconfigs.RegionChinaId, regionconfigs.RegionChinaProvinceIdTW, regionconfigs.RegionChinaIdTW)) + a.IsFalse(regionconfigs.MatchUserRegion(regionconfigs.RegionChinaId, 0, regionconfigs.RegionChinaIdHK)) + a.IsFalse(regionconfigs.MatchUserRegion(regionconfigs.RegionChinaId, 1, regionconfigs.RegionChinaIdHK)) +}