27 releases
| 0.7.0 | Aug 29, 2025 |
|---|---|
| 0.7.0-rc.2 | Nov 23, 2024 |
| 0.7.0-rc.1 | Jun 2, 2024 |
| 0.6.1 | Nov 10, 2024 |
| 0.2.2 | Jun 22, 2021 |
#1099 in Web programming
576 downloads per month
Used in 2 crates
66KB
1.5K
SLoC
mwapi
A MediaWiki API client library.
mwapi is a low-level library for the MediaWiki Action API.
If you intend to edit pages or want a higher-level interface, it's recommended to use mwbot,
which builds on top of this crate.
Goals
- generic to fit any application, whether for interactive usage or writing a bot
- fully compatible with concurrent use cases
- turns MediaWiki errors into Rust errors for you
- logging (using the
tracingcrate) for visiblity into errors - follow all best practices
Quick start
let client = mwapi::Client::builder("https://en.wikipedia.org/w/api.php")
.set_user_agent("mwapi demo")
// Provide credentials for login:
// .set_botpassword("username", "password")
.build().await?;
let resp = client.get_value(&[
("action", "query"),
("prop", "info"),
("titles", "Taylor Swift"),
]).await?;
let info = resp["query"]["pages"][0].clone();
assert_eq!(info["ns"].as_u64().unwrap(), 0);
assert_eq!(info["title"].as_str().unwrap(), "Taylor Swift");
Functionality
- authentication, using OAuth2 (recommended) or BotPasswords
- error handling, transforming MediaWiki errors into Rust ones
- CSRF token handling with
post_with_token - rate limiting and concurrency controls
- file uploads (needs
uploadfeature)
See also
mwbotprovides a higher level interface to interacting with MediaWikimwapi_responsesis a macro to generate strict types for dynamic API queries
Contributing
mwapi is a part of the mwbot-rs project.
We're always looking for new contributors, please reach out
if you're interested!
License
This crate is released under GPL-3.0-or-later. See COPYING for details.
Dependencies
~11–28MB
~280K SLoC