callcodes.go
package countries
import (
"encoding/json"
"fmt"
"strconv"
)
// CallCode - calling code of country
type CallCode int64 // int64 for database/sql/driver.Valuer compatibility
// CallCodeInfo - all info about CallCode
type CallCodeInfo struct {
Code CallCode
Countries []CountryCode
}
// String - implements fmt.Stringer, returns a calling phone code in string, example for UK: "+44"
func (c CallCode) String() string {
return "+" + strconv.FormatInt(int64(c), 10)
}
// Type implements Typer interface
func (_ CallCode) Type() string {
return TypeCallCode
}
// Info - returns CallCodeInfo
func (c CallCode) Info() *CallCodeInfo {
return &CallCodeInfo{
Code: c,
Countries: c.Countries(),
}
}
// TotalCallCodes - returns number of call codes in the package, countries.TotalCallCodes() == len(countries.AllCallCodes()), but static value for performance
func TotalCallCodes() int {
return 264
}
// AllCallCodes - return all countries call phone codes
func AllCallCodes() []CallCode {
return []CallCode{
CallCodeUnknown,
CallCode1,
CallCode7,
CallCode20,
CallCode27,
CallCode30,
CallCode31,
CallCode32,
CallCode33,
CallCode34,
CallCode36,
CallCode38,
CallCode39,
CallCode40,
CallCode41,
CallCode43,
CallCode44,
CallCode45,
CallCode46,
CallCode47,
CallCode48,
CallCode49,
CallCode51,
CallCode52,
CallCode53,
CallCode54,
CallCode55,
CallCode56,
CallCode57,
CallCode58,
CallCode60,
CallCode61,
CallCode62,
CallCode63,
CallCode64,
CallCode65,
CallCode66,
CallCode81,
CallCode82,
CallCode84,
CallCode86,
CallCode90,
CallCode91,
CallCode92,
CallCode93,
CallCode94,
CallCode95,
CallCode98,
CallCode211,
CallCode212,
CallCode213,
CallCode216,
CallCode218,
CallCode220,
CallCode221,
CallCode222,
CallCode223,
CallCode224,
CallCode225,
CallCode226,
CallCode227,
CallCode228,
CallCode229,
CallCode230,
CallCode231,
CallCode232,
CallCode233,
CallCode234,
CallCode235,
CallCode236,
CallCode237,
CallCode238,
CallCode239,
CallCode240,
CallCode241,
CallCode242,
CallCode243,
CallCode244,
CallCode245,
CallCode246,
CallCode248,
CallCode249,
CallCode250,
CallCode251,
CallCode252,
CallCode253,
CallCode254,
CallCode255,
CallCode256,
CallCode257,
CallCode258,
CallCode260,
CallCode261,
CallCode262,
CallCode263,
CallCode264,
CallCode265,
CallCode266,
CallCode267,
CallCode268,
CallCode269,
CallCode290,
CallCode291,
CallCode297,
CallCode298,
CallCode299,
CallCode350,
CallCode351,
CallCode352,
CallCode353,
CallCode354,
CallCode355,
CallCode356,
CallCode357,
CallCode358,
CallCode359,
CallCode370,
CallCode371,
CallCode372,
CallCode373,
CallCode374,
CallCode375,
CallCode376,
CallCode377,
CallCode378,
CallCode380,
CallCode381,
CallCode382,
CallCode383,
CallCode385,
CallCode386,
CallCode387,
CallCode389,
CallCode420,
CallCode421,
CallCode423,
CallCode500,
CallCode501,
CallCode502,
CallCode503,
CallCode504,
CallCode505,
CallCode506,
CallCode507,
CallCode508,
CallCode509,
CallCode590,
CallCode591,
CallCode592,
CallCode593,
CallCode594,
CallCode595,
CallCode596,
CallCode597,
CallCode598,
CallCode599,
CallCode670,
CallCode672,
CallCode673,
CallCode674,
CallCode675,
CallCode676,
CallCode677,
CallCode678,
CallCode679,
CallCode680,
CallCode681,
CallCode682,
CallCode683,
CallCode685,
CallCode686,
CallCode687,
CallCode688,
CallCode689,
CallCode690,
CallCode691,
CallCode692,
CallCode800,
CallCode850,
CallCode852,
CallCode853,
CallCode855,
CallCode856,
CallCode870,
CallCode875,
CallCode876,
CallCode877,
CallCode878,
CallCode879,
CallCode880,
CallCode881,
CallCode882,
CallCode883,
CallCode886,
CallCode888,
CallCode960,
CallCode961,
CallCode962,
CallCode963,
CallCode964,
CallCode965,
CallCode966,
CallCode967,
CallCode968,
CallCode970,
CallCode971,
CallCode972,
CallCode973,
CallCode974,
CallCode975,
CallCode976,
CallCode977,
CallCode979,
CallCode991,
CallCode992,
CallCode994,
CallCode995,
CallCode996,
CallCode998,
CallCode1242,
CallCode1246,
CallCode1264,
CallCode1268,
CallCode1284,
CallCode1340,
CallCode1345,
CallCode1441,
CallCode1473,
CallCode1649,
CallCode1658,
CallCode1664,
CallCode1670,
CallCode1671,
CallCode1684,
CallCode1721,
CallCode1758,
CallCode1767,
CallCode1784,
CallCode1787,
CallCode1808,
CallCode1809,
CallCode1829,
CallCode1849,
CallCode1868,
CallCode1869,
CallCode1876,
CallCode1939,
CallCode4779,
CallCode5993,
CallCode5994,
CallCode5995,
CallCode5997,
CallCode5998,
CallCode5999,
CallCode993,
CallCode35818,
CallCode262269,
CallCode262639,
CallCode441481,
CallCode441534,
CallCode441624,
CallCode3906698,
CallCode6189162,
CallCode6189164,
}
}
// AllCallCodesInfo - return all countries call phone codes as []CallCodeInfo
func AllCallCodesInfo() []*CallCodeInfo {
all := AllCallCodes()
codes := make([]*CallCodeInfo, 0, len(all))
for _, v := range all {
codes = append(codes, v.Info())
}
return codes
}
// Countries - returns CountryCodes of CallCode
//nolint:gocyclo
func (c CallCode) Countries() []CountryCode { //nolint:gocyclo
switch c {
case CallCode1:
return []CountryCode{ATF, CAN, UMI, USA}
case CallCode1808:
return []CountryCode{USA}
case CallCode1242:
return []CountryCode{BHS}
case CallCode1246:
return []CountryCode{BRB}
case CallCode1264:
return []CountryCode{AIA}
case CallCode1268:
return []CountryCode{ATG}
case CallCode1284:
return []CountryCode{VGB}
case CallCode1340:
return []CountryCode{VIR}
case CallCode1345:
return []CountryCode{CYM}
case CallCode1441:
return []CountryCode{BMU}
case CallCode1473:
return []CountryCode{GRD}
case CallCode1649:
return []CountryCode{TCA}
case CallCode1664:
return []CountryCode{MSR}
case CallCode1670:
return []CountryCode{MNP}
case CallCode1671:
return []CountryCode{GUM}
case CallCode1684:
return []CountryCode{ASM}
case CallCode1758:
return []CountryCode{LCA}
case CallCode1767:
return []CountryCode{DMA}
case CallCode1784:
return []CountryCode{VCT}
case CallCode1787, CallCode1939:
return []CountryCode{PRI}
case CallCode1809, CallCode1829, CallCode1849:
return []CountryCode{DOM}
case CallCode1868:
return []CountryCode{TTO}
case CallCode1869:
return []CountryCode{KNA}
case CallCode1876, CallCode1658:
return []CountryCode{JAM}
case CallCode20:
return []CountryCode{EGY}
case CallCode211:
return []CountryCode{SSD}
case CallCode212:
return []CountryCode{ESH, MAR}
case CallCode213:
return []CountryCode{DZA}
case CallCode216:
return []CountryCode{TUN}
case CallCode218:
return []CountryCode{LBY}
case CallCode220:
return []CountryCode{GMB}
case CallCode221:
return []CountryCode{SEN}
case CallCode222:
return []CountryCode{MRT}
case CallCode223:
return []CountryCode{MLI}
case CallCode224:
return []CountryCode{GIN}
case CallCode225:
return []CountryCode{CIV}
case CallCode226:
return []CountryCode{BFA}
case CallCode227:
return []CountryCode{NER}
case CallCode228:
return []CountryCode{TGO}
case CallCode229:
return []CountryCode{BEN}
case CallCode230:
return []CountryCode{MUS}
case CallCode231:
return []CountryCode{LBR}
case CallCode232:
return []CountryCode{SLE}
case CallCode233:
return []CountryCode{GHA}
case CallCode234:
return []CountryCode{NGA}
case CallCode235:
return []CountryCode{TCD}
case CallCode236:
return []CountryCode{CAF}
case CallCode237:
return []CountryCode{CMR}
case CallCode238:
return []CountryCode{CPV}
case CallCode239:
return []CountryCode{STP}
case CallCode240:
return []CountryCode{GNQ}
case CallCode241:
return []CountryCode{GAB}
case CallCode242:
return []CountryCode{COG}
case CallCode243:
return []CountryCode{COD}
case CallCode244:
return []CountryCode{AGO}
case CallCode245:
return []CountryCode{GNB}
case CallCode246:
return []CountryCode{IOT}
case CallCode248:
return []CountryCode{SYC}
case CallCode249:
return []CountryCode{SDN}
case CallCode250:
return []CountryCode{RWA}
case CallCode251:
return []CountryCode{ETH}
case CallCode252:
return []CountryCode{SOM}
case CallCode253:
return []CountryCode{DJI}
case CallCode254:
return []CountryCode{KEN}
case CallCode255:
return []CountryCode{TZA}
case CallCode256:
return []CountryCode{UGA}
case CallCode257:
return []CountryCode{BDI}
case CallCode258:
return []CountryCode{MOZ}
case CallCode260:
return []CountryCode{ZMB}
case CallCode261:
return []CountryCode{MDG}
case CallCode262:
return []CountryCode{MYT, REU}
case CallCode262269, CallCode262639:
return []CountryCode{MYT}
case CallCode263:
return []CountryCode{ZWE}
case CallCode264:
return []CountryCode{NAM}
case CallCode265:
return []CountryCode{MWI}
case CallCode266:
return []CountryCode{LSO}
case CallCode267:
return []CountryCode{BWA}
case CallCode268:
return []CountryCode{SWZ}
case CallCode269:
return []CountryCode{COM}
case CallCode27:
return []CountryCode{ZAF}
case CallCode290:
return []CountryCode{SHN}
case CallCode291:
return []CountryCode{ERI}
case CallCode297, CallCode5998:
return []CountryCode{ABW}
case CallCode298:
return []CountryCode{FRO}
case CallCode299:
return []CountryCode{GRL}
case CallCode30:
return []CountryCode{GRC}
case CallCode31:
return []CountryCode{NLD}
case CallCode32:
return []CountryCode{BEL}
case CallCode33:
return []CountryCode{FRA}
case CallCode34:
return []CountryCode{ESP}
case CallCode350:
return []CountryCode{GIB}
case CallCode351:
return []CountryCode{PRT}
case CallCode352:
return []CountryCode{LUX}
case CallCode353:
return []CountryCode{IRL}
case CallCode354:
return []CountryCode{ISL}
case CallCode355:
return []CountryCode{ALB}
case CallCode356:
return []CountryCode{MLT}
case CallCode357:
return []CountryCode{CYP}
case CallCode358:
return []CountryCode{ALA, FIN}
case CallCode359:
return []CountryCode{BGR}
case CallCode36:
return []CountryCode{HUN}
case CallCode370:
return []CountryCode{LTU}
case CallCode371:
return []CountryCode{LVA}
case CallCode372:
return []CountryCode{EST}
case CallCode373:
return []CountryCode{MDA}
case CallCode374:
return []CountryCode{ARM}
case CallCode375:
return []CountryCode{BLR}
case CallCode376:
return []CountryCode{AND}
case CallCode377:
return []CountryCode{MCO}
case CallCode378:
return []CountryCode{SMR}
case CallCode38:
return []CountryCode{YUG}
case CallCode380:
return []CountryCode{UKR}
case CallCode381:
return []CountryCode{SRB}
case CallCode382:
return []CountryCode{MNE}
case CallCode383:
return []CountryCode{XKX}
case CallCode385:
return []CountryCode{HRV}
case CallCode386:
return []CountryCode{SVN}
case CallCode387:
return []CountryCode{BIH}
case CallCode389:
return []CountryCode{MKD}
case CallCode39:
return []CountryCode{ITA, VAT}
case CallCode40:
return []CountryCode{ROU}
case CallCode41:
return []CountryCode{CHE}
case CallCode420:
return []CountryCode{CZE}
case CallCode421:
return []CountryCode{SVK}
case CallCode423:
return []CountryCode{LIE}
case CallCode43:
return []CountryCode{AUT}
case CallCode44:
return []CountryCode{GBR, GGY, IMN, JEY, XSC, XWA}
case CallCode45:
return []CountryCode{DNK}
case CallCode46:
return []CountryCode{SWE}
case CallCode47:
return []CountryCode{BVT, NOR, SJM}
case CallCode48:
return []CountryCode{POL}
case CallCode49:
return []CountryCode{DEU}
case CallCode500:
return []CountryCode{FLK, SGS}
case CallCode501:
return []CountryCode{BLZ}
case CallCode502:
return []CountryCode{GTM}
case CallCode503:
return []CountryCode{SLV}
case CallCode504:
return []CountryCode{HND}
case CallCode505:
return []CountryCode{NIC}
case CallCode506:
return []CountryCode{CRI}
case CallCode507:
return []CountryCode{PAN}
case CallCode508:
return []CountryCode{SPM}
case CallCode509:
return []CountryCode{HTI}
case CallCode51:
return []CountryCode{PER}
case CallCode52:
return []CountryCode{MEX}
case CallCode53:
return []CountryCode{CUB}
case CallCode54:
return []CountryCode{ARG}
case CallCode55:
return []CountryCode{BRA}
case CallCode56:
return []CountryCode{CHL}
case CallCode57:
return []CountryCode{COL}
case CallCode58:
return []CountryCode{VEN}
case CallCode590:
return []CountryCode{BLM, GLP, MAF}
case CallCode591:
return []CountryCode{BOL}
case CallCode592:
return []CountryCode{GUY}
case CallCode593:
return []CountryCode{ECU}
case CallCode594:
return []CountryCode{GUF}
case CallCode595:
return []CountryCode{PRY}
case CallCode596:
return []CountryCode{MTQ}
case CallCode597:
return []CountryCode{SUR}
case CallCode598:
return []CountryCode{URY}
case CallCode599:
return []CountryCode{ANT, BES, CUW}
case CallCode60:
return []CountryCode{MYS}
case CallCode61:
return []CountryCode{AUS, CXR, CCK}
case CallCode62:
return []CountryCode{IDN}
case CallCode63:
return []CountryCode{PHL}
case CallCode64:
return []CountryCode{NZL, PCN}
case CallCode65:
return []CountryCode{SGP}
case CallCode66:
return []CountryCode{THA}
case CallCode670:
return []CountryCode{TLS}
case CallCode672:
return []CountryCode{ATA, CCK, NFK}
case CallCode673:
return []CountryCode{BRN}
case CallCode674:
return []CountryCode{NRU}
case CallCode675:
return []CountryCode{PNG}
case CallCode676:
return []CountryCode{TON}
case CallCode677:
return []CountryCode{SLB}
case CallCode678:
return []CountryCode{VUT}
case CallCode679:
return []CountryCode{FJI}
case CallCode680:
return []CountryCode{PLW}
case CallCode681:
return []CountryCode{WLF}
case CallCode682:
return []CountryCode{COK}
case CallCode683:
return []CountryCode{NIU}
case CallCode685:
return []CountryCode{WSM}
case CallCode686:
return []CountryCode{KIR}
case CallCode687:
return []CountryCode{NCL}
case CallCode688:
return []CountryCode{TUV}
case CallCode689:
return []CountryCode{PYF}
case CallCode690:
return []CountryCode{TKL}
case CallCode691:
return []CountryCode{FSM}
case CallCode692:
return []CountryCode{MHL}
case CallCode7:
return []CountryCode{KAZ, RUS}
case CallCode1721, CallCode5995:
return []CountryCode{SXM}
case CallCode4779:
return []CountryCode{SJM}
case CallCode5993, CallCode5994, CallCode5997:
return []CountryCode{BES}
case CallCode993:
return []CountryCode{TKM}
case CallCode81:
return []CountryCode{JPN}
case CallCode82:
return []CountryCode{KOR}
case CallCode84:
return []CountryCode{VNM}
case CallCode850:
return []CountryCode{PRK}
case CallCode852:
return []CountryCode{HKG}
case CallCode853:
return []CountryCode{MAC}
case CallCode855:
return []CountryCode{KHM}
case CallCode856:
return []CountryCode{LAO}
case CallCode86:
return []CountryCode{CHN}
case CallCode800:
return []CountryCode{NonCountryInternationalFreephone}
case CallCode870:
return []CountryCode{NonCountryInmarsat}
case CallCode875, CallCode876, CallCode877:
return []CountryCode{NonCountryMaritimeMobileService}
case CallCode878:
return []CountryCode{NonCountryUniversalPersonalTelecommunicationsServices}
case CallCode879:
return []CountryCode{NonCountryNationalNonCommercialPurposes}
case CallCode880:
return []CountryCode{BGD}
case CallCode881:
return []CountryCode{NonCountryGlobalMobileSatelliteSystem}
case CallCode882, CallCode883:
return []CountryCode{NonCountryInternationalNetworks}
case CallCode886:
return []CountryCode{TWN}
case CallCode90:
return []CountryCode{TUR}
case CallCode91:
return []CountryCode{IND}
case CallCode92:
return []CountryCode{PAK}
case CallCode93:
return []CountryCode{AFG}
case CallCode94:
return []CountryCode{LKA}
case CallCode95:
return []CountryCode{MMR}
case CallCode888:
return []CountryCode{NonCountryDisasterRelief}
case CallCode960:
return []CountryCode{MDV}
case CallCode961:
return []CountryCode{LBN}
case CallCode962:
return []CountryCode{JOR}
case CallCode963:
return []CountryCode{SYR}
case CallCode964:
return []CountryCode{IRQ}
case CallCode965:
return []CountryCode{KWT}
case CallCode966:
return []CountryCode{SAU}
case CallCode967:
return []CountryCode{YEM}
case CallCode968:
return []CountryCode{OMN}
case CallCode970:
return []CountryCode{PSE}
case CallCode971:
return []CountryCode{ARE}
case CallCode972:
return []CountryCode{PSE}
case CallCode973:
return []CountryCode{BHR}
case CallCode974:
return []CountryCode{QAT}
case CallCode975:
return []CountryCode{BTN}
case CallCode976:
return []CountryCode{MNG}
case CallCode977:
return []CountryCode{NPL}
case CallCode98:
return []CountryCode{IRN}
case CallCode979:
return []CountryCode{NonCountryInternationalPremiumRateService}
case CallCode991:
return []CountryCode{NonCountryInternationalTelecommunicationsCorrespondenceService}
case CallCode992:
return []CountryCode{TJK}
case CallCode994:
return []CountryCode{AZE}
case CallCode995:
return []CountryCode{GEO}
case CallCode996:
return []CountryCode{KGZ}
case CallCode998:
return []CountryCode{UZB}
case CallCode5999:
return []CountryCode{CUW}
case CallCode35818:
return []CountryCode{ALA}
case CallCode441481:
return []CountryCode{GGY}
case CallCode441534:
return []CountryCode{JEY}
case CallCode441624:
return []CountryCode{IMN}
case CallCode3906698:
return []CountryCode{VAT}
case CallCode6189162:
return []CountryCode{CCK}
case CallCode6189164:
return []CountryCode{CXR}
}
return []CountryCode{Unknown}
}
// IsValid - returns true, if code is correct
func (c CallCode) IsValid() bool {
return c.Countries()[0] != Unknown
}
// Type implements Typer interface
func (_ *CallCodeInfo) Type() string {
return TypeCallCodeInfo
}
// Value implements database/sql/driver.Valuer
func (c CallCodeInfo) Value() (Value, error) {
return json.Marshal(c)
}
// Scan implements database/sql.Scanner
func (c *CallCodeInfo) Scan(src interface{}) error {
if c == nil {
return fmt.Errorf("countries::Scan: CallCodeInfo scan err: callCodeInfo == nil")
}
switch src := src.(type) {
case *CallCodeInfo:
*c = *src
case CallCodeInfo:
*c = src
default:
return fmt.Errorf("countries::Scan: CallCodeInfo scan err: unexpected value of type %T for %T", src, *c)
}
return nil
}