Fab.Internet behaviour (fab_internet v1.0.0)

Functions for generating random internet related data.

Summary

Functions

Generates a random domain name.

Generates a random email address.

Returns a random HTTP method.

Returns a random HTTP status code.

Generates a random IPv4 or IPv6 address.

Generates a random IPv4 address.

Generates a random IPv6 address.

Returns a random port number.

Returns a random TLD.

Generates a random URL.

Generates a random username.

Callbacks

tld()

(optional)
@callback tld() :: [String.t()]

Functions

domain_name()

(since 1.0.0)
@spec domain_name() :: String.t()

Generates a random domain name.

Examples

iex> Fab.Internet.domain_name()
"interchange.tel"

email_address(opts \\ [])

(since 1.0.0)
@spec email_address(keyword()) :: String.t()

Generates a random email address.

The email address is constructed from a generated username and a domain name, separated by @.

Options

  • :case - Case format of the username. Can be :any, :lower, :mixed or :upper. Defaults to :any.
  • :first_name - First name to use. Defaults to a randomly generated name based on :sex.
  • :last_name - Last name to use. Defaults to a randomly generated name based on :sex.
  • :sex - Sex used to generate the first and last name. Can be :female, :male or :mixed. Defaults to :mixed.

Examples

iex> Fab.Internet.email_address()
"tiana.goodwin68@mountain.courses"

iex> Fab.Internet.email_address(case: :lower)
"marian_waelchi76@confusion.solutions"

iex> Fab.Internet.email_address(case: :mixed)
"Delores_Konopelski@orchid.voting"

iex> Fab.Internet.email_address(case: :upper)
"CIERRA_GISLASON@LIVE.MEME"

iex> Fab.Internet.email_address(first_name: "Anthony")
"ANTHONY_WARD62@PHRASE.WIKI"

iex> Fab.Internet.email_address(last_name: "Smith")
"selina.smith8@empty.mil"

iex> Fab.Internet.email_address(sex: :female)
"peggy_kemmer@boyfriend.center"

iex> Fab.Internet.email_address(sex: :male)
"SAUL_VANDERVORT13@CIRCULAR.REVIEW"

http_method()

(since 1.0.0)
@spec http_method() :: String.t()

Returns a random HTTP method.

Examples

iex> Fab.Internet.http_method()
"PUT"

http_status_code(opts \\ [])

(since 1.0.0)
@spec http_status_code(keyword()) :: pos_integer()

Returns a random HTTP status code.

Examples

iex> Fab.Internet.http_status_code()
502

ip()

(since 1.0.0)
@spec ip() :: String.t()

Generates a random IPv4 or IPv6 address.

Examples

iex> Fab.Internet.ip()
"4b1c:e71c:9b7d:66a5:b1ff:c34:a2dd:533e"

ipv4()

(since 1.0.0)
@spec ipv4() :: String.t()

Generates a random IPv4 address.

Examples

iex> Fab.Internet.ipv4()
"110.105.64.36"

ipv6()

(since 1.0.0)
@spec ipv6() :: String.t()

Generates a random IPv6 address.

Examples

iex> Fab.Internet.ipv6()
"2a98:473b:9ee0:17b4:4352:2f7b:38bb:809b"

port()

(since 1.0.0)
@spec port() :: pos_integer()

Returns a random port number.

Examples

iex> Fab.Internet.port()
32497

tld()

(since 1.0.0)
@spec tld() :: String.t()

Returns a random TLD.

Examples

iex> Fab.Internet.tld()
"living"

url()

(since 1.0.0)
@spec url() :: String.t()

Generates a random URL.

Examples

iex> Fab.Internet.url()
"https://desk.bio"

username(opts \\ [])

(since 1.0.0)
@spec username(keyword()) :: String.t()

Generates a random username.

A username is a combination of a person's first name and last name, joined by a randomly chosen separator (_ or .). A numeric disambiguator may also be appended to the username.

Options

  • :case - Case format of the username. Can be :any, :lower, :mixed or :upper. Defaults to :any.
  • :first_name - First name to use. Defaults to a randomly generated name based on :sex.
  • :last_name - Last name to use. Defaults to a randomly generated name based on :sex.
  • :sex - Sex used to generate the first and last name. Can be :female, :male or :mixed. Defaults to :mixed.

Examples

iex> Fab.Internet.username()
"JUNE_BRADTKE56"

iex> Fab.Internet.username(case: :lower)
"eloise.beatty1"

iex> Fab.Internet.username(case: :mixed)
"Wiley_Ruecker"

iex> Fab.Internet.username(case: :upper)
"JAYLIN_ERDMAN63"

iex> Fab.Internet.username(first_name: "Anthony")
"Anthony.Okuneva"

iex> Fab.Internet.username(last_name: "Smith")
"Christine.Smith"

iex> Fab.Internet.username(sex: :female)
"ernestine.crooks"

iex> Fab.Internet.username(sex: :male)
"Manuel.Mraz57"