mirror of
https://github.com/retailcrm/mg-transport-core.git
synced 2025-02-22 15:33:14 +03:00
fix lint errors
This commit is contained in:
parent
c72cdebd4b
commit
719d89fafb
@ -3,19 +3,21 @@ package util
|
|||||||
import (
|
import (
|
||||||
"errors"
|
"errors"
|
||||||
"fmt"
|
"fmt"
|
||||||
phoneiso3166 "github.com/onlinecity/go-phone-iso3166"
|
|
||||||
pn "github.com/ttacon/libphonenumber"
|
|
||||||
"regexp"
|
"regexp"
|
||||||
"slices"
|
"slices"
|
||||||
"strconv"
|
"strconv"
|
||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
|
phoneiso3166 "github.com/onlinecity/go-phone-iso3166"
|
||||||
|
pn "github.com/ttacon/libphonenumber"
|
||||||
)
|
)
|
||||||
|
|
||||||
const (
|
const (
|
||||||
CountryPhoneCodeDE = 49
|
MinPhoneSymbolCount = 5
|
||||||
CountryPhoneCodeAG = 54
|
CountryPhoneCodeDE = 49
|
||||||
CountryPhoneCodeMX = 52
|
CountryPhoneCodeAG = 54
|
||||||
// CountryPhoneCodeMXWA For Whatsapp
|
CountryPhoneCodeMX = 52
|
||||||
|
// CountryPhoneCodeMXWA For Whatsapp.
|
||||||
CountryPhoneCodeMXWA = 521
|
CountryPhoneCodeMXWA = 521
|
||||||
CountryPhoneCodeUS = "1443"
|
CountryPhoneCodeUS = "1443"
|
||||||
CountryPhoneCodePS = 970
|
CountryPhoneCodePS = 970
|
||||||
@ -31,7 +33,7 @@ var (
|
|||||||
undefinedUSCodes = []string{"1445", "1945", "1840", "1448", "1279", "1839"}
|
undefinedUSCodes = []string{"1445", "1945", "1840", "1448", "1279", "1839"}
|
||||||
)
|
)
|
||||||
|
|
||||||
// FormatNumberForWA forms a number in E164 format without `+` symbol to send to whatsapp
|
// FormatNumberForWA forms a number in E164 format without `+` symbol to send to whatsapp.
|
||||||
func FormatNumberForWA(number string) (string, error) {
|
func FormatNumberForWA(number string) (string, error) {
|
||||||
parsedPhone, err := ParsePhone(number)
|
parsedPhone, err := ParsePhone(number)
|
||||||
|
|
||||||
@ -55,7 +57,7 @@ func FormatNumberForWA(number string) (string, error) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// FormatNumberForMG forms a number in E164 format without `+` symbol to send to Message Gateway
|
// FormatNumberForMG forms a number in E164 format without `+` symbol to send to Message Gateway
|
||||||
// TODO Возможно, нет смысла в этих функция, так как в КР и 360 будет своя логика
|
// TODO Возможно, нет смысла в этих функция, так как в КР и 360 будет своя логика.
|
||||||
func FormatNumberForMG(number string) (string, error) {
|
func FormatNumberForMG(number string) (string, error) {
|
||||||
parsedPhone, err := ParsePhone(number)
|
parsedPhone, err := ParsePhone(number)
|
||||||
|
|
||||||
@ -79,10 +81,10 @@ func FormatNumberForMG(number string) (string, error) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// ParsePhone this function parses the number as a string
|
// ParsePhone this function parses the number as a string
|
||||||
// Mexican numbers may not have a 1 after the country code 52
|
// Mexican numbers may not have a 1 after the country code 52.
|
||||||
func ParsePhone(phoneNumber string) (*pn.PhoneNumber, error) {
|
func ParsePhone(phoneNumber string) (*pn.PhoneNumber, error) {
|
||||||
trimmedPhone := regexp.MustCompile(`\D+`).ReplaceAllString(phoneNumber, "")
|
trimmedPhone := regexp.MustCompile(`\D+`).ReplaceAllString(phoneNumber, "")
|
||||||
if len(trimmedPhone) < 5 {
|
if len(trimmedPhone) < MinPhoneSymbolCount {
|
||||||
return nil, ErrPhoneTooShort
|
return nil, ErrPhoneTooShort
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -157,7 +159,7 @@ func Add9AGIFNeed(parsedPhone *pn.PhoneNumber) string {
|
|||||||
formattedPhone := pn.Format(parsedPhone, pn.E164)
|
formattedPhone := pn.Format(parsedPhone, pn.E164)
|
||||||
numberWOCountry := fmt.Sprintf("%d", parsedPhone.GetNationalNumber())
|
numberWOCountry := fmt.Sprintf("%d", parsedPhone.GetNationalNumber())
|
||||||
|
|
||||||
if len(numberWOCountry) == 10 {
|
if len(numberWOCountry) == 10 { // nolint:mnd
|
||||||
formattedPhone = fmt.Sprintf("+%d%s", CountryPhoneCodeAG, "9"+numberWOCountry)
|
formattedPhone = fmt.Sprintf("+%d%s", CountryPhoneCodeAG, "9"+numberWOCountry)
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -166,7 +168,7 @@ func Add9AGIFNeed(parsedPhone *pn.PhoneNumber) string {
|
|||||||
|
|
||||||
// getGermanNationalNumber some German numbers may not be parsed correctly.
|
// getGermanNationalNumber some German numbers may not be parsed correctly.
|
||||||
// For example, for 491736276098 libphonenumber.PhoneNumber.NationalNumber
|
// For example, for 491736276098 libphonenumber.PhoneNumber.NationalNumber
|
||||||
// will contain the country code(49). This function fix it and return correct libphonenumber.PhoneNumber
|
// will contain the country code(49). This function fix it and return correct libphonenumber.PhoneNumber.
|
||||||
func getGermanNationalNumber(phone string, parsedPhone *pn.PhoneNumber) (uint64, error) {
|
func getGermanNationalNumber(phone string, parsedPhone *pn.PhoneNumber) (uint64, error) {
|
||||||
result := parsedPhone.GetNationalNumber()
|
result := parsedPhone.GetNationalNumber()
|
||||||
|
|
||||||
@ -178,13 +180,13 @@ func getGermanNationalNumber(phone string, parsedPhone *pn.PhoneNumber) (uint64,
|
|||||||
return 0, err
|
return 0, err
|
||||||
}
|
}
|
||||||
|
|
||||||
result = uint64(number)
|
result = uint64(number) //nolint:gosec
|
||||||
}
|
}
|
||||||
|
|
||||||
return result, nil
|
return result, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// For UZ numbers where 8 is deleted after the country code
|
// For UZ numbers where 8 is deleted after the country code.
|
||||||
func getUzbekistanNationalNumber(phone string, parsedPhone *pn.PhoneNumber) (uint64, error) {
|
func getUzbekistanNationalNumber(phone string, parsedPhone *pn.PhoneNumber) (uint64, error) {
|
||||||
result := parsedPhone.GetNationalNumber()
|
result := parsedPhone.GetNationalNumber()
|
||||||
numberWithEight := fmt.Sprintf("8%d", parsedPhone.GetNationalNumber())
|
numberWithEight := fmt.Sprintf("8%d", parsedPhone.GetNationalNumber())
|
||||||
@ -195,7 +197,7 @@ func getUzbekistanNationalNumber(phone string, parsedPhone *pn.PhoneNumber) (uin
|
|||||||
return 0, err
|
return 0, err
|
||||||
}
|
}
|
||||||
|
|
||||||
result = uint64(number)
|
result = uint64(number) //nolint:gosec
|
||||||
}
|
}
|
||||||
|
|
||||||
return result, nil
|
return result, nil
|
||||||
|
@ -1,27 +1,30 @@
|
|||||||
package util
|
package util
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"github.com/stretchr/testify/assert"
|
"github.com/stretchr/testify/require"
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
|
"github.com/stretchr/testify/assert"
|
||||||
)
|
)
|
||||||
|
|
||||||
func TestParsePhone(t *testing.T) {
|
func TestParsePhone(t *testing.T) {
|
||||||
t.Run("russian numers", func(t *testing.T) {
|
t.Run("russian numers", func(t *testing.T) {
|
||||||
n := "+88002541213"
|
n := "+88002541213"
|
||||||
pn, err := ParsePhone(n)
|
pn, err := ParsePhone(n)
|
||||||
|
require.NoError(t, err)
|
||||||
assert.Equal(t, uint64(8002541213), pn.GetNationalNumber())
|
assert.Equal(t, uint64(8002541213), pn.GetNationalNumber())
|
||||||
assert.Equal(t, int32(7), pn.GetCountryCode())
|
assert.Equal(t, int32(7), pn.GetCountryCode())
|
||||||
|
|
||||||
n = "+78002541213"
|
n = "+78002541213"
|
||||||
pn, err = ParsePhone(n)
|
pn, err = ParsePhone(n)
|
||||||
assert.NoError(t, err)
|
require.NoError(t, err)
|
||||||
assert.NotNil(t, pn)
|
assert.NotNil(t, pn)
|
||||||
assert.Equal(t, uint64(8002541213), pn.GetNationalNumber())
|
assert.Equal(t, uint64(8002541213), pn.GetNationalNumber())
|
||||||
assert.Equal(t, int32(7), pn.GetCountryCode())
|
assert.Equal(t, int32(7), pn.GetCountryCode())
|
||||||
|
|
||||||
n = "89521548787"
|
n = "89521548787"
|
||||||
pn, err = ParsePhone(n)
|
pn, err = ParsePhone(n)
|
||||||
assert.NoError(t, err)
|
require.NoError(t, err)
|
||||||
assert.Equal(t, uint64(9521548787), pn.GetNationalNumber())
|
assert.Equal(t, uint64(9521548787), pn.GetNationalNumber())
|
||||||
assert.Equal(t, int32(7), pn.GetCountryCode())
|
assert.Equal(t, int32(7), pn.GetCountryCode())
|
||||||
})
|
})
|
||||||
@ -29,13 +32,13 @@ func TestParsePhone(t *testing.T) {
|
|||||||
t.Run("german numbers", func(t *testing.T) {
|
t.Run("german numbers", func(t *testing.T) {
|
||||||
n := "491736276098"
|
n := "491736276098"
|
||||||
pn, err := ParsePhone(n)
|
pn, err := ParsePhone(n)
|
||||||
assert.NoError(t, err)
|
require.NoError(t, err)
|
||||||
assert.Equal(t, uint64(1736276098), pn.GetNationalNumber())
|
assert.Equal(t, uint64(1736276098), pn.GetNationalNumber())
|
||||||
assert.Equal(t, int32(CountryPhoneCodeDE), pn.GetCountryCode())
|
assert.Equal(t, int32(CountryPhoneCodeDE), pn.GetCountryCode())
|
||||||
|
|
||||||
n = "4915229457499"
|
n = "4915229457499"
|
||||||
pn, err = ParsePhone(n)
|
pn, err = ParsePhone(n)
|
||||||
assert.NoError(t, err)
|
require.NoError(t, err)
|
||||||
assert.Equal(t, uint64(15229457499), pn.GetNationalNumber())
|
assert.Equal(t, uint64(15229457499), pn.GetNationalNumber())
|
||||||
assert.Equal(t, int32(CountryPhoneCodeDE), pn.GetCountryCode())
|
assert.Equal(t, int32(CountryPhoneCodeDE), pn.GetCountryCode())
|
||||||
})
|
})
|
||||||
@ -43,7 +46,7 @@ func TestParsePhone(t *testing.T) {
|
|||||||
t.Run("mexican number", func(t *testing.T) {
|
t.Run("mexican number", func(t *testing.T) {
|
||||||
n := "5219982418333"
|
n := "5219982418333"
|
||||||
pn, err := ParsePhone(n)
|
pn, err := ParsePhone(n)
|
||||||
assert.NoError(t, err)
|
require.NoError(t, err)
|
||||||
assert.Equal(t, uint64(9982418333), pn.GetNationalNumber())
|
assert.Equal(t, uint64(9982418333), pn.GetNationalNumber())
|
||||||
assert.Equal(t, int32(CountryPhoneCodeMX), pn.GetCountryCode())
|
assert.Equal(t, int32(CountryPhoneCodeMX), pn.GetCountryCode())
|
||||||
})
|
})
|
||||||
@ -51,7 +54,7 @@ func TestParsePhone(t *testing.T) {
|
|||||||
t.Run("palestine number", func(t *testing.T) {
|
t.Run("palestine number", func(t *testing.T) {
|
||||||
n := "970567800663"
|
n := "970567800663"
|
||||||
pn, err := ParsePhone(n)
|
pn, err := ParsePhone(n)
|
||||||
assert.NoError(t, err)
|
require.NoError(t, err)
|
||||||
assert.Equal(t, uint64(567800663), pn.GetNationalNumber())
|
assert.Equal(t, uint64(567800663), pn.GetNationalNumber())
|
||||||
assert.Equal(t, int32(CountryPhoneCodePS), pn.GetCountryCode())
|
assert.Equal(t, int32(CountryPhoneCodePS), pn.GetCountryCode())
|
||||||
})
|
})
|
||||||
@ -59,7 +62,7 @@ func TestParsePhone(t *testing.T) {
|
|||||||
t.Run("argentine number", func(t *testing.T) {
|
t.Run("argentine number", func(t *testing.T) {
|
||||||
n := "5491131157821"
|
n := "5491131157821"
|
||||||
pn, err := ParsePhone(n)
|
pn, err := ParsePhone(n)
|
||||||
assert.NoError(t, err)
|
require.NoError(t, err)
|
||||||
assert.Equal(t, uint64(91131157821), pn.GetNationalNumber())
|
assert.Equal(t, uint64(91131157821), pn.GetNationalNumber())
|
||||||
assert.Equal(t, int32(CountryPhoneCodeAG), pn.GetCountryCode())
|
assert.Equal(t, int32(CountryPhoneCodeAG), pn.GetCountryCode())
|
||||||
})
|
})
|
||||||
@ -67,7 +70,7 @@ func TestParsePhone(t *testing.T) {
|
|||||||
t.Run("uzbekistan number", func(t *testing.T) {
|
t.Run("uzbekistan number", func(t *testing.T) {
|
||||||
n := "998882207724"
|
n := "998882207724"
|
||||||
pn, err := ParsePhone(n)
|
pn, err := ParsePhone(n)
|
||||||
assert.NoError(t, err)
|
require.NoError(t, err)
|
||||||
assert.Equal(t, uint64(882207724), pn.GetNationalNumber())
|
assert.Equal(t, uint64(882207724), pn.GetNationalNumber())
|
||||||
assert.Equal(t, int32(CountryPhoneCodeUZ), pn.GetCountryCode())
|
assert.Equal(t, int32(CountryPhoneCodeUZ), pn.GetCountryCode())
|
||||||
})
|
})
|
||||||
|
Loading…
x
Reference in New Issue
Block a user