View Source Elixir MediaWiki client

Unofficial client modules for connecting to Wikipedia, Wikidata, and other MediaWiki sites from Elixir code. Supports multiple APIs: Action, EventStreams, and Scoring.

API reference for the current version: Documentation and examples

Overview:

installation

Installation

Install this package by adding mediawiki_client to your dependencies in mix.exs,

def deps do
  [
    {:mediawiki_client, "~> 0.4.0"}
  ]
end

Documentation is generated with mix docs.

updating

Updating

The change log will have information about new features and any breaking changes. Expect the interfaces to evolve until the 1.0 release is reached.

usage

Usage

Fetch some statistics about German Wikipedia,

Wiki.SiteMatrix.new()
|> Wiki.SiteMatrix.get!("dewiki")
|> Wiki.Action.new()
|> Wiki.Action.get!(
  action: :query,
  meta: :siteinfo,
  siprop: :statistics
)
# %Wiki.Action.Session{
#   ...
#   result: %{
#     "batchcomplete" => true,
#     "query" => %{
#       "statistics" => %{
#         "activeusers" => 19687,
#         "admins" => 188,
#         "articles" => 2583285,
#         "edits" => 211219883,
#         "images" => 130199,
#         "jobs" => 0,
#         "pages" => 7163473,
#         "queued-massmessages" => 0,
#         "users" => 3715461
#       }
#     }
#   },
#   ...
# }

See the source documentation for more examples.

error-handling

Error handling

Methods come in an assertive and a non-assertive form, for example the Wiki.Action.get() method returns an {:ok, ...} or a {:error, ...} tuple, and the Wiki.Action.get!() method raises an error directly.

development

Development

The project homepage is on GitLab. To contribute, feel free to start with an issue, push a merge request, or contact maintainers.

To run all tests,

mix test.all

To generate a test coverage report,

mix coveralls.html