Giter VIP home page Giter VIP logo

faker's Introduction

faker

Faker is a library for generating fake data such as names, addresses, and phone numbers.

It is a (mostly) API-compatible port of Ruby Faker gem (https://github.com/stympy/faker) to Go.

GoDoc Tests

To install

go get -u syreclabs.com/go/faker

Usage

Address


faker.Address().City()                        // => "North Dessie"
faker.Address().StreetName()                  // => "Buckridge Lakes"
faker.Address().StreetAddress()               // => "586 Sylvester Turnpike"
faker.Address().SecondaryAddress()            // => "Apt. 411"
faker.Address().BuildingNumber()              // => "754"
faker.Address().Postcode()                    // => "31340"
faker.Address().PostcodeByState("IN")         // => "46511"
faker.Address().ZipCode()                     // ZipCode is an alias for Postcode.
faker.Address().ZipCodeByState("IN")          // ZipCodeByState is an alias for PostcodeByState.
faker.Address().TimeZone()                    // => "Asia/Taipei"
faker.Address().CityPrefix()                  // => "East"
faker.Address().CitySuffix()                  // => "town"
faker.Address().StreetSuffix()                // => "Square"
faker.Address().State()                       // => "Maryland"
faker.Address().StateAbbr()                   // => "IL"
faker.Address().Country()                     // => "Uruguay"
faker.Address().CountryCode()                 // => "JP"
faker.Address().Latitude()                    // => (float32) -38.811367
faker.Address().Longitude()                   // => (float32) 89.2171
faker.Address().String()                      // => "6071 Heaney Island Suite 553, Ebbaville Texas 37307"

App


faker.App().Name()    // => "Alphazap"
faker.App().Version() // => "2.6.0"
faker.App().Author()  // => "Dorian Shields"
faker.App().String()  // => "Tempsoft 4.51"

Avatar


faker.Avatar().Url("jpg", 100, 200) // => "http://robohash.org/NX34rZw7s0VFzgWY.jpg?size=100x200"
faker.Avatar().String()             // => "http://robohash.org/XRWjFigoImqdeDuA.png?size=300x300"

Bitcoin


faker.Bitcoin().Address() // => "1GpEKM5UvD4XDLMirpNLoDnRVrGutogMj2"
faker.Bitcoin().String()  // String is an alias for Address.

Business


faker.Business().CreditCardNumber()     // => "1234-2121-1221-1211"
faker.Business().CreditCardExpiryDate() // => "2015-11-11"
faker.Business().CreditCardType()       // => "mastercard"

Code


faker.Code().Isbn10() // => "048931033-8"
faker.Code().Isbn13() // => "391668236072-1"
faker.Code().Ean13()  // => "7742864258656"
faker.Code().Ean8()   // => "03079010"
faker.Code().Rut()    // => "14371602-3"
faker.Code().Abn()    // => "57914951376"

Commerce


faker.Commerce().Color()       // => "lime"
faker.Commerce().Department()  // => "Electronics, Health & Baby"
faker.Commerce().ProductName() // => "Ergonomic Granite Shoes"
faker.Commerce().Price()       // => (float32) 97.79

Company


faker.Company().Name()        // => "Aufderhar LLC"
faker.Company().Suffix()      // => "Inc"
faker.Company().CatchPhrase() // => "Universal logistical artificial intelligence"
faker.Company().Bs()          // => "engage distributed applications"
faker.Company().Ein()         // => "58-6520513"
faker.Company().DunsNumber()  // => "16-708-2968"
faker.Company().Logo()        // => "http://www.biz-logo.com/examples/015.gif"
faker.Company().String()      // String is an alias for Name.

Date


// Between returns random time in [from, to] interval, with second resolution.
faker.Date().Between(from, to time.Time) time.Time

// Forward returns random time in [time.Now(), time.Now() + duration] interval, with second resolution.
faker.Date().Forward(duration time.Duration) time.Time

// Backward returns random time in [time.Now() - duration, time.Now()] interval, with second resolution.
faker.Date().Backward(duration time.Duration) time.Time

// Birthday returns random time so that age of the person born at that moment would be between minAge and maxAge years.
faker.Date().Birthday(minAge, maxAge int) time.Time

Finance


// CreditCard returns a valid (with valid check digit) card number of one of the given types.
// If no types are passed, all types in CC_TYPES are used.
faker.Finance().CreditCard(faker.CC_VISA) // => "4190418835414"

Hacker


faker.Hacker().SaySomethingSmart() // => "If we connect the bus, we can get to the XML microchip through the digital TCP sensor!"
faker.Hacker().Abbreviation()      // => "HTTP"
faker.Hacker().Adjective()         // => "cross-platform"
faker.Hacker().Noun()              // => "interface"
faker.Hacker().Verb()              // => "bypass"
faker.Hacker().IngVerb()           // => "parsing"
faker.Hacker().Phrases() []string  // => []string{
                                   //        "If we bypass the program, we can get to the AGP protocol through the optical SDD alarm!",
                                   //        "We need to calculate the back-end XML microchip!",
                                   //        "Try to generate the GB bus, maybe it will hack the neural panel!",
                                   //        "You can't navigate the transmitter without synthesizing the optical SMS bus!",
                                   //        "Use the optical THX application, then you can override the mobile port!",
                                   //        "The CSS monitor is down, quantify the multi-byte bus so we can calculate the XSS bandwidth!",
                                   //        "Connecting the card won't do anything, we need to back up the multi-byte RSS card!",
                                   //        "I'll reboot the primary SMTP feed, that should monitor the XML protocol!`",
                                   //    }

Internet


faker.Internet().Email()                // => "[email protected]"
faker.Internet().FreeEmail()            // => "[email protected]"
faker.Internet().SafeEmail()            // => "[email protected]"
faker.Internet().UserName()             // => "micah_pfeffer"
faker.Internet().Password(8, 14)        // => "s5CzvVp6Ye"
faker.Internet().DomainName()           // => "rolfson.info"
faker.Internet().DomainWord()           // => "heller"
faker.Internet().DomainSuffix()         // => "net"
faker.Internet().MacAddress()           // => "15:a9:83:29:76:26"
faker.Internet().IpV4Address()          // => "121.204.82.227"
faker.Internet().IpV6Address()          // => "c697:392f:6a0e:bf6d:77e1:714a:10ab:0dbc"
faker.Internet().Url()                  // => "http://sporerhamill.net/kyla.schmitt"
faker.Internet().Slug()                 // => "officiis-commodi"

Lorem


faker.Lorem().Character()    // => "c"
faker.Lorem().Characters(17) // => "wqFyJIrXYfVP7cL9M"
faker.Lorem().Word()         // => "veritatis"
faker.Lorem().Words(3)       // => []string{"omnis", "libero", "neque"}
faker.Lorem().Sentence(3)    // => "Necessitatibus sit autem."

// Sentences returns a slice of "num" sentences, 3 to 11 words each.
faker.Lorem().Sentences(num int) []string

// Paragraph returns a random text of "sentences" sentences length.
faker.Lorem().Paragraph(sentences int)

// Paragraphs returns a slice of "num" paragraphs, 3 to 11 sentences each.
faker.Lorem().Paragraphs(num int) []string

// String returns a random sentence 3 to 11 words in length.
faker.Lorem().String()

Name


faker.Name().Name()      // => "Natasha Hartmann"
faker.Name().FirstName() // => "Carolina"
faker.Name().LastName()  // => "Kohler"
faker.Name().Prefix()    // => "Dr."
faker.Name().Suffix()    // => "Jr."
faker.Name().Title()     // => "Chief Functionality Orchestrator"
faker.Name().String()    // String is an alias for Name.

Number


faker.Number().Number(5)          // => "43202"
faker.Number().NumberInt(3)       // => 213
faker.Number().NumberInt32(5)     // => 92938
faker.Number().NumberInt64(19)    // => 1689541633257139096
faker.Number().Decimal(8, 2)      // => "879420.60"
faker.Number().Digit()            // => "7"
faker.Number().Hexadecimal(4)     // => "e7f3"
faker.Number().Between(-100, 100) // => "-47"
faker.Number().Positive(100)      // => "3"
faker.Number().Negative(-100)     // => "-16"

PhoneNumber


faker.PhoneNumber().PhoneNumber()       // => "1-599-267-6597 x537"
faker.PhoneNumber().CellPhone()         // => "+49-131-0003060"
faker.PhoneNumber().AreaCode()          // => "903"
faker.PhoneNumber().ExchangeCode()      // => "574"
faker.PhoneNumber().SubscriberNumber(4) // => "1512"
faker.PhoneNumber().String()            // String is an alias for PhoneNumber.

Team


faker.Team().Name()     // => "Colorado cats"
faker.Team().Creature() // => "cats"
faker.Team().State()    // => "Oregon"
faker.Team().String()   // String is an alias for Name.

Time


// Between returns random time in [from, to] interval, with second resolution.
faker.Time().Between(from, to time.Time) time.Time

// Forward returns random time in [time.Now(), time.Now() + duration] interval, with second resolution.
faker.Time().Forward(duration time.Duration) time.Time

// Backward returns random time in [time.Now() - duration, time.Now()] interval, with second resolution.
faker.Time().Backward(duration time.Duration) time.Time

// Birthday returns random time so that age of the person born at that moment would be between minAge and maxAge years.
faker.Time().Birthday(minAge, maxAge int) time.Time

faker's People

Contributors

aleksi avatar dmgk avatar mpchadwick avatar pzeinlinger avatar quinyx-tjeerd avatar sstark avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

faker's Issues

Get https://syreclabs.com/go/faker?go-get=1: x509: certificate signed by unknown authority

Hi,

The certificate used for the vanity URL syreclabs.com/go/faker doesn't seem to be correctly setup.

$ go mod download
go: finding github.com/go-stack/stack v1.8.0
go: finding github.com/Microsoft/go-winio v0.4.14
go: finding github.com/go-kit/kit v0.9.0
#... more fetches
go: syreclabs.com/go/[email protected]: unrecognized import path "syreclabs.com/go/faker" (https fetch: Get https://syreclabs.com/go/faker?go-get=1: x509: certificate signed by unknown authority)
# ... more fetches
go: error loading module requirements
##[error]Process completed with exit code 1.

That's close to the issue #10, but the error message is a different one. That breaks fetching of dependencies from any go project that doesn't use vendored dependencies (so any library project using this faker library).

Data race in RandomString()

When running tests which use this package with the race detector it finds out there are data races.
Trivial to reproduce example is with the following useless program:

package main

import "syreclabs.com/go/faker"

func main() {
	go faker.RandomString(10)
	go faker.RandomString(10)
}

When I run it with go run -race this is the output from go's race detector:

==================
WARNING: DATA RACE
Read at 0x00c42018afb8 by goroutine 7:
  math/rand.read()
      /usr/lib/go/src/math/rand/rand.go:265 +0x3c
  math/rand.(*Rand).Read()
      /usr/lib/go/src/math/rand/rand.go:261 +0x16d
  syreclabs.com/go/faker.RandomString()
      /home/kiril/go/src/syreclabs.com/go/faker/faker.go:90 +0xb2

Previous write at 0x00c42018afb8 by goroutine 6:
  math/rand.read()
      /usr/lib/go/src/math/rand/rand.go:276 +0xee
  math/rand.(*Rand).Read()
      /usr/lib/go/src/math/rand/rand.go:261 +0x16d
  syreclabs.com/go/faker.RandomString()
      /home/kiril/go/src/syreclabs.com/go/faker/faker.go:90 +0xb2

Goroutine 7 (running) created at:
  main.main()
      /tmp/fake.go:7 +0x6c

Goroutine 6 (finished) created at:
  main.main()
      /tmp/fake.go:6 +0x4b
==================
==================
WARNING: DATA RACE
Read at 0x00c42018afb0 by goroutine 7:
  math/rand.read()
      /usr/lib/go/src/math/rand/rand.go:266 +0x56
  math/rand.(*Rand).Read()
      /usr/lib/go/src/math/rand/rand.go:261 +0x16d
  syreclabs.com/go/faker.RandomString()
      /home/kiril/go/src/syreclabs.com/go/faker/faker.go:90 +0xb2

Previous write at 0x00c42018afb0 by goroutine 6:
  math/rand.read()
      /usr/lib/go/src/math/rand/rand.go:277 +0x108
  math/rand.(*Rand).Read()
      /usr/lib/go/src/math/rand/rand.go:261 +0x16d
  syreclabs.com/go/faker.RandomString()
      /home/kiril/go/src/syreclabs.com/go/faker/faker.go:90 +0xb2

Goroutine 7 (running) created at:
  main.main()
      /tmp/fake.go:7 +0x6c

Goroutine 6 (finished) created at:
  main.main()
      /tmp/fake.go:6 +0x4b
==================
Found 2 data race(s)
exit status 66

Now, this makes a lot of sense, since math/rand.Rand.Read is documented as not safe to be called concurrently. Which is okay for a method of type. RandomString in this package however is a global function and this issue could not be worked around as easily as with Rand.Read. For instance math/rand.Read (the global function) is safe to be called concurrently.

Certificate Expired

The instructions at https://pkg.go.dev/syreclabs.com/go/faker may need to get updated or certificate renewed

The certificate, serial number 04:30:70:e1:06:dc:cd:cc:74:60:8c:73:cc:25:e7:5a:a0:94 expired Friday, February 24, 2023 at 12:39:43 AM

Get "https://syreclabs.com/go/faker?go-get=1": x509: “syreclabs.com” certificate is expired

Gender for Name

What I'm really missing here is the gender for things like Name().

  1. Male
  2. Female
  3. Neutral

Go mod fails to parse go.mod file

In a project indirectly importing faker I'm getting

go: github.com/enodata/[email protected]: parsing go.mod: unexpected module path "syreclabs.com/go/faker"

when running some go mod commands, e.g. go mod why.

Any idea what we can do to fix this?

Invalid module path

-> vgo get -v syreclabs.com/go/faker/v2
Fetching https://syreclabs.com/go/faker/v2?go-get=1
Parsing meta tags from https://syreclabs.com/go/faker/v2?go-get=1 (status code 200)
get "syreclabs.com/go/faker/v2": found meta tag get.metaImport{Prefix:"syreclabs.com/go/faker", VCS:"git", RepoRoot:"https://syreclabs.com/go/faker.git"} at https://syreclabs.com/go/faker/v2?go-get=1
get "syreclabs.com/go/faker/v2": verifying non-authoritative meta tag
Fetching https://syreclabs.com/go/faker?go-get=1
Parsing meta tags from https://syreclabs.com/go/faker?go-get=1 (status code 200)
go: syreclabs.com/go/faker/[email protected]: go.mod has non-.../v2 module path "syreclabs.com/go/faker" (and .../v2/go.mod does not exist) at revision v2.0.1
go: error loading module requirements

https://github.com/dmgk/faker/blob/master/go.mod should contain

module "syreclabs.com/go/faker/v2"

More info: https://github.com/golang/go/wiki/Modules#new-concepts

Fake Number returns String

Why does your fake number generator return a string?
I would imaging that most cases were someone would want a fake number they want a number and not a string, and if they needed a string it is easy enough to convert it.

lolcat.go:5:2: code in directory /root/go/src/github.com/dmgk/faker expects import "syreclabs.com/go/faker"

I already use go get -u syreclabs.com/go/faker to get faker repo , but when I use my code

package main                                                                                                                                                                                                                                                 
  
import (
        "fmt"
        "github.com/dmgk/faker"
        "strings"
)
 
func main() {
        var phrases []string
 
        for i := 1; i < 3; i++ {
                phrases = append(phrases, faker.Hacker().Phrases()...)
        }
 
        fmt.Println(strings.Join(phrases[:], "; "))
}
~          

I build it , but it says "lolcat.go:5:2: code in directory /root/go/src/github.com/dmgk/faker expects import "syreclabs.com/go/faker""

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.