Current section
Files
Jump to
Current section
Files
lib/ex_tripcode.ex
defmodule ExTripcode do
@moduledoc """
This module provides functions to generate and parse tripcodes.
"""
alias ExTripcode.Hasher
alias ExTripcode.Parser
@doc """
Takes a string value as input and transforms it into a tripcode.
When specifying a seed, we use this to generate a secure tripcode.
Returns a string containing the tripcode.
## Examples
iex> ExTripcode.hash("elixir")
"H3R1pplX/."
iex> ExTripcode.hash("elixir", "secret")
"KZ1B7o9AtcJD9XQ"
"""
def hash(""), do: ""
def hash(input), do: Hasher.hash(input)
def hash("", _), do: ""
def hash(input, seed), do: Hasher.hash(input, seed)
@doc """
Parses a user and tripcode string, in the form of "user#tripcode".
To also parse for secure tripcodes in the form of "user#tripcode#secure"
you need provide a secret seed you store only on the server and keep
hidden from your users.
Returns a map containing key-values for all values that are found.
## Examples
iex> ExTripcode.parse("User#elixir#elixir", "secret")
%{user: "User", code: "H3R1pplX/.", secure: "KZ1B7o9AtcJD9XQ"}
iex> ExTripcode.parse("User##elixir", "secret")
%{user: "User", secure: "KZ1B7o9AtcJD9XQ"}
iex> ExTripcode.parse("User#elixir", "secret")
%{user: "User", code: "H3R1pplX/."}
iex> ExTripcode.parse("User#elixir")
%{user: "User", code: "H3R1pplX/."}
"""
def parse(""), do: %{user: ""}
def parse(input), do: Parser.parse(input)
def parse("", _), do: %{user: ""}
def parse(input, seed), do: Parser.parse(input, seed)
end