Current section
Files
Jump to
Current section
Files
lib/exfoaas.ex
defmodule ExFOAAS do
@moduledoc """
ExFOAAS brings FOAAS's utility in telling people to fuck off, to elixir.
http://foaas.com/
"""
@foaas "https://foaas.com"
@atoms [:message, :subtitle]
@paths_name_from ["shakespeare", "linus", "off", "you", "donut", "chainsaw", "outside", "madison", "nugget", "yoda", "bus", "shutup"]
def request(opts) do
HTTPoison.get!("#{@foaas}/#{Enum.join(opts, "/")}", [accept: "application/json"])
end
def handle_response(%{status_code: 200, body: body}) do
Poison.decode! body
end
def handle_response(%{status_code: code, body: body}) do
{code, Poison.decode!(body)}
end
def sanitize(json) do
for {key, val} <- json, into: %{}, do: {String.to_existing_atom(key), val}
end
def process(response) do
response
|> handle_response
|> sanitize
|> insult_to_string
end
def random_insult(to, from) do
[Enum.random(@paths_name_from), to, from]
|> request
|> process
end
def insult_to_string(insult), do: "#{insult.message} #{insult.subtitle}"
def off(to, from), do: process request(["off", to, from])
def you(to, from), do: process request(["you", to, from])
def this(from), do: process request(["this", from])
def that(from), do: process request(["that", from])
def everything(from), do: process request(["everything", from])
def everyone(from), do: process request(["everyone", from])
def donut(to, from), do: process request(["donut", to, from])
def shakespeare(to, from), do: process request(["shakespeare", to, from])
def linus(to, from), do: process request(["linus", to, from])
def king(to, from), do: process request(["king", to, from])
def pink(from), do: process request(["pink", from])
def life(from), do: process request(["life", from])
def chainsaw(to, from), do: process request(["chainsaw", to, from])
def outside(to, from), do: process request(["outside", to, from])
def thing(thing, from), do: process request([thing, from])
def thanks(from), do: process request(["thanks", from])
def flying(from), do: process request(["flying", from])
def fascinating(from), do: process request(["fascinating", from])
def madison(to, from), do: process request(["madison", to, from])
def cool(from), do: process request(["cool", from])
def field(to, from, ref), do: process request(["field", to, from, ref])
def nugget(to, from), do: process request(["nugget", to, from])
def yoda(to, from), do: process request(["yoda", to, from])
def ballmer(to, co, from), do: process request(["ballmer", to, co, from])
def what(from), do: process request(["what", from])
def because(from), do: process request(["because", from])
def caniuse(tool, from), do: process request(["caniuse", tool, from])
def bye(from), do: process request(["bye", from])
def diabetes(from), do: process request(["diabetes", from])
def bus(to, from), do: process request(["bus", to, from])
def xmas(to, from), do: process request(["xmas", to, from])
def bday(to, from), do: process request(["bday", to, from])
def awesome(from), do: process request(["awesome", from])
def tucker(from), do: process request(["tucker", from])
def bucket(from), do: process request(["bucket", from])
def family(from), do: process request(["family", from])
def shutup(to, from), do: process request(["shutup", to, from])
def keepcalm(react, from), do: process request(["keepcalm", react, from])
def dothing(act, ob, frm), do: process request(["dosomething", act, ob, frm])
def thumbs(from), do: process request(["thumbs", from])
def tard(from), do: process request(["retard", from])
end