Files
grafana/vendor/github.com/brianvoe/gofakeit/address.go
T
Oleg Gaidarenko 35f227de11 Feature: LDAP refactoring (#16950)
* incapsulates multipleldap logic under one module

* abstracts users upsert and get logic

* changes some of the text error messages and import sort sequence

* heavily refactors the LDAP module – LDAP module now only deals with LDAP related behaviour

* integrates affected auth_proxy module and their tests

* refactoring of the auth_proxy logic
2019-05-17 14:57:26 +03:00

132 lines
3.4 KiB
Go

package gofakeit
import (
"errors"
"math/rand"
"strings"
)
// AddressInfo is a struct full of address information
type AddressInfo struct {
Address string
Street string
City string
State string
Zip string
Country string
Latitude float64
Longitude float64
}
// Address will generate a struct of address information
func Address() *AddressInfo {
street := Street()
city := City()
state := State()
zip := Zip()
return &AddressInfo{
Address: street + ", " + city + ", " + state + " " + zip,
Street: street,
City: city,
State: state,
Zip: zip,
Country: Country(),
Latitude: Latitude(),
Longitude: Longitude(),
}
}
// Street will generate a random address street string
func Street() (street string) {
switch randInt := randIntRange(1, 2); randInt {
case 1:
street = StreetNumber() + " " + StreetPrefix() + " " + StreetName() + StreetSuffix()
case 2:
street = StreetNumber() + " " + StreetName() + StreetSuffix()
}
return
}
// StreetNumber will generate a random address street number string
func StreetNumber() string {
return strings.TrimLeft(replaceWithNumbers(getRandValue([]string{"address", "number"})), "0")
}
// StreetPrefix will generate a random address street prefix string
func StreetPrefix() string {
return getRandValue([]string{"address", "street_prefix"})
}
// StreetName will generate a random address street name string
func StreetName() string {
return getRandValue([]string{"address", "street_name"})
}
// StreetSuffix will generate a random address street suffix string
func StreetSuffix() string {
return getRandValue([]string{"address", "street_suffix"})
}
// City will generate a random city string
func City() (city string) {
switch randInt := randIntRange(1, 3); randInt {
case 1:
city = FirstName() + StreetSuffix()
case 2:
city = LastName() + StreetSuffix()
case 3:
city = StreetPrefix() + " " + LastName()
}
return
}
// State will generate a random state string
func State() string {
return getRandValue([]string{"address", "state"})
}
// StateAbr will generate a random abbreviated state string
func StateAbr() string {
return getRandValue([]string{"address", "state_abr"})
}
// Zip will generate a random Zip code string
func Zip() string {
return replaceWithNumbers(getRandValue([]string{"address", "zip"}))
}
// Country will generate a random country string
func Country() string {
return getRandValue([]string{"address", "country"})
}
// CountryAbr will generate a random abbreviated country string
func CountryAbr() string {
return getRandValue([]string{"address", "country_abr"})
}
// Latitude will generate a random latitude float64
func Latitude() float64 { return (rand.Float64() * 180) - 90 }
// LatitudeInRange will generate a random latitude within the input range
func LatitudeInRange(min, max float64) (float64, error) {
if min > max || min < -90 || min > 90 || max < -90 || max > 90 {
return 0, errors.New("input range is invalid")
}
return randFloat64Range(min, max), nil
}
// Longitude will generate a random longitude float64
func Longitude() float64 { return (rand.Float64() * 360) - 180 }
// LongitudeInRange will generate a random longitude within the input range
func LongitudeInRange(min, max float64) (float64, error) {
if min > max || min < -180 || min > 180 || max < -180 || max > 180 {
return 0, errors.New("input range is invalid")
}
return randFloat64Range(min, max), nil
}