Browse Source

fix(修正命名): country调整为city

main
xiaoqidun 1 month ago
parent
commit
a95d612bbe
  1. 22
      qqwry.go
  2. 4
      qqwry_test.go

22
qqwry.go

@ -24,8 +24,8 @@ const (
)
type cache struct {
Country string
Area string
City string
Area string
}
func byte3ToUInt32(data []byte) uint32 {
@ -43,9 +43,9 @@ func gb18030Decode(src []byte) string {
}
// QueryIP 从内存或缓存查询IP
func QueryIP(queryIp string) (country string, area string, err error) {
func QueryIP(queryIp string) (city string, area string, err error) {
if v, ok := ipCache.Load(queryIp); ok {
country = v.(cache).Country
city = v.(cache).City
area = v.(cache).Area
return
}
@ -99,19 +99,19 @@ func QueryIP(queryIp string) (country string, area string, err error) {
}
for i := posCA; i < dataLen; i++ {
if data[i] == 0 {
country = string(data[posCA:i])
city = string(data[posCA:i])
break
}
}
if mode != redirectMode2 {
posC += uint32(len(country) + 1)
posC += uint32(len(city) + 1)
}
areaPos = posC
case redirectMode2:
posCA := byte3ToUInt32(data[posM+1 : posM+4])
for i := posCA; i < dataLen; i++ {
if data[i] == 0 {
country = string(data[posCA:i])
city = string(data[posCA:i])
break
}
}
@ -120,11 +120,11 @@ func QueryIP(queryIp string) (country string, area string, err error) {
posCA := offset + 4
for i := posCA; i < dataLen; i++ {
if data[i] == 0 {
country = string(data[posCA:i])
city = string(data[posCA:i])
break
}
}
areaPos = offset + uint32(5+len(country))
areaPos = offset + uint32(5+len(city))
}
areaMode := data[areaPos]
if areaMode == redirectMode1 || areaMode == redirectMode2 {
@ -138,9 +138,9 @@ func QueryIP(queryIp string) (country string, area string, err error) {
}
}
}
country = gb18030Decode([]byte(country))
city = gb18030Decode([]byte(city))
area = gb18030Decode([]byte(area))
ipCache.Store(queryIp, cache{Country: country, Area: area})
ipCache.Store(queryIp, cache{City: city, Area: area})
return
}

4
qqwry_test.go

@ -12,9 +12,9 @@ func init() {
func TestQueryIP(t *testing.T) {
queryIp := "1.1.1.1"
country, area, err := QueryIP(queryIp)
city, area, err := QueryIP(queryIp)
if err != nil {
t.Fatal(err)
}
t.Log(country, area)
t.Logf("城市:%s,区域:%s", city, area)
}
Loading…
Cancel
Save