Difference between revisions of "User:Hexmode"

From Virtuverse Wiki
Jump to navigation Jump to search
(Created page with "== Welcome to Virtuverse Wiki == [https://virtuverse.io/ Virtuverse] implements an immersive combat experience on top of third-person gameplay, A system without levels or cla...")
 
 
Line 1: Line 1:
== Welcome to Virtuverse Wiki ==
+
<languages/>
 +
{{API}}
 +
{{MW 1.12|and after}}
 +
<translate>
 +
<!--T:1-->
 +
'''POST request''' to move a page.
  
[https://virtuverse.io/ Virtuverse] implements an immersive combat experience on top of third-person gameplay, A system without levels or classes lets every player use all types of weapons, armor and abilities. With no levels, there is no need to force players through a grind of kill and fetch quests. In Virtuverse, the story augments the worlds and themes of the planets. Players join forces to advance the story together, they can either defend a strategic point or let it be lost to the enemy.
+
== API documentation == <!--T:2-->
 +
</translate>
 +
{| style="color: black; background-color: #f8f8f8; border-spacing: 20px; border: 1px solid darkgray;"
 +
| {{Api help|move}}
 +
|}
  
In Virtuverse, everything has a value, from a single energy cell to a suit of armour. A player hunting a monster will use ammo which has a value, the amount of loot they get in return will be proportional to the value spent.
+
<translate>
 +
== Example == <!--T:3-->
  
== Site News ==
+
<!--T:4-->
 +
Making any POST request is a multi-step process:
 +
</translate>
  
04 Aug 2019 - Virtuverse Wiki Launched!
+
<ol>
 +
<li><translate><!--T:5--> Log in, via one of the methods described on <tvar|1>{{ll|API:Login}}</>.</translate></li>
 +
<li><translate><!--T:6--> GET a {{<tvar|1>ll|Manual:Edit token</>|CSRF token}}.</translate>
 +
::{{ApiEx
 +
|p1=action=query
 +
|p2=format=json
 +
|p3=meta=tokens
 +
}}
 +
</li>
 +
<li><translate><!--T:7--> Send a POST request, with the CSRF token, to take action on a page.</translate></li>
 +
</ol>
  
== This wiki is still in development ==
+
<translate>
 +
<!--T:8-->
 +
The sample code below covers the final step in detail.
  
You can track the development of this wiki through [[Site_Development|here]]
+
=== POST request === <!--T:9-->
 +
</translate>
 +
{{ApiEx|
 +
|desc=<translate><!--T:10--> Move "<tvar|1>CurrentTitle</>" and its talk page to "<tvar|2>Page with new title</>", without creating a redirect.</translate>
 +
|p1=action=move
 +
|p2=from=CurrentTitle
 +
|p3=to=Page%20with%20new%20title
 +
|p4=reason=wrong%20title
 +
|p5=movetalk=1
 +
|p6=noredirect=1
 +
|p7=token=sampleCsrfToken123+/
 +
}}
 +
 
 +
<translate>
 +
=== Response === <!--T:11-->
 +
</translate>
 +
<div style="width:60%;">
 +
<syntaxhighlight lang="json">
 +
{
 +
    "move": {
 +
        "from": "CurrentTitle",
 +
        "to": "Page with new title",
 +
        "reason": "wrong title",
 +
        "talkfrom": "Talk:CurrentTitle",
 +
        "talkto": "Talk:Page with new title"
 +
    }
 +
}
 +
</syntaxhighlight>
 +
</div>
 +
 
 +
<translate>
 +
=== Sample code === <!--T:12-->
 +
</translate>
 +
'''''move.py'''''
 +
<div style="width:60%;">
 +
<syntaxhighlight lang="python3">
 +
#!/usr/bin/python3
 +
 
 +
"""
 +
    move.py
 +
    MediaWiki Action API Code Samples
 +
    Demo of `Move` module: Move a page with its
 +
    talk page, without a redirect.
 +
    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 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": "user_name",
 +
    "lgpassword": "password",
 +
    "format": "json",
 +
    "lgtoken": LOGIN_TOKEN
 +
}
 +
 
 +
R = S.post(URL, data=PARAMS_2)
 +
DATA = R.json()
 +
 
 +
# Step 3: While logged in, retrieve a CSRF token
 +
PARAMS_3 = {
 +
    "action": "query",
 +
    "meta": "tokens",
 +
    "format": "json"
 +
}
 +
 
 +
R = S.get(url=URL, params=PARAMS_3)
 +
DATA = R.json()
 +
 
 +
CSRF_TOKEN = DATA["query"]["tokens"]["csrftoken"]
 +
 
 +
# Step 4: Send a POST request to move the page
 +
PARAMS_4 = {
 +
    "action": "move",
 +
    "format": "json",
 +
    "from": "Current title",
 +
    "to": "Page with new title",
 +
    "reason": "wrong title",
 +
    "movetalk": "1",
 +
    "noredirect": "1",
 +
    "token": CSRF_TOKEN
 +
}
 +
 
 +
R = S.post(url=URL, data=PARAMS_4)
 +
DATA = R.text
 +
 
 +
print(DATA)
 +
 
 +
</syntaxhighlight>
 +
</div>
 +
 
 +
<translate>
 +
== Possible errors == <!--T:13-->
 +
</translate>
 +
{| class="wikitable sortable"
 +
|+
 +
!<translate><!--T:14--> Code</translate>
 +
!<translate><!--T:15--> Info</translate>
 +
|-
 +
| nofrom || {{int|apierror-missingparam|from}}
 +
|-
 +
| noto || {{int|apierror-missingparam|to}}
 +
|-
 +
| notoken || {{int|apierror-missingparam|token}}
 +
|-
 +
| cantmove-anon || Anonymous users can't move pages
 +
|-
 +
| cantmove || {{int|apierror-permissiondenied|{{int|action-move}} }}
 +
|-
 +
| cantmovefile || {{int|apierror-permissiondenied|{{int|action-movefile}} }}<br />{{note|1=<translate><!--T:16--> If file moving is disabled altogether, you'll get an immobilenamespace error instead</translate>}}
 +
|-
 +
| selfmove || Can't move a page to itself
 +
|-
 +
| immobilenamespace || You tried to move pages from or to a namespace that is protected from moving
 +
|-
 +
| articleexists || The destination article already exists and is not a redirect to the source article
 +
|-
 +
| protectedpage || You don't have permission to perform this move
 +
|-
 +
| protectedtitle || The destination article has been protected from creation
 +
|-
 +
| nonfilenamespace || {{int|imagenocrossnamespace}}
 +
|-
 +
| filetypemismatch || {{int|imagetypemismatch}}
 +
|-
 +
| mustbeposted || {{int|apierror-mustbeposted|move}}
 +
|}
 +
 
 +
<translate>
 +
== Parameter history == <!--T:17-->
 +
</translate>
 +
* v1.29: <translate><!--T:18--> Introduced <tvar|1><code>tags</code></></translate>
 +
* v1.17: <translate><!--T:19--> Deprecated <tvar|1><code>watch</code>, <code>unwatch</code></></translate>
 +
* v1.17: <translate><!--T:20--> Introduced <tvar|1><code>watchlist</code></></translate>
 +
 
 +
<translate>
 +
== Additional notes == <!--T:21-->
 +
 
 +
<!--T:22-->
 +
* Successful use of the <tvar|1><code>noredirect</code></> parameter requires the <tvar|2><code>{{ll|Manual:User rights|suppressredirect}}</code></> right, which is granted to bots and sysops, not ordinary users.</translate>
 +
<translate>
 +
<!--T:23-->
 +
* Creating a redirect is the API's default behavior.</translate> <translate><!--T:24--> If you do not have the <tvar|1><code>{{ll|Manual:User rights|suppressredirect}}</code></> right, the API will not return an error; it will simply create a redirect.</translate>
 +
<translate>
 +
<!--T:25-->
 +
* The Move API uses two additional error handling methods when the page move succeeded, but the talk page or subpage move failed:
 +
</translate>
 +
** {{ll|Manual:Namespace#Subject_and_talk_namespaces|<translate><!--T:26--> Talk page</translate>}} - <translate><!--T:27--> The relevant error will be returned in the <tvar|1><code>talkmove-error-code</code></> and <tvar|2><code>talkmove-error-info</code></> fields.</translate>
 +
** {{ll|Help:Subpages|<translate><!--T:28--> Subpage</translate>}} - <translate><!--T:29-->
 +
The relevant error will be returned as a standard <tvar|1><code>code</code>/<code>info</code></> structure under the <tvar|2><code>subpages</code></> key.
 +
 
 +
== See also == <!--T:30-->
 +
</translate>
 +
* {{ll|API:Import}} - <translate><!--T:31--> interwiki imports allow for an alternate way to move pages around a wiki.</translate>

Latest revision as of 10:48, 6 August 2019

<languages/> Template:API Template:MW 1.12 <translate> POST request to move a page.

API documentation

</translate>

Template:Api help

<translate>

Example

Making any POST request is a multi-step process: </translate>

  1. <translate> Log in, via one of the methods described on <tvar|1>Template:Ll</>.</translate>
  2. <translate> GET a {{<tvar|1>ll|Manual:Edit token</>|CSRF token}}.</translate>
    Template:ApiEx
  3. <translate> Send a POST request, with the CSRF token, to take action on a page.</translate>

<translate> The sample code below covers the final step in detail.

POST request

</translate> Template:ApiEx

<translate>

Response

</translate>

<syntaxhighlight lang="json"> {

   "move": {
       "from": "CurrentTitle",
       "to": "Page with new title",
       "reason": "wrong title",
       "talkfrom": "Talk:CurrentTitle",
       "talkto": "Talk:Page with new title"
   }

} </syntaxhighlight>

<translate>

Sample code

</translate> move.py

<syntaxhighlight lang="python3">

  1. !/usr/bin/python3

"""

   move.py
   MediaWiki Action API Code Samples
   Demo of `Move` module: Move a page with its
   talk page, without a redirect.
   MIT license

"""

import requests

S = requests.Session()

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

  1. 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']

  1. Step 2: Send a POST request to log in. For this login
  2. method, obtain credentials by first visiting
  3. https://www.test.wikipedia.org/wiki/Manual:Bot_passwords
  4. See https://www.mediawiki.org/wiki/API:Login for more
  5. information on log in methods.

PARAMS_2 = {

   "action": "login",
   "lgname": "user_name",
   "lgpassword": "password",
   "format": "json",
   "lgtoken": LOGIN_TOKEN

}

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

  1. Step 3: While logged in, retrieve a CSRF token

PARAMS_3 = {

   "action": "query",
   "meta": "tokens",
   "format": "json"

}

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

CSRF_TOKEN = DATA["query"]["tokens"]["csrftoken"]

  1. Step 4: Send a POST request to move the page

PARAMS_4 = {

   "action": "move",
   "format": "json",
   "from": "Current title",
   "to": "Page with new title",
   "reason": "wrong title",
   "movetalk": "1",
   "noredirect": "1",
   "token": CSRF_TOKEN

}

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

print(DATA)

</syntaxhighlight>

<translate>

Possible errors

</translate>

<translate> Code</translate> <translate> Info</translate>
nofrom Template:Int
noto Template:Int
notoken Template:Int
cantmove-anon Anonymous users can't move pages
cantmove Template:Int
cantmovefile Template:Int
Template:Note
selfmove Can't move a page to itself
immobilenamespace You tried to move pages from or to a namespace that is protected from moving
articleexists The destination article already exists and is not a redirect to the source article
protectedpage You don't have permission to perform this move
protectedtitle The destination article has been protected from creation
nonfilenamespace Template:Int
filetypemismatch Template:Int
mustbeposted Template:Int

<translate>

Parameter history

</translate>

  • v1.29: <translate> Introduced <tvar|1>tags</></translate>
  • v1.17: <translate> Deprecated <tvar|1>watch, unwatch</></translate>
  • v1.17: <translate> Introduced <tvar|1>watchlist</></translate>

<translate>

Additional notes

  • Successful use of the <tvar|1>noredirect</> parameter requires the <tvar|2>Template:Ll</> right, which is granted to bots and sysops, not ordinary users.</translate>

<translate>

  • Creating a redirect is the API's default behavior.</translate> <translate> If you do not have the <tvar|1>Template:Ll</> right, the API will not return an error; it will simply create a redirect.</translate>

<translate>

  • The Move API uses two additional error handling methods when the page move succeeded, but the talk page or subpage move failed:

</translate>

    • Template:Ll - <translate> The relevant error will be returned in the <tvar|1>talkmove-error-code</> and <tvar|2>talkmove-error-info</> fields.</translate>
    • Template:Ll - <translate>

The relevant error will be returned as a standard <tvar|1>code/info</> structure under the <tvar|2>subpages</> key.

See also

</translate>

  • Template:Ll - <translate> interwiki imports allow for an alternate way to move pages around a wiki.</translate>