gbirke/mediawiki-api

MediaWiki API 客户端

dev-master / 1.0.x-dev 2014-02-06 16:06 UTC

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();
}