Packages

API client library for any MediaWiki-based site, such as Wikipedia or Wikimedia Commons. Provides the Action API, realtime feed ingestion, and ORES scoring.

Current section

Files

Jump to
wiki_elixir lib rest util.ex
Raw

lib/rest/util.ex

defmodule Wiki.Rest.Util do
@spec normalize_title(String.t()) :: String.t()
def normalize_title(title) do
title |> String.replace(" ", "_")
end
@spec get_body(String.t()) :: map()
def get_body(url) do
%Tesla.Env{body: body} = Tesla.get!(client(), url)
body
end
@spec default_start_day() :: String.t()
def default_start_day() do
Timex.today()
|> Timex.shift(days: -7)
|> daystamp
end
@spec today() :: String.t()
def today() do
Timex.today()
|> daystamp
end
@spec daystamp(Date.t()) :: String.t()
def daystamp(datetime) do
datetime |> Timex.format!("{YYYY}{0M}{0D}")
end
@spec client() :: Tesla.Client.t()
defp client() do
middleware = [
{Tesla.Middleware.Compression, format: "gzip"},
{Tesla.Middleware.Headers,
[
{"user-agent", Application.get_env(:wiki_elixir, :user_agent)}
]},
Tesla.Middleware.JSON
]
Tesla.client(middleware)
end
end