Files
EdgeCommon/pkg/iplibrary/reader_result.go

192 lines
3.9 KiB
Go
Raw Normal View History

// Copyright 2022 Liuxiangchao iwind.liu@gmail.com. All rights reserved. Official site: https://goedge.cn .
package iplibrary
import (
"github.com/iwind/TeaGo/lists"
"strings"
)
type QueryResult struct {
item *ipItem
2022-08-14 19:42:05 +08:00
meta *Meta
}
func (this *QueryResult) IsOk() bool {
return this.item != nil
}
func (this *QueryResult) CountryId() int64 {
if this.item != nil {
2022-08-22 08:31:53 +08:00
return int64(this.item.Region.CountryId)
}
return 0
}
2022-08-14 19:42:05 +08:00
func (this *QueryResult) CountryName() string {
if this.item == nil {
return ""
}
2022-08-22 08:31:53 +08:00
if this.item.Region.CountryId > 0 {
var country = this.meta.CountryWithId(this.item.Region.CountryId)
2022-08-14 19:42:05 +08:00
if country != nil {
return country.Name
}
}
return ""
}
func (this *QueryResult) CountryCodes() []string {
if this.item == nil {
return nil
}
2022-08-22 08:31:53 +08:00
if this.item.Region.CountryId > 0 {
var country = this.meta.CountryWithId(this.item.Region.CountryId)
if country != nil {
return country.Codes
}
}
return nil
}
func (this *QueryResult) ProvinceId() int64 {
if this.item != nil {
2022-08-22 08:31:53 +08:00
return int64(this.item.Region.ProvinceId)
}
return 0
}
2022-08-14 19:42:05 +08:00
func (this *QueryResult) ProvinceName() string {
if this.item == nil {
return ""
}
2022-08-22 08:31:53 +08:00
if this.item.Region.ProvinceId > 0 {
var province = this.meta.ProvinceWithId(this.item.Region.ProvinceId)
2022-08-14 19:42:05 +08:00
if province != nil {
return province.Name
}
}
return ""
}
func (this *QueryResult) ProvinceCodes() []string {
if this.item == nil {
return nil
}
2022-08-22 08:31:53 +08:00
if this.item.Region.ProvinceId > 0 {
var province = this.meta.ProvinceWithId(this.item.Region.ProvinceId)
if province != nil {
return province.Codes
}
}
return nil
}
func (this *QueryResult) CityId() int64 {
if this.item != nil {
2022-08-22 08:31:53 +08:00
return int64(this.item.Region.CityId)
}
return 0
}
2022-08-14 19:42:05 +08:00
func (this *QueryResult) CityName() string {
if this.item == nil {
return ""
}
2022-08-22 08:31:53 +08:00
if this.item.Region.CityId > 0 {
var city = this.meta.CityWithId(this.item.Region.CityId)
2022-08-14 19:42:05 +08:00
if city != nil {
return city.Name
}
}
return ""
}
func (this *QueryResult) TownId() int64 {
if this.item != nil {
2022-08-22 08:31:53 +08:00
return int64(this.item.Region.TownId)
}
return 0
}
2022-08-14 19:42:05 +08:00
func (this *QueryResult) TownName() string {
if this.item == nil {
return ""
}
2022-08-22 08:31:53 +08:00
if this.item.Region.TownId > 0 {
var town = this.meta.TownWithId(this.item.Region.TownId)
2022-08-14 19:42:05 +08:00
if town != nil {
return town.Name
}
}
return ""
}
func (this *QueryResult) ProviderId() int64 {
if this.item != nil {
2022-08-22 08:31:53 +08:00
return int64(this.item.Region.ProviderId)
}
return 0
}
2022-08-14 19:42:05 +08:00
func (this *QueryResult) ProviderName() string {
if this.item == nil {
return ""
}
2022-08-22 08:31:53 +08:00
if this.item.Region.ProviderId > 0 {
var provider = this.meta.ProviderWithId(this.item.Region.ProviderId)
2022-08-14 19:42:05 +08:00
if provider != nil {
return provider.Name
}
}
return ""
}
func (this *QueryResult) ProviderCodes() []string {
if this.item == nil {
return nil
}
2022-08-22 08:31:53 +08:00
if this.item.Region.ProviderId > 0 {
var provider = this.meta.ProviderWithId(this.item.Region.ProviderId)
if provider != nil {
return provider.Codes
}
}
return nil
}
func (this *QueryResult) Summary() string {
if this.item == nil {
return ""
}
var pieces = []string{}
var countryName = this.CountryName()
var provinceName = this.ProvinceName()
var cityName = this.CityName()
var townName = this.TownName()
var providerName = this.ProviderName()
if len(countryName) > 0 {
pieces = append(pieces, countryName)
}
if len(provinceName) > 0 && !lists.ContainsString(pieces, provinceName) {
pieces = append(pieces, provinceName)
}
if len(cityName) > 0 && !lists.ContainsString(pieces, cityName) && !lists.ContainsString(pieces, strings.TrimSuffix(cityName, "市")) {
pieces = append(pieces, cityName)
}
if len(townName) > 0 && !lists.ContainsString(pieces, townName) && !lists.ContainsString(pieces, strings.TrimSuffix(townName, "县")) {
pieces = append(pieces, cityName)
}
if len(providerName) > 0 && !lists.ContainsString(pieces, providerName) {
if len(pieces) > 0 {
pieces = append(pieces, "|")
}
pieces = append(pieces, providerName)
}
return strings.Join(pieces, " ")
}