gbirke / mediawiki-api
MediaWiki API 客户端
dev-master / 1.0.x-dev
2014-02-06 16:06 UTC
Requires
- php: >=5.3.2
- guzzle/guzzle: ~3.2
This package is auto-updated.
Last update: 2024-08-27 02:13:30 UTC
README
这是一个 MediaWiki API 的客户端。它使用了Guzzle 网络服务库。客户端 API 是基于 Guzzle\Service\Client
的自定义网络服务客户端。
警告 此客户端功能尚不完整!它仅实现了我现在需要的 API 函数。请随意通过扩展json 文件并添加测试来贡献。
安装
使用 composer 安装库及其所有依赖项
composer require "gbirke/mediawiki-api:dev-master"
使用示例
解析 Wiki 文本
require 'vendor/autoload.php'; use Birke\Mediawiki\Api\MediawikiApiClient; $client = MediawikiApiClient::factory(); $parse = $client->getCommand('parse', array( 'text' => "= Wiki = \n This is test text. \n\nSecond Paragraph\n\n== Foo ==\nLorem Ipsum", 'contentmodel' => 'wikitext' )); $result = $help->execute(); print_r($result);
登录并上传文件
require 'vendor/autoload.php'; use Birke\Mediawiki\Api\MediawikiApiClient; $client = MediawikiApiClient::factory(array( 'base_url' => "http://localhost/w/api.php", )); $credentials = array( 'lgname' => 'Uploader', 'lgpassword' => 'my_super_secret_pw' ); // Use magic methods $result = $client->login($credentials); //print_r($result); $resultMsg = $result['login']['result']; if ($resultMsg != "NeedToken" && $resultMsg != "Success") { die("Login failed: $resultMsg"); } // First auth returns "NeedToken", reauthenticate with token if ($resultMsg == "NeedToken") { $result = $client->login(array_merge(array( 'lgtoken' => $result['login']['token'] ), $credentials)); //print_r($result); } // Get an edit token (default value for "type") $tokens = $client->tokens(); //print_r($tokens); // Upload a file $result = $client->upload(array( 'filename' => 'Thingie.jpg', 'token' => $tokens['tokens']['edittoken'], 'file' => "path/to/your/image.jpg", 'ignorewarnings' => true // Set this to false if you don't want to override files )); print_r($result); // Cleanup session $client->logout();
使用 Session 类处理上传时的凭据
由于编辑是一个常见的任务,您可以使用 Session 类来减少登录和获取登录令牌所需的代码量
require 'vendor/autoload.php'; use Birke\Mediawiki\Api\MediawikiApiClient; use Birke\Mediawiki\Api\Session; use Birke\Mediawiki\Api\SessionException; $client = MediawikiApiClient::factory(array( 'base_url' => "http://localhost/w/api.php", )); $session = new Session($client); try { $session->login('Uploader', 'my_super_secret_pw'); $token = $session->getEditToken(); // Upload a file $result = $client->upload(array( 'filename' => 'Thingie.jpg', 'token' => $token, 'file' => "path/to/your/image.jpg", 'ignorewarnings' => true // Set this to false if you don't want to override files )); // Cleanup session $session->logout(); } catch(SessionException $e) { echo "Something went wrong: ".$e->getMessage(); }