Jump to content

API:Patrol

From mediawiki.org
This page is a translated version of the page API:Patrol and the translation is 100% complete.
Version de MediaWiki :
1.14

Requête POST pour patrouiller une page ou une révision.

Documentation de l'API

action=patrol

(main | patrol)
  • This module requires read rights.
  • This module requires write rights.
  • This module only accepts POST requests.
  • Source: MediaWiki
  • License: GPL-2.0-or-later

Patrol a page or revision.

Specific parameters:
Other general parameters are available.
rcid

Recentchanges ID to patrol.

Type: integer
revid

Revision ID to patrol.

Type: integer
tags

Change tags to apply to the entry in the patrol log.

Values (separate with | or alternative): AWB, convenient-discussions
token

A "patrol" token retrieved from action=query&meta=tokens

This parameter is required.


Exemple

Pour patrouiller une requête, il faut procéder en plusieurs étapes :

  1. Se connecter au travers de l'une des méthodes décrites sur API:Authentification .
  2. Obtenir (GET) un jeton de patrouille . Ce jeton est le même pour toutes les pages mais il est différent à chaque connexion.
  3. Envoyer une requête POST avec le jeton de patrouille, pour patrouiller une requête.

L'exemple de code ci-dessous décrit l'étape finale en détails.

Requête POST

Patrouiller une modification récente de rcid 437659.

Réponse

{
  "patrol": {
    "rcid": 437659,
    "ns": 0,
    "title": "Sandbox"
  }
}

Exemple de code

Python

#!/usr/bin/python3

"""
    patrol.py

    MediaWiki API Demos
    Demo of `Patrol` module: Patrol a recent change
    MIT license
"""

import requests

S = requests.Session()

URL = "https://test.wikipedia.org/w/api.php"

# Step 1: Retrieve a login token
PARAMS_1 = {
    "action": "query",
    "meta": "tokens",
    "type": "login",
    "format": "json"
}

R = S.get(url=URL, params=PARAMS_1)
DATA = R.json()

LOGIN_TOKEN = DATA['query']['tokens']['logintoken']

# Step 2: Send a POST request to log in. For this login
# method, obtain bot credentials by first visiting
# https://www.test.wikipedia.org/wiki/Manual:Bot_passwords
# See https://www.mediawiki.org/wiki/API:Login for more
# information on log in methods.
PARAMS_2 = {
    "action": "login",
    "lgname": "username",
    "lgpassword": "password",
    "format": "json",
    "lgtoken": LOGIN_TOKEN
}

R = S.post(URL, data=PARAMS_2)
DATA = R.json()

# Step 3: While logged in, retrieve a patrol token
PARAMS_3 = {
    "action": "query",
    "meta": "tokens",
    "type":"patrol",
    "format": "json"
}

R = S.get(url=URL, params=PARAMS_3)
DATA = R.json()

PATROL_TOKEN = DATA["query"]["tokens"]["patroltoken"]

# Step 4: Send a POST request to patrol a recent change
PARAMS_4 = {
    "action": "patrol",
    "format": "json",
    "rcid":"437659",
    "token": PATROL_TOKEN
}

R = S.post(url=URL, data=PARAMS_4)
DATA = R.json()

print(DATA)

PHP

<?php

/*
    patrol.php

    MediaWiki API Demos
	Demo of `Patrol` module: Patrol a recent change

    MIT license
*/

$endPoint = "https://test.wikipedia.org/w/api.php";

$login_Token = getLoginToken(); // Step 1
loginRequest( $login_Token ); // Step 2
$patrol_Token = getPatrolToken(); // Step 3
patrol( $patrol_Token ); // Step 4

// Step 1: GET request to fetch login token
function getLoginToken() {
	global $endPoint;

	$params1 = [
		"action" => "query",
		"meta" => "tokens",
		"type" => "login",
		"format" => "json"
	];

	$url = $endPoint . "?" . http_build_query( $params1 );

	$ch = curl_init( $url );
	curl_setopt( $ch, CURLOPT_RETURNTRANSFER, true );
	curl_setopt( $ch, CURLOPT_COOKIEJAR, "cookie.txt" );
	curl_setopt( $ch, CURLOPT_COOKIEFILE, "cookie.txt" );

	$output = curl_exec( $ch );
	curl_close( $ch );

	$result = json_decode( $output, true );
	return $result["query"]["tokens"]["logintoken"];
}

// Step 2: POST request to log in. Use of main account for login is not
// supported. Obtain credentials via Special:BotPasswords
// (https://www.mediawiki.org/wiki/Special:BotPasswords) for lgname & lgpassword
function loginRequest( $logintoken ) {
	global $endPoint;

	$params2 = [
		"action" => "login",
		"lgname" => "bot_user_name",
		"lgpassword" => "bot_password",
		"lgtoken" => $logintoken,
		"format" => "json"
	];

	$ch = curl_init();

	curl_setopt( $ch, CURLOPT_URL, $endPoint );
	curl_setopt( $ch, CURLOPT_POST, true );
	curl_setopt( $ch, CURLOPT_POSTFIELDS, http_build_query( $params2 ) );
	curl_setopt( $ch, CURLOPT_RETURNTRANSFER, true );
	curl_setopt( $ch, CURLOPT_COOKIEJAR, "cookie.txt" );
	curl_setopt( $ch, CURLOPT_COOKIEFILE, "cookie.txt" );

	$output = curl_exec( $ch );
	curl_close( $ch );

}

// Step 3: GET request to fetch Patrol token
function getPatrolToken() {
	global $endPoint;

	$params3 = [
		"action" => "query",
		"meta" => "tokens",
		"type" => "patrol",
		"format" => "json"
	];

	$url = $endPoint . "?" . http_build_query( $params3 );

	$ch = curl_init( $url );

	curl_setopt( $ch, CURLOPT_RETURNTRANSFER, true );
	curl_setopt( $ch, CURLOPT_COOKIEJAR, "cookie.txt" );
	curl_setopt( $ch, CURLOPT_COOKIEFILE, "cookie.txt" );

	$output = curl_exec( $ch );
	curl_close( $ch );

	$result = json_decode( $output, true );
	return $result["query"]["tokens"]["patroltoken"];
}

// Step 4: POST request to patrol a recent change
function patrol( $patroltoken ) {
	global $endPoint;

	$params4 = [
		"action" => "patrol",
		"rcid" => "91",
		"token" => $patroltoken,
		"format" => "json"
	];

	$ch = curl_init();

	curl_setopt( $ch, CURLOPT_URL, $endPoint );
	curl_setopt( $ch, CURLOPT_POST, true );
	curl_setopt( $ch, CURLOPT_POSTFIELDS, http_build_query( $params4 ) );
	curl_setopt( $ch, CURLOPT_RETURNTRANSFER, true );
	curl_setopt( $ch, CURLOPT_COOKIEJAR, "cookie.txt" );
	curl_setopt( $ch, CURLOPT_COOKIEFILE, "cookie.txt" );

	$output = curl_exec( $ch );
	curl_close( $ch );

	echo ( $output );
}

JavaScript

/*  
    patrol.js
 
    MediaWiki API Demos
    Demo of `Patrol` module: Patrol a recent change

    MIT license
*/

var request = require('request').defaults({jar: true}),
    url = "http://dev.wiki.local.wmftest.net:8080/w/api.php";

// Step 1: GET request to fetch login token
function getLoginToken() {
    var params_0 = {
        action: "query",
        meta: "tokens",
        type: "login",
        format: "json"
    };

    request.get({ url: url, qs: params_0 }, function (error, res, body) {
        if (error) {
            return;
        }
        var data = JSON.parse(body);
        loginRequest(data.query.tokens.logintoken);
    });
}

// Step 2: POST request to log in. 
// Use of main account for login is not
// supported. Obtain credentials via Special:BotPasswords
// (https://www.mediawiki.org/wiki/Special:BotPasswords) for lgname & lgpassword
function loginRequest(login_token) {
    var params_1 = {
        action: "login",
        lgname: "bot_username",
        lgpassword: "bot_password",
        lgtoken: login_token,
        format: "json"
    };

    request.post({ url: url, form: params_1 }, function (error, res, body) {
        if (error) {
            return;
        }
        getPatrolToken();
    });
}

// Step 3: GET request to fetch Patrol token
function getPatrolToken() {
    var params_2 = {
        action: "query",
        meta: "tokens",
        type: "patrol",
        format: "json"
    };

    request.get({ url: url, qs: params_2 }, function(error, res, body) {
        if (error) {
            return;
        }
        var data = JSON.parse(body);
        patrol(data.query.tokens.patroltoken);
    });
}

// Step 4: POST request to patrol a recent change
function patrol(patrol_token) {
    var params_3 = {
        action: "patrol",
        rcid: "104",
        token: patrol_token,
        format: "json"
    };

    request.post({ url: url, form: params_3 }, function (error, res, body) {
        if (error) {
            return;
        }
        console.log(body);
    });
}

// Start From Step 1
getLoginToken();

MediaWiki JS

/*
	patrol.js

	MediaWiki API Demos
	Demo of `Patrol` module: Patrol a recent change

	MIT License
*/

var params = {
		action: 'patrol',
		revid: '77',
		format: 'json'
	},
	api = new mw.Api();

api.postWithToken( 'patrol', params ).done( function ( data ) {
	console.log( data );
} );

Erreurs possibles

En plus des messages d'erreur standard  :

Code Informations
patroldisabled Le patrouillage est désactivé sur ce wiki
noautopatrol Vous n’avez pas le droit de marquer vos propres modifications comme relues.
Seuls les utilisateurs avec le droit autopatrol peuvent faire cela
notpatrollable La révision rid ne peut pas être patrouillée car elle est trop ancienne.
nosuchrcid Il n’y a pas de modification récente avec l’ID rcid.
nosuchrevid Il n’y a pas de révision d’ID revid.

Historique des paramètres

  • v1.27: Ajouté tags
  • v1.22: Ajouté revid

Notes supplémentaires

  • Pour les versions de MediaWiki antérieures à la 1.17, le jeton de patrouille est le même que le jeton de modification.
  • Les droits autopatrol sont nécessaires pour utiliser ce module.
  • Les valeurs revid et rcid peuvent être obtenues en utilisant API:Recentchanges .