Path: blob/master/lib/remote/numverify_scanner.go
988 views
package remote12import (3"errors"4"github.com/sundowndev/phoneinfoga/v2/lib/number"5"github.com/sundowndev/phoneinfoga/v2/lib/remote/suppliers"6)78const Numverify = "numverify"910type numverifyScanner struct {11client suppliers.NumverifySupplierInterface12}1314type NumverifyScannerResponse struct {15Valid bool `json:"valid" console:"Valid"`16Number string `json:"number" console:"Number,omitempty"`17LocalFormat string `json:"local_format" console:"Local format,omitempty"`18InternationalFormat string `json:"international_format" console:"International format,omitempty"`19CountryPrefix string `json:"country_prefix" console:"Country prefix,omitempty"`20CountryCode string `json:"country_code" console:"Country code,omitempty"`21CountryName string `json:"country_name" console:"Country name,omitempty"`22Location string `json:"location" console:"Location,omitempty"`23Carrier string `json:"carrier" console:"Carrier,omitempty"`24LineType string `json:"line_type" console:"Line type,omitempty"`25}2627func NewNumverifyScanner(s suppliers.NumverifySupplierInterface) Scanner {28return &numverifyScanner{client: s}29}3031func (s *numverifyScanner) Name() string {32return Numverify33}3435func (s *numverifyScanner) Description() string {36return "Request info about a given phone number through the Numverify API."37}3839func (s *numverifyScanner) DryRun(_ number.Number, opts ScannerOptions) error {40if opts.GetStringEnv("NUMVERIFY_API_KEY") != "" {41return nil42}43return errors.New("API key is not defined")44}4546func (s *numverifyScanner) Run(n number.Number, opts ScannerOptions) (interface{}, error) {47apiKey := opts.GetStringEnv("NUMVERIFY_API_KEY")4849res, err := s.client.Request().SetApiKey(apiKey).ValidateNumber(n.International)50if err != nil {51return nil, err52}5354data := NumverifyScannerResponse{55Valid: res.Valid,56Number: res.Number,57LocalFormat: res.LocalFormat,58InternationalFormat: res.InternationalFormat,59CountryPrefix: res.CountryPrefix,60CountryCode: res.CountryCode,61CountryName: res.CountryName,62Location: res.Location,63Carrier: res.Carrier,64LineType: res.LineType,65}6667return data, nil68}697071