defmodule Wiki.Rest do @moduledoc """ Streamlined interface for reading pages and fetching basic information. See upstream references: - https://www.mediawiki.org/wiki/Parsoid/API - https://www.mediawiki.org/wiki/Specs/HTML - https://www.mediawiki.org/wiki/Special:MyLanguage/API:REST_API - https://www.mediawiki.org/wiki/API:REST_API/Reference - https://www.wikidata.org/wiki/Special:MyLanguage/Wikidata:REST_API Older backend: - https://www.mediawiki.org/wiki/Wikimedia_REST_API """ @doc """ Fetch rendered page HTML with RDFa annotations. ``` Wiki.Rest.page_html(:enwiki, "Earth") ``` """ def page_html(site, title, _revision \\ nil) do Wiki.SiteMatrix.get!(site) |> rest_url("/page/#{title}/html") |> Tesla.get!() end def page_images(site, title) do Wiki.SiteMatrix.get!(site) |> rest_url("/page/#{title}/links/media") |> Tesla.get!() end defp rest_url(site, path) when is_struct(site, Wiki.SiteMatrix.Spec) do "#{site.base_url}/w/rest.php/v1#{path}" end end