ExKeyCDN.Util (exkeycdn v0.0.1)

General purpose utility functions.

Link to this section Summary

Functions

Recursively convert a map of string keys into a map with atom keys. Intended to prepare responses for conversion into structs. Note that it converts any string into an atom, whether it existed or not.

Converts underscored values to hyphenated strings.

Converts hyphenated values to underscore delimited strings.

Link to this section Functions

Specs

atomize(map()) :: map()

Recursively convert a map of string keys into a map with atom keys. Intended to prepare responses for conversion into structs. Note that it converts any string into an atom, whether it existed or not.

For unknown maps with unknown keys this is potentially dangerous, but should be fine when used with known ExKeyCDN endpoints.

Example

iex> ExKeyCDN.Util.atomize(%{"a" => 1, "b" => %{"c" => 2}})
%{a: 1, b: %{c: 2}}
Link to this function

get_limits(headers)

Specs

get_limits([keyword()]) :: [
  rate_limit: binary(),
  rate_limit_remaining: binary()
]

Specs

http() :: ExKeyCDN.HTTP
Link to this function

hyphenate(value)

Specs

hyphenate(String.t() | atom()) :: String.t()

Converts underscored values to hyphenated strings.

Examples

iex> ExKeyCDN.Util.hyphenate("key_cdn")
"key-cdn"

iex> ExKeyCDN.Util.hyphenate(:key_cdn)
"key-cdn"
Link to this function

map_to_keywordlist(map)

Specs

map_to_keywordlist(map()) :: [keyword()]
Link to this function

map_to_struct(items, type, key)

Specs

map_to_struct(
  list(),
  ExKeyCDN.Zone
  | ExKeyCDN.ZoneAlias
  | ExKeyCDN.ZoneReferrer
  | ExKeyCDN.Statistic
  | ExKeyCDN.StatusStatistic
  | ExKeyCDN.CreditStatistic,
  binary()
) :: list() | map()
Link to this function

successfull?(result)

Specs

successfull?(map()) :: {false, binary()} | {true, map()}
Link to this function

underscorize(value)

Specs

underscorize(String.t() | atom()) :: String.t()

Converts hyphenated values to underscore delimited strings.

Examples

iex> ExKeyCDN.Util.underscorize("key-cdn")
"key_cdn"

iex> ExKeyCDN.Util.underscorize(:"key-cdn")
"key_cdn"