Modification de Documentation de l'API Jeuxvideo.com
La modification peut être annulée. Veuillez vérifier les différences ci-dessous pour voir si c’est bien ce que vous voulez faire, puis publier ces changements pour finaliser l’annulation de cette modification.
Version actuelle | Votre texte | ||
Ligne 1 : | Ligne 1 : | ||
L''''API de [[ | L''''API de [[Jeuxvideo.com]]''', utilisée à l'origine par les applications mobiles de Jeuxvideo.com, permet de développer plus facilement des applications, sites web, et autres scripts en rapport avec Jeuxvideo.com. | ||
Elle est au format JSON<ref>https://fr.wikipedia.org/wiki/JavaScript_Object_Notation</ref>, ce qui fait qu'elle est plus facile à parser<ref>[https://fr.wiktionary.org/wiki/parser#:~:text=Verbe,-parser%20%5Cpa%CA%81.se&text=(Anglicisme%20informatique)%20(Programmation),ou%20en%20extraire%20des%20%C3%A9l%C3%A9ments. https://fr.wiktionary.org/wiki/parser#:~:text=Verbe,-parser%20%5Cpa%CA%81.se&text=(Anglicisme%20informatique)%20(Programmation),ou%20en%20extraire%20des%20%C3%A9l%C3%A9ments.]</ref>, mais aussi plus rapide à charger qu'une page web normale. | |||
L'ancienne API était hébergée sur le sous-domaine "ws". Désormais, l'API est hébergée sur le sous-domaine "api", et est actuellement à sa quatrième version (v4). | |||
= | =API v4= | ||
L'API v4 utilise un système de sécurité afin que même personne ne puisse accéder à l'API. Pour pouvoir accéder y accéder, l'''Header'' de vos requêtes devra toujours être de la forme : | |||
Pour pouvoir | |||
<pre> | <pre> | ||
Jvc-Authorization: "'''''<u>header</u>'''''" | |||
"User-Agent": "JeuxVideo-Android/267" | |||
"Content-Type" : "application/json" | |||
</pre> | </pre> | ||
Où '''''header''''' est égal à une chaîne de charactère de cette forme : ''"PartnerKey='''<u>partner_key</u>''', Signature='''<u>signature</u>''', Timestamp='''<u>date</u>'''".'' (Voir section rétro-ingénierie pour plus d'information) | |||
'''Voici un script [https://www.python.org/ python] qui construit la signature''' | |||
import hashlib | |||
from datetime import datetime | |||
api_version = 4 | |||
partner_key = "550c04bf5cb2b" | |||
date = datetime.utcnow().isoformat() | |||
method = "POST" | |||
signature = hashlib.sha256(f"{self.partner_key}\n{date}\n{method}\napi.jeuxvideo.com\n/v{self.api_version}/{path}".encode()).hexdigest() | |||
header = f"PartnerKey={partner_key}, Signature={signature}, Timestamp={date}" | |||
= | |||
= | |||
== | == API endpoints == | ||
{{BoxNotice|Aucun des endpoints n'a été testé pour l'instant, si vous remarquez qu'une information est erronée ou si vous êtes assez compétent en programmation pour nous aider à complèter la documentation, n'hésitez pas à venir sur le [https://discord.gg/wKBSHv2mdU discord de Jvflux] }} | |||
URL de base de l'API : ''<nowiki>https://api.jeuxvideo.com/v4/</nowiki>'' | |||
* '''T''' : Est-ce que l'endpoint à été testé ? N = non, O = Oui | |||
* '''URL''' : URL de l'endpoint | |||
* '''PARAMS''' : Variable entre accolades à remplacer dans l'URL, suivi de son type ''str'' ou ''int''. | |||
** <code>contents/{contentID}/comments</code> doit être appelé comme suivant <code>contents/someID1234/comments</code> | |||
* '''QUERY''' : Exemple : <code>api.jeuxvideo.com/v4/contents/1234ID/comments?page=1&perPage=30</code> | |||
* '''BODY''' : Corps de la requête au format JSON donc <code>"content": "commentaire"</code> sera en réalité : | |||
<pre> | <pre> | ||
{ | |||
"content": "commentaire" | |||
" | } | ||
</pre> | </pre> | ||
{| class="wikitable mw-collapsible" | |||
|+''POST'' | |||
!NOM | !NOM | ||
! | !URL | ||
!PARAMS | !PARAMS | ||
!BODY | !BODY | ||
!T | |||
|- | |- | ||
|addComment | |addComment | ||
|contents/{contentID}/comments | |contents/{contentID}/comments | ||
|'''contentID''' | |'''contentID''' str | ||
|<pre>"content": "commentaire"</pre> | |<pre>"content": "commentaire"</pre> | ||
|N | |||
|- | |- | ||
|addCommentVote | |addCommentVote | ||
|contents/{contentID}/comments/{commentID}/vote | |contents/{contentID}/comments/{commentID}/vote | ||
|'''contentID''' | |'''contentID''' str | ||
'''commentID''' | '''commentID''' str | ||
|<pre>"type": 1 ou -1</pre> | |<pre>"type": 1 ou -1</pre> | ||
|N | |||
|- | |||
|addFavorisGames | |||
|accounts/{accountId}/favorites/games | |||
|'''accountId''' str | |||
|<pre>"games": [{ | |||
"id": 1,</code> | |||
"machine": 100 | |||
]} | |||
</pre> | |||
|N | |||
|- | |- | ||
|addReply | |addReply | ||
|contents/{contentID}/comments/{commentID}/answers | |contents/{contentID}/comments/{commentID}/answers | ||
|'''contentID''' | |'''contentID''' str | ||
'''commentID''' | '''commentID''' str | ||
|< | |<code>"content": "Super jeu !"</code> | ||
|N | |||
|- | |- | ||
|addReview | |addReview | ||
|games/{id}/{machine}/reviews/users | |games/{id}/{machine}/reviews/users | ||
|'''id''' int | |'''id''' int | ||
'''machine''' | '''machine''' str | ||
|<pre>"content": "Super jeu !", | |<pre>"content": "Super jeu !", | ||
"mark": 4, | "mark": 4,</code> | ||
"onProfile": true | "onProfile": true | ||
</pre> | </pre> | ||
|N | |||
|- | |- | ||
|login | |login | ||
|accounts/login | |accounts/login | ||
| | | | ||
| | |"alias": "pseudo", | ||
"password": "mot_de_passe" | |||
"password": "mot_de_passe" | |||
|O | |||
|- | |- | ||
|logout | |logout | ||
Ligne 196 : | Ligne 103 : | ||
| | | | ||
| | | | ||
|O | |||
|- | |- | ||
|register | |register | ||
|accounts/register | |accounts/register | ||
''l'<nowiki/>'''Header''' doit inclure'' : <code>"Jvc-Auth-Token" : str</code> | |||
| | |||
|<pre>"email": "email", | |<pre>"email": "email", | ||
"alias": "pseudo", | "alias": "pseudo", | ||
Ligne 205 : | Ligne 114 : | ||
"optin": false | "optin": false | ||
</pre> | </pre> | ||
|N | |||
|- | |- | ||
|reinitPassword | |reinitPassword | ||
|accounts/reset | |accounts/reset | ||
| | | | ||
|<pre>"alias": "pseudo", | |<pre>"alias": "pseudo", | ||
"password": "nouveau", | "password": "nouveau",</code> | ||
"session": "", | |||
"captcha": { | "session": "",</code> | ||
"imageKey": "", | |||
"imageName": "", | "captcha": {</code> | ||
"imageValues": [ | "imageKey": "",</code> | ||
"val1", | "imageName": "",</code> | ||
"val2" | "imageValues": [</code> | ||
"val1",</code> | |||
"val2" ]} | |||
</pre> | </pre> | ||
|N | |||
|- | |- | ||
|reportAccount | |reportAccount | ||
|accounts/{accountId}/report | |accounts/{accountId}/report | ||
|'''accountId''' | |'''accountId''' str | ||
|< | |<code>"reason": 1,</code> | ||
"message": "Raison"</ | |||
<code>"message": "Raison"</code> | |||
|N | |||
|- | |- | ||
| reportComment | |reportComment | ||
|contents/{contentID}/comments/{commentID}/report | |contents/{contentID}/comments/{commentID}/report | ||
|'''contentID''' | |'''contentID''' str | ||
'''commentID''' | '''commentID''' str | ||
|<pre>"reason": 1, | |<pre>"reason": 1, | ||
"message": "Raison", | "message": "Raison", | ||
Ligne 240 : | Ligne 153 : | ||
} | } | ||
</pre> | </pre> | ||
|N | |||
|- | |- | ||
|reportReview | |reportReview | ||
|games/{id}/{machine}/reviews/users/{reviewId}/report | |games/{id}/{machine}/reviews/users/{reviewId}/report | ||
|'''id''' int | |'''id''' int | ||
'''machine''' | '''machine''' str | ||
'''reviewId''' int | '''reviewId''' int | ||
|<pre>"reason": 1, | |<pre>"reason": 1, | ||
Ligne 253 : | Ligne 167 : | ||
"valeur_captcha": "" | "valeur_captcha": "" | ||
}</pre> | }</pre> | ||
|N | |||
|- | |- | ||
|restoreComment | |restoreComment | ||
|contents/{contentID}/comments/{commentID} | |contents/{contentID}/comments/{commentID} | ||
|'''contentID''' | |'''contentID''' str | ||
'''commentID''' | '''commentID''' str | ||
| | |"content" : "comment" | ||
|N | |||
|- | |- | ||
|validateAccount | |validateAccount | ||
Ligne 268 : | Ligne 184 : | ||
"password": "mdp" | "password": "mdp" | ||
</pre> | </pre> | ||
|N | |||
|- | |- | ||
|validateSignature | |validateSignature | ||
Ligne 275 : | Ligne 192 : | ||
"signed_data": "signed_data" | "signed_data": "signed_data" | ||
</pre> | </pre> | ||
| | |N | ||
|} | |} | ||
{| class="wikitable mw-collapsible" | |||
{| class="wikitable" | |||
|+GET | |+GET | ||
!NOM | !NOM | ||
! | !URL | ||
!PARAMS | !PARAMS | ||
!QUERY | !QUERY | ||
!HEADER | |||
!T | |||
|- | |- | ||
|config | |config | ||
Ligne 319 : | Ligne 207 : | ||
| | | | ||
| | | | ||
|'''If-None-Match''' str | |||
|N | |||
|- | |- | ||
|getAccount | |getAccount | ||
|accounts/{accountId} | |accounts/{accountId} | ||
|'''accountId''' | |'''accountId''' str | ||
| | | | ||
| | |||
|N | |||
|- | |- | ||
|getAllFavorisGames | |getAllFavorisGames | ||
|accounts/{accountId}/favorites/games/all | |accounts/{accountId}/favorites/games/all | ||
|'''accountId''' | |'''accountId''' str | ||
| | | | ||
| | |||
|N | |||
|- | |- | ||
|getArticle | |getArticle | ||
Ligne 334 : | Ligne 228 : | ||
|'''id''' int | |'''id''' int | ||
| | | | ||
| | |||
|N | |||
|- | |||
|getArticleList | |||
|''rétro-ingénierie à faire'' | |||
| | |||
|'''page''' int | |||
'''perPage''' int | |||
'''types''' str | |||
|'''If-None-Match''' str | |||
|N | |||
|- | |- | ||
|getCaptcha | |getCaptcha | ||
Ligne 339 : | Ligne 244 : | ||
| | | | ||
|'''nb''' int | |'''nb''' int | ||
| | |||
|N | |||
|- | |- | ||
|getChroniclesSummary | |getChroniclesSummary | ||
Ligne 344 : | Ligne 251 : | ||
| | | | ||
|'''machines''' str | |'''machines''' str | ||
| | |||
|N | |||
|- | |- | ||
|getComment | |getComment | ||
|contents/{contentID}/comments/{commentID} | |contents/{contentID}/comments/{commentID} | ||
|'''contentID''' | |'''contentID''' str | ||
'''commentID''' | '''commentID''' str | ||
| | | | ||
| | |||
|N | |||
|- | |- | ||
|getCommentAnswers | |getCommentAnswers | ||
|contents/{contentID}/comments/{commentID}/answers | |contents/{contentID}/comments/{commentID}/answers | ||
|'''contentID''' | |'''contentID''' str | ||
'''commentID''' | '''commentID''' str | ||
| | | | ||
| | |||
|N | |||
|- | |- | ||
|getComments | |getComments | ||
|contents/{contentID}/comments | |contents/{contentID}/comments | ||
|'''contentID''' | |'''contentID''' str | ||
|'''page''' int | |'''page''' int | ||
'''perPage''' int | '''perPage''' int | ||
| | |||
|N | |||
|- | |- | ||
|getContentBean | |getContentBean | ||
|contents/{id} | |contents/{id} | ||
|'''id''' int | |'''id''' int | ||
| | |||
| | |||
| | | | ||
|- | |- | ||
|getContentList | |getContentList | ||
| | |''rétro-ingénierie à faire'' | ||
| | | | ||
|'''categories''' str | |'''categories''' str | ||
Ligne 377 : | Ligne 294 : | ||
'''page''' int | '''page''' int | ||
'''perPage''' int | '''perPage''' int | ||
| | |||
|N | |||
|- | |- | ||
|getCurrentAccountReport | |getCurrentAccountReport | ||
|accounts/{accountId}/report | |accounts/{accountId}/report | ||
|'''accountId''' | |'''accountId''' str | ||
| | |||
| | |||
| | | | ||
|- | |- | ||
|getCurrentCommentReport | |getCurrentCommentReport | ||
|contents/{contentID}/comments/{commentID}/report | |contents/{contentID}/comments/{commentID}/report | ||
|'''contentID''' | |'''contentID''' str | ||
'''commentID''' | '''commentID''' str | ||
| | | | ||
| | |||
|N | |||
|- | |- | ||
|getCurrentReviewReport | |getCurrentReviewReport | ||
Ligne 395 : | Ligne 318 : | ||
'''reviewId''' int | '''reviewId''' int | ||
| | | | ||
| | |||
|N | |||
|- | |- | ||
| | |getFavoris | ||
|accounts/{accountId}/favorites | |accounts/{accountId}/favorites | ||
|'''accountId''' | |'''accountId''' str | ||
| | | | ||
| | |||
|N | |||
|- | |- | ||
| | |getFavorisForum | ||
|accounts/{accountId}/favorites/forums | |accounts/{accountId}/favorites/forums | ||
|'''accountId''' | |'''accountId''' str | ||
|'''page''' int | |'''page''' int | ||
'''perPage''' int | '''perPage''' int | ||
| | |||
|N | |||
|- | |- | ||
| | |getFavorisGames | ||
|accounts/{accountId}/favorites/games | |accounts/{accountId}/favorites/games | ||
|'''accountId''' | |'''accountId''' str | ||
| | | | ||
| | |||
|N | |||
|- | |- | ||
| | |getFavorisTopics | ||
|accounts/{accountId}/favorites/topics | |accounts/{accountId}/favorites/topics | ||
|'''accountId''' | |'''accountId''' str | ||
|'''page''' int | |'''page''' int | ||
'''perPage''' int | '''perPage''' int | ||
| | |||
|N | |||
|- | |- | ||
|getFolder | |getFolder | ||
|contents/{id} | |contents/{id} | ||
|'''id''' int | |'''id''' int | ||
| | | | ||
| | |||
|N | |||
|- | |- | ||
|getGame | |getGame | ||
Ligne 428 : | Ligne 363 : | ||
'''machine''' str | '''machine''' str | ||
| | | | ||
| | |||
|N | |||
|- | |- | ||
| getGameDetails | |getGameDetails | ||
|games/{id}/{machine}/details | |games/{id}/{machine}/details | ||
|'''id''' int | |'''id''' int | ||
'''machine''' str | '''machine''' str | ||
| | | | ||
| | |||
|N | |||
|- | |- | ||
|getGameImages | |getGameImages | ||
Ligne 441 : | Ligne 380 : | ||
|'''page''' int | |'''page''' int | ||
'''perPage''' int | '''perPage''' int | ||
| | |||
|N | |||
|- | |- | ||
|getGameList | |getGameList | ||
Ligne 451 : | Ligne 392 : | ||
'''page''' int | '''page''' int | ||
'''perPage''' int | '''perPage''' int | ||
|'''If-None-Match''' str | |||
|N | |||
|- | |- | ||
|getGameNews | |getGameNews | ||
Ligne 457 : | Ligne 400 : | ||
|'''page''' int | |'''page''' int | ||
'''perPage''' int | '''perPage''' int | ||
| | |||
|N | |||
|- | |- | ||
|getGameReleaseList | |getGameReleaseList | ||
| games/releases | |games/releases | ||
| | | | ||
| '''month''' str | |'''month''' str | ||
'''year''' str | '''year''' str | ||
'''machines''' str | '''machines''' str | ||
'''page''' int | '''page''' int | ||
'''perPage''' int | '''perPage''' int | ||
|'''If-None-Match''' str | |||
|N | |||
|- | |- | ||
|getGameReview | |getGameReview | ||
Ligne 473 : | Ligne 420 : | ||
'''review''' str | '''review''' str | ||
| | | | ||
| | |||
|N | |||
|- | |- | ||
|getGameReviews | |getGameReviews | ||
Ligne 478 : | Ligne 427 : | ||
|'''id''' int | |'''id''' int | ||
| | | | ||
| | |||
|N | |||
|- | |- | ||
|getGameReviews | |getGameReviews | ||
Ligne 484 : | Ligne 435 : | ||
'''machine''' str | '''machine''' str | ||
| | | | ||
| | |||
|N | |||
|- | |- | ||
|getGameSummary | |getGameSummary | ||
|contents/games | |contents/games | ||
| | | | ||
|'''machines''' str | |'''machines''' str | ||
| | |||
|N | |||
|- | |- | ||
|getGameUserReviews | |getGameUserReviews | ||
Ligne 496 : | Ligne 451 : | ||
|'''page''' int | |'''page''' int | ||
'''perPage''' int | '''perPage''' int | ||
| | |||
|N | |||
|- | |- | ||
|getGameVideos | |getGameVideos | ||
|games/{id}/{machine}/videos | |games/{id}/{machine}/videos | ||
|'''id''' int | |'''id''' int | ||
'''machine''' str | '''machine''' str | ||
|'''page''' int | |'''page''' int | ||
'''perPage''' int | '''perPage''' int | ||
| | |||
|N | |||
|- | |- | ||
|getGameWikis | |getGameWikis | ||
Ligne 510 : | Ligne 469 : | ||
|'''page''' int | |'''page''' int | ||
'''perPage''' int | '''perPage''' int | ||
| | |||
|N | |||
|- | |- | ||
|getHeadlineList | |getHeadlineList | ||
| contents/trending | |contents/trending | ||
| | | | ||
|'''machines''' str | |'''machines''' str | ||
'''page''' int | '''page''' int | ||
'''perPage''' int | '''perPage''' int | ||
|'''If-None-Match''' str | |||
|N | |||
|- | |- | ||
| getHighTechSummary | |getHighTechSummary | ||
|contents/hightech | |contents/hightech | ||
| | | | ||
|'''machines''' str | |'''machines''' str | ||
| | |||
|N | |||
|- | |- | ||
|getLightGame | |getLightGame | ||
Ligne 528 : | Ligne 493 : | ||
'''machine''' str | '''machine''' str | ||
| | | | ||
| | |||
|N | |||
|- | |- | ||
|getNews | |getNews | ||
Ligne 533 : | Ligne 500 : | ||
|'''id''' int | |'''id''' int | ||
| | | | ||
| | |||
|N | |||
|- | |- | ||
|getNewsHighTech | |getNewsHighTech | ||
Ligne 539 : | Ligne 508 : | ||
|'''page''' int | |'''page''' int | ||
'''perPage''' int | '''perPage''' int | ||
|'''If-None-Match''' str | |||
|N | |||
|- | |- | ||
|getPageContents | |getPageContents | ||
|accounts/{accountId}/page/contents | |accounts/{accountId}/page/contents | ||
|'''accountId''' | |'''accountId''' str | ||
|'''page''' int | |'''page''' int | ||
'''perPage''' int | '''perPage''' int | ||
| | |||
|N | |||
|- | |- | ||
|getPageReviews | |getPageReviews | ||
|accounts/{accountId}/page/reviews | |accounts/{accountId}/page/reviews | ||
|'''accountId''' | |'''accountId''' str | ||
|'''page''' int | |'''page''' int | ||
'''perPage''' int | '''perPage''' int | ||
| | |||
|N | |||
|- | |- | ||
|getProfile | |getProfile | ||
|accounts/{accountId}/profile | |accounts/{accountId}/profile | ||
|'''accountId''' | |'''accountId''' str | ||
| | | | ||
| | |||
|N | |||
|- | |- | ||
|getProfilePage | |getProfilePage | ||
|accounts/{accountId}/page | |accounts/{accountId}/page | ||
|'''accountId''' | |'''accountId''' str | ||
| | | | ||
| | |||
|N | |||
|- | |- | ||
|getRelatedNews | |getRelatedNews | ||
Ligne 567 : | Ligne 546 : | ||
|'''page''' int | |'''page''' int | ||
'''perPage''' int | '''perPage''' int | ||
| | |||
|N | |||
|- | |- | ||
|getRelatedVideos | |getRelatedVideos | ||
Ligne 573 : | Ligne 554 : | ||
|'''page''' int | |'''page''' int | ||
'''perPage''' int | '''perPage''' int | ||
| | |||
|N | |||
|- | |- | ||
|getRelatedWikis | |getRelatedWikis | ||
Ligne 579 : | Ligne 562 : | ||
|'''page''' int | |'''page''' int | ||
'''perPage''' int | '''perPage''' int | ||
| | |||
|N | |||
|- | |||
|getSpecificNews | |||
|''rétro-ingénierie à faire'' | |||
| | |||
| | |||
| | |||
|N | |||
|- | |- | ||
|getStores | |getStores | ||
Ligne 585 : | Ligne 577 : | ||
'''machine''' str | '''machine''' str | ||
| | | | ||
| | |||
|N | |||
|- | |- | ||
|getTechList | |getTechList | ||
Ligne 591 : | Ligne 585 : | ||
|'''page''' int | |'''page''' int | ||
'''perPage''' int | '''perPage''' int | ||
|'''If-None-Match''' str | |||
|N | |||
|- | |- | ||
|getTopWikis | |getTopWikis | ||
Ligne 596 : | Ligne 592 : | ||
| | | | ||
| | | | ||
|'''If-None-Match''' str | |||
|N | |||
|- | |- | ||
|getTopsComments | |getTopsComments | ||
|contents/{contentID}/comments/tops | |contents/{contentID}/comments/tops | ||
|'''contentID''' | |'''contentID''' str | ||
| | | | ||
| | |||
|N | |||
|- | |- | ||
|getVideo | |getVideo | ||
Ligne 606 : | Ligne 606 : | ||
|'''id''' int | |'''id''' int | ||
| | | | ||
| | |||
|N | |||
|- | |||
|getVideoList | |||
|''rétro-ingénierie à faire'' | |||
| | |||
|'''categories''' str | |||
'''chronicles''' str | |||
'''machines''' str | |||
'''types''' str | |||
'''page''' int | |||
'''perPage''' int | |||
|'''If-None-Match''' str | |||
|N | |||
|- | |- | ||
|getVideosSummary | |getVideosSummary | ||
|contents/videos | |contents/videos | ||
| | | | ||
|'''machines''' str | |'''machines''' str | ||
| | |||
|N | |||
|- | |- | ||
|search | |search | ||
| | |''rétro-ingénierie à faire'' | ||
| | | | ||
|'''q''' str | |'''q''' str | ||
| | |||
|N | |||
|- | |- | ||
|searchArticles | |searchArticles | ||
Ligne 623 : | Ligne 641 : | ||
'''page''' int | '''page''' int | ||
'''perPage''' int | '''perPage''' int | ||
| | |||
|N | |||
|- | |- | ||
|searchAutocomplete | |searchAutocomplete | ||
Ligne 628 : | Ligne 648 : | ||
| | | | ||
|'''q''' str | |'''q''' str | ||
| | |||
|N | |||
|- | |- | ||
|searchGames | |searchGames | ||
Ligne 635 : | Ligne 657 : | ||
'''page''' int | '''page''' int | ||
'''perPage''' int | '''perPage''' int | ||
| | |||
|N | |||
|- | |- | ||
|searchNews | |searchNews | ||
Ligne 642 : | Ligne 666 : | ||
'''page''' int | '''page''' int | ||
'''perPage''' int | '''perPage''' int | ||
| | |||
|N | |||
|- | |- | ||
|searchVideos | |searchVideos | ||
Ligne 649 : | Ligne 675 : | ||
'''page''' int | '''page''' int | ||
'''perPage''' int | '''perPage''' int | ||
| | |||
|N | |||
|- | |- | ||
|searchWikis | |searchWikis | ||
| search/wikis | |search/wikis | ||
| | | | ||
|'''q''' str | |'''q''' str | ||
'''page''' int | '''page''' int | ||
'''perPage''' int | '''perPage''' int | ||
| | |||
|N | |||
|- | |- | ||
|sponso | |sponso | ||
Ligne 661 : | Ligne 691 : | ||
| | | | ||
| | | | ||
|'''If-None-Match''' str | |||
|N | |||
|} | |} | ||
{| class="wikitable | {| class="wikitable mw-collapsible" | ||
|+PUT | |+PUT | ||
!NOM | !NOM | ||
! | !URL | ||
!PARAMS | !PARAMS | ||
!BODY | !BODY | ||
!T | |||
|- | |- | ||
|saveDescription | |saveDescription | ||
|accounts/me/profile/description | |accounts/me/profile/description | ||
| | | | ||
| | |''rétro-ingénierie à faire'' | ||
|N | |||
|- | |- | ||
|saveExcludedMachines | |saveExcludedMachines | ||
|accounts/me/profile/excluded-machines | |accounts/me/profile/excluded-machines | ||
| | | | ||
| | |"machines" : [1, 2, 3, 4] // id des machines | ||
|N | |||
|- | |- | ||
|saveMachines | |saveMachines | ||
|accounts/me/profile/machines | |accounts/me/profile/machines | ||
| | | | ||
| | |"machines" : [1, 2, 3, 4] // id des machines | ||
|N | |||
|- | |- | ||
|updateComment | |updateComment | ||
|contents/{contentID}/comments/{commentID} | |contents/{contentID}/comments/{commentID} | ||
|'''contentID''' | |'''contentID''' str | ||
'''commentID''' | '''commentID''' str | ||
| | |"content": "Super jeu !" | ||
|N | |||
|- | |- | ||
|uploadAvatar | |uploadAvatar | ||
|accounts/me/avatar | |accounts/me/avatar | ||
| ''' | | | ||
| | |''rétro-ingénierie à faire'' | ||
|N | |||
|- | |- | ||
|uploadCover | |uploadCover | ||
|accounts/me/cover | |accounts/me/cover | ||
| ''' | | | ||
| | |''rétro-ingénierie à faire'' | ||
|N | |||
|} | |} | ||
{| class="wikitable | {| class="wikitable mw-collapsible" | ||
|+DELETE | |+DELETE | ||
!NOM | !NOM | ||
! | !URL | ||
!PARAMS | !PARAMS | ||
! | !T | ||
|- | |- | ||
|deleteComment | |deleteComment | ||
|contents/{contentID}/comments/{commentID} | |contents/{contentID}/comments/{commentID} | ||
|'''contentID''' | |'''contentID''' str | ||
'''commentID''' | '''commentID''' str | ||
| | |N | ||
|- | |- | ||
|deleteCommentVote | |deleteCommentVote | ||
|contents/{contentID}/comments/{commentID}/vote | |contents/{contentID}/comments/{commentID}/vote | ||
|'''contentID''' | |'''contentID''' str | ||
'''commentID''' | '''commentID''' str | ||
| | |N | ||
|} | |||
{| class="wikitable mw-collapsible" | |||
|+CUSTOM HTTP (''rétro-ingénierie à faire'') | |||
!NOM | |||
!URL | |||
!PARAMS | |||
!T | |||
|- | |- | ||
|deleteFavorisForum | |deleteFavorisForum | ||
|accounts/ | |accounts/{accountId}/favorites/forums | ||
| | |'''accountId''' str | ||
| | |N | ||
|- | |- | ||
| deleteFavorisGames | |deleteFavorisGames | ||
|accounts/ | |accounts/{accountId}/favorites/games | ||
| | |'''accountId''' str | ||
| | |N | ||
|- | |- | ||
|deleteFavorisTopics | |deleteFavorisTopics | ||
|accounts/ | |accounts/{accountId}/favorites/topics | ||
| | |'''accountId''' str | ||
| | |N | ||
|} | |} | ||
== Rétro-ingénierie de l'API == | |||
Pour connaître les endpoints de l'API, il faut décompiler l'appli JVC. | |||
== | |||
# Décompresser l'APK de l'application avec 7zip/Winrar/etc. | |||
# Utiliser un décompilateur Dex vers Java, comme '''[https://github.com/skylot/jadx Jadx]''' . | |||
==== JvApiService ==== | |||
Une fois le code Java disponible, on peut ouvrir l'interface ''com.jeuxvideo.api.web.'''JvApiService''''', qui contient tous les endpoints. L'appli utilise le bibliothèque [https://square.github.io/retrofit/ Retrofit 2.x] pour gérer l'API, on peut facilement parcourir la documentation de cette bibliothèque pour découvrir ce qu'il faut faire comme requête aux différentes URL de l'API. | |||
''Exemple de code dans l'interface '''JvApiService''''' | |||
<pre> | <pre> | ||
@POST("contents/{contentID}/comments") | |||
Call<UserComment> addComment(@Path("contentID") String str, @Body UserComment.Body body); | |||
@POST("contents/{contentID}/comments/{commentID}/vote") | |||
Call<UserComment> addCommentVote(@Path("contentID") String str, @Path("commentID") String str2, @Body UserComment.Vote vote); | |||
</pre> | </pre> | ||
==== ApiLogin ==== | |||
=== '' | La classe ''com.jeuxvideo.utils.'''ApiLogin''''' (nom de la classe donné arbitrairement car perdu lors de la compilation), permet de déduire qu'il faut mettre dans le header de la requête à l'API ''Jvc-Authorization : '''header''''' ainsi que l'algorithme permettant de trouver ce qu'il faut mettre à la place de '''''header'''''. (Voir code ci-dessous) | ||
<pre> | <pre> | ||
public static String f(String str, String str2, String str3, String str4, String str5) { | |||
StringBuilder sb2 = new StringBuilder(); | |||
sb2.append("550c04bf5cb2b\n"); | |||
sb2.append(str); | |||
sb2.append("\n"); | |||
sb2.append(str2); | |||
sb2.append("\n"); | |||
sb2.append(str3); | |||
sb2.append("\n"); | |||
sb2.append(str4); | |||
sb2.append("\n"); | |||
if (str5 == null) { | |||
str5 = ""; | |||
} | } | ||
sb2.append(str5); | |||
String b10 = j5.f.b("d84e9e5f191ea4ffc39c22d11c77dd6c", sb2.toString()); | |||
return "PartnerKey=550c04bf5cb2b, Signature=" + b10 + ", Timestamp=" + str; | |||
} | |||
return | |||
</pre> | </pre> | ||
== | == Ressources == | ||
* Classe PHP exploitant l'API : https://pastebin.com/LWNDQDKy (Cette classe est incomplète et sera possiblement rendue obsolète dans le temps). | |||
* (à venir) Fichier JSON modélisant l'API complète (compatible avec [https://www.postman.com/ Postman] et divers clients). | |||
* | |||
= API | =Ancienne API = | ||
Le contenu qui va suivre concerne l'ancienne API, qui n'existe plus. Si quelqu'un est courageux pour de nouveau documenter l'API actuelle de JV, nous en serions tous ravis. | |||
==Identification== | |||
==Identification == | |||
L'API utilise le nom de domaine [https://ws.jeuxvideo.com/ ws.jeuxvideo.com]. Pour y accéder, il faut utiliser un des identifiants ci-dessous (authentification HTTP basique). | L'API utilise le nom de domaine [https://ws.jeuxvideo.com/ ws.jeuxvideo.com]. Pour y accéder, il faut utiliser un des identifiants ci-dessous (authentification HTTP basique). | ||
Ligne 1 232 : | Ligne 839 : | ||
! scope="col" |Mot de passe | ! scope="col" |Mot de passe | ||
|- | |- | ||
! scope="row" |Android 1.0 | ! scope="row" | Android 1.0 | ||
|appandr | |appandr | ||
|e32!cdf | |e32!cdf | ||
|- | |- | ||
! scope="row" |Android 2.0.3 | ! scope="row" |Android 2.0.3 | ||
|app_and_gnw | | app_and_gnw | ||
|FC?4554? | | FC?4554? | ||
|- | |- | ||
! scope="row" |Android 2.5 | ! scope="row" | Android 2.5 | ||
|app_and_ms | |app_and_ms | ||
|D9!mVR4c | | D9!mVR4c | ||
|- | |- | ||
! scope="row" |Android MP | ! scope="row" |Android MP | ||
Ligne 1 248 : | Ligne 855 : | ||
|LXnb45=d# | |LXnb45=d# | ||
|- | |- | ||
! scope="row" |Android Tab | ! scope="row" | Android Tab | ||
|nex12sz | |nex12sz | ||
|GT4!V2cT | | GT4!V2cT | ||
|- | |- | ||
! scope="row" |iPhone | ! scope="row" |iPhone | ||
Ligne 1 256 : | Ligne 863 : | ||
|W!P45-R | |W!P45-R | ||
|- | |- | ||
! scope="row" |iPad | ! scope="row" |iPad | ||
|ip45de | |ip45de | ||
|XpD5!FT | |XpD5!FT | ||
Ligne 1 263 : | Ligne 870 : | ||
L'API est accessible en HTTP et en HTTPS, préférez la version HTTPS ! | L'API est accessible en HTTP et en HTTPS, préférez la version HTTPS ! | ||
==Utilisation == | ==Utilisation== | ||
===Connexion=== | ===Connexion === | ||
Pour vous connecter, utilisez la page [https://ws.jeuxvideo.com/mon_compte/connexion.php mon_compte/connexion.php]. | Pour vous connecter, utilisez la page [https://ws.jeuxvideo.com/mon_compte/connexion.php mon_compte/connexion.php]. | ||
Ligne 1 275 : | Ligne 882 : | ||
|Le pseudo de l'utilisateur. | |Le pseudo de l'utilisateur. | ||
|- | |- | ||
| stamp | |stamp | ||
|Le timestamp (le nombre de secondes depuis le 1er janvier 1970) à l'heure où la requête est envoyée. | |Le timestamp (le nombre de secondes depuis le 1er janvier 1970) à l'heure où la requête est envoyée. | ||
|- | |- | ||
Ligne 1 284 : | Ligne 891 : | ||
Vous renconterez potentiellement une erreur vous demandant de remplir un captcha, avec un lien vers l'image, et une balise ''params_form'', qu'il faudra ajouter aux paramètres de la première requête, ainsi que le paramètre ''code'' avec la valeur du captcha. | Vous renconterez potentiellement une erreur vous demandant de remplir un captcha, avec un lien vers l'image, et une balise ''params_form'', qu'il faudra ajouter aux paramètres de la première requête, ainsi que le paramètre ''code'' avec la valeur du captcha. | ||
'''Important : n'ouvrez pas le lien du captcha dans votre navigateur si vous êtes connecté à votre compte JVC ; un captcha différent est renvoyé selon la présence du cookie '' | '''Important : n'ouvrez pas le lien du captcha dans votre navigateur si vous êtes connecté à votre compte JVC ; un captcha différent est renvoyé selon la présence du cookie ''coniunctio'' (qui ne doit PAS être présent pour afficher un captcha de l'API, sinon vous aurez systématiquement une erreur de captcha invalide).''' | ||
En réponse, vous recevez plusieurs informations présentes dans la CDV, mais surtout le cookie '' | En réponse, vous recevez plusieurs informations présentes dans la CDV, mais surtout le cookie ''coniunctio'', que vous devrez utiliser pour poster sur les forums et utiliser les messages privés. | ||
Pour information, '' | Pour information, ''coniunctio'' signifie ''logjvnew'' à l'envers, et c'est le cookie de session de JVC dont le nom a subi plusieurs transformations au fil des années. | ||
Pour le renvoi de mot de passe, utilisez cette URL (en remplaçant ''Cisla'' par le pseudo ou bien l'adresse e-mail) : | Pour le renvoi de mot de passe, utilisez cette URL (en remplaçant ''Cisla'' par le pseudo ou bien l'adresse e-mail) : | ||
Ligne 1 318 : | Ligne 925 : | ||
|- | |- | ||
|02.news/''1234''.xml<br>02.news_screen/''1234''.xml | |02.news/''1234''.xml<br>02.news_screen/''1234''.xml | ||
|Voir une news (le nombre correspond à l'id) | | Voir une news (le nombre correspond à l'id) | ||
|- | |- | ||
|ean.php?ean=''0045496830144'' | |ean.php?ean=''0045496830144'' | ||
|Voir le jeu associé au code-barre (EAN) 0045496830144 | |Voir le jeu associé au code-barre (EAN) 0045496830144 | ||
|- | |- | ||
| forums_index.xml | |forums_index.xml | ||
|Liste des forums généraux | |Liste des forums généraux | ||
|- | |- | ||
|search_n/''mario''<br>search/''mario''<br>search_sug/''mario''<br>search_forums/''mario''<br>search_forums_sug/''mario'' | |search_n/''mario''<br>search/''mario''<br>search_sug/''mario''<br>search_forums/''mario''<br>search_forums_sug/''mario'' | ||
|Effectuer une recherche dans le nom des jeux ou des forums | | Effectuer une recherche dans le nom des jeux ou des forums | ||
|- | |- | ||
|tab_suggest_blocs.xml<br>tab_suggest_forums.xml | |tab_suggest_blocs.xml<br>tab_suggest_forums.xml | ||
| ''À compléter'' | |''À compléter'' | ||
|- | |- | ||
| cgi-bin/liste.cgi | |cgi-bin/liste.cgi | ||
|''À compléter'' | |''À compléter'' | ||
|} | |} | ||
Ligne 1 338 : | Ligne 945 : | ||
===Forums=== | ===Forums=== | ||
Pour les forums, les URL sont les mêmes que pour JVC, à part que : | Pour les forums, les URL sont les mêmes que pour JVC, à part que : | ||
* Le .htm est transformé en .xml | *Le .htm est transformé en .xml | ||
* Le www.jeuxvideo.com est remplacé par un ws.jeuxvideo.com | *Le www.jeuxvideo.com est remplacé par un ws.jeuxvideo.com | ||
*La chaîne de caractères à la fin de l'URL (comme ''blabla-15-18-ans'' ou ''nom-du-topic'') est remplacée par un 0 (sauf pour la recherche). | * La chaîne de caractères à la fin de l'URL (comme ''blabla-15-18-ans'' ou ''nom-du-topic'') est remplacée par un 0 (sauf pour la recherche). | ||
Par exemple :<br> | Par exemple :<br> | ||
Ligne 1 357 : | Ligne 964 : | ||
|- | |- | ||
|https://ws.jeuxvideo.com/forums/0-50-0-1-0-1-2-cactus.xml | |https://ws.jeuxvideo.com/forums/0-50-0-1-0-1-2-cactus.xml | ||
|Rechercher « cactus » dans le titre des topics | | Rechercher « cactus » dans le titre des topics | ||
|- | |- | ||
|https://ws.jeuxvideo.com/forums/1-50-1-1-0-1-0-0.xml | |https://ws.jeuxvideo.com/forums/1-50-1-1-0-1-0-0.xml | ||
|Un topic | | Un topic | ||
|- | |- | ||
|https://ws.jeuxvideo.com/forums/3-50-0-1-0-1-0-0.xml | |https://ws.jeuxvideo.com/forums/3-50-0-1-0-1-0-0.xml | ||
Ligne 1 368 : | Ligne 975 : | ||
|10 derniers messages d'un topic + formulaire | |10 derniers messages d'un topic + formulaire | ||
|- | |- | ||
|https://ws.jeuxvideo.com/forums/5-50-128244545-1-0-1-0-0.xml | |https://ws.jeuxvideo.com/forums/5-50-128244545-1-0-1-0-0.xml | ||
| Formulaire de réponse à un topic | | Formulaire de réponse à un topic | ||
|- | |- | ||
|https://ws.jeuxvideo.com/cgi-bin/jvforums/forums.cgi | |https://ws.jeuxvideo.com/cgi-bin/jvforums/forums.cgi | ||
|Envoyer un message (avec les données POST) | |Envoyer un message (avec les données POST) | ||
|- | |- | ||
|https://ws.jeuxvideo.com/profil/cisla.xml | |https://ws.jeuxvideo.com/profil/cisla.xml | ||
| Voir une CDV | |Voir une CDV | ||
|} | |} | ||
Ligne 1 384 : | Ligne 991 : | ||
Le même formulaire peut aussi bien être envoyé au ''forums.cgi'' de ws.jeuxvideo.com qu'à celui de www.jeuxvideo.com, ce qui vous permet de choisir entre apparaître « via mobile » ou non. Les données POST à envoyer sont donc les mêmes sur toutes les versions de JVC. | Le même formulaire peut aussi bien être envoyé au ''forums.cgi'' de ws.jeuxvideo.com qu'à celui de www.jeuxvideo.com, ce qui vous permet de choisir entre apparaître « via mobile » ou non. Les données POST à envoyer sont donc les mêmes sur toutes les versions de JVC. | ||
=== Messages privés=== | ===Messages privés=== | ||
L'id de l'utilisateur mentionnée ci-dessous correspond à la partie du cookie ''coniunctio'' qui se trouve avant le premier "$". | L'id de l'utilisateur mentionnée ci-dessous correspond à la partie du cookie ''coniunctio'' qui se trouve avant le premier "$". | ||
Ligne 1 390 : | Ligne 997 : | ||
{| class="wikitable alternance centre" | {| class="wikitable alternance centre" | ||
! scope="col" |URL | ! scope="col" |URL | ||
! scope="col" |Description | ! scope="col" |Description | ||
|- | |- | ||
Ligne 1 396 : | Ligne 1 003 : | ||
|Dernière version de l'application, liste des consoles et des smileys, lien vers la charte, pub activée ou non | |Dernière version de l'application, liste des consoles et des smileys, lien vers la charte, pub activée ou non | ||
|- | |- | ||
| messages-prives/connexion_ws.php | |messages-prives/connexion_ws.php | ||
|Les paramètres sont les mêmes que pour la connexion depuis ''mon_compte/connexion.php'', décrite [[#Connexion|plus haut]]. Cependant, la réponse XML contient quelques informations supplémentaires à propos des MP. | |Les paramètres sont les mêmes que pour la connexion depuis ''mon_compte/connexion.php'', décrite [[#Connexion|plus haut]]. Cependant, la réponse XML contient quelques informations supplémentaires à propos des MP. | ||
|- | |- | ||
|messages-prives/boite-reception_ws.php | |messages-prives/boite-reception_ws.php | ||
|Permet de connaître le contenu de la boîte de réception. Paramètre à envoyer : | |Permet de connaître le contenu de la boîte de réception. Paramètre à envoyer : | ||
*''id_user'' : id de l'utilisateur | * ''id_user'' : id de l'utilisateur | ||
|- | |- | ||
|messages-prives/envoyes_ws.php | |messages-prives/envoyes_ws.php | ||
|Permet de connaître la liste des messages envoyés. Paramètre à envoyer : | |Permet de connaître la liste des messages envoyés. Paramètre à envoyer : | ||
*''id_user'' : id de l'utilisateur | * ''id_user'' : id de l'utilisateur | ||
|- | |- | ||
|messages-prives/message_ws.php | |messages-prives/message_ws.php | ||
| Permet de lire le contenu d'un message privé. Paramètres à envoyer : | |Permet de lire le contenu d'un message privé. Paramètres à envoyer : | ||
*''id_user'' : id de l'utilisateur | * ''id_user'' : id de l'utilisateur | ||
*''id_discussion'' : id de la discussion | *''id_discussion'' : id de la discussion | ||
*''nb_clic'' : le nombre de fois où l'utilisateur a cliqué sur « Voir les messages précédents » | * ''nb_clic'' : le nombre de fois où l'utilisateur a cliqué sur « Voir les messages précédents » | ||
*''last_position_message'' : Si ce paramètre vaut 0, les 5 derniers messages sont affichés. Sinon, les 10 messages les plus anciens en partant du ''x''<sup>ème</sup> sont affichés, la numérotation débutant à partir de 0. | *''last_position_message'' : Si ce paramètre vaut 0, les 5 derniers messages sont affichés. Sinon, les 10 messages les plus anciens en partant du ''x''<sup>ème</sup> sont affichés, la numérotation débutant à partir de 0. | ||
|- | |- | ||
| messages-prives/nouveau_ws.php | |messages-prives/nouveau_ws.php | ||
|Permet d'envoyer un nouveau message privé. Paramètres à envoyer : | |Permet d'envoyer un nouveau message privé. Paramètres à envoyer : | ||
*''id_user'' : id de l'utilisateur | * ''id_user'' : id de l'utilisateur | ||
*''all_dest'' : les destinataires, séparés pas des point-virgules | *''all_dest'' : les destinataires, séparés pas des point-virgules | ||
*''sujet'' : le titre du MP | *''sujet'' : le titre du MP | ||
*''yournewmessage'' : le contenu du MP | *''yournewmessage'' : le contenu du MP | ||
*''tmp'' : le timestamp actuel | *''tmp'' : le timestamp actuel | ||
*''control'' : md5("k_ys4+a]x" + idUtilisateur + "j6A=d?6-W*-" + timestamp + "z_.Im") | * ''control'' : md5("k_ys4+a]x" + idUtilisateur + "j6A=d?6-W*-" + timestamp + "z_.Im") | ||
Il se peut également que vous ayez à gérer un code de confirmation. | Il se peut également que vous ayez à gérer un code de confirmation. | ||
|- | |- | ||
|messages-prives/repondre_ws.php | |messages-prives/repondre_ws.php | ||
|Permet de répondre à un message privé. Paramètres à envoyer : | |Permet de répondre à un message privé. Paramètres à envoyer : | ||
*''id_user'' : id de l'utilisateur | * ''id_user'' : id de l'utilisateur | ||
*''id_discussion'' : id de la discussion | *''id_discussion'' : id de la discussion | ||
*''yournewmessage'' : le contenu du message | *''yournewmessage'' : le contenu du message | ||
Ligne 1 436 : | Ligne 1 043 : | ||
|messages-prives/suggest_pseudo_ws.php | |messages-prives/suggest_pseudo_ws.php | ||
|Liste quelques pseudos qui commencent par ce que l'utilisateur est en train de taper. Paramètres à envoyer : | |Liste quelques pseudos qui commencent par ce que l'utilisateur est en train de taper. Paramètres à envoyer : | ||
*''id_user'' : id de l'utilisateur | * ''id_user'' : id de l'utilisateur | ||
*''search'' : ce que l'utilisateur est en train de taper | *''search'' : ce que l'utilisateur est en train de taper | ||
|- | |- | ||
Ligne 1 454 : | Ligne 1 061 : | ||
|messages-prives/del_indesirable_ws.php | |messages-prives/del_indesirable_ws.php | ||
|Permet d'enlever un utilisateur des indésirables. Paramètres à envoyer : | |Permet d'enlever un utilisateur des indésirables. Paramètres à envoyer : | ||
*''id_user'' : id de l'utilisateur actuel | * ''id_user'' : id de l'utilisateur actuel | ||
* ''id_user_indesirable'' : id de l'utilisateur à enlever des indésirables | *''id_user_indesirable'' : id de l'utilisateur à enlever des indésirables | ||
|- | |- | ||
|messages-prives/info_alerte_ws.php | |messages-prives/info_alerte_ws.php | ||
|Permet de connaître les informations qui permettront de faire une DDB ou une mise en indésirable sur un message. Paramètres à envoyer : | |Permet de connaître les informations qui permettront de faire une DDB ou une mise en indésirable sur un message. Paramètres à envoyer : | ||
*''id_user'' : id de l'utilisateur qui fait la DDB | * ''id_user'' : id de l'utilisateur qui fait la DDB | ||
* ''id_message'' : id du message concerné | *''id_message'' : id du message concerné | ||
|- | |- | ||
|messages-prives/alerte_ws.php | |messages-prives/alerte_ws.php | ||
| Permet d'effectuer une DDB (ce qui est inutile, étant donné qu'elles ne sont jamais traitées). Certaines données nécessaires pour former la requête doivent être récupérés avec info_alerte_ws.php. Paramètres à envoyer : | |Permet d'effectuer une DDB (ce qui est inutile, étant donné qu'elles ne sont jamais traitées). Certaines données nécessaires pour former la requête doivent être récupérés avec info_alerte_ws.php. Paramètres à envoyer : | ||
*''id_user'' : id de l'utilisateur qui fait la DDB | * ''id_user'' : id de l'utilisateur qui fait la DDB | ||
*''pseudo'' : pseudo de l'utilisateur | *''pseudo'' : pseudo de l'utilisateur | ||
*''motif'' : le motif, par exemple ''Piratage'' (les mêmes motifs que dans les MP sur JVC normal) | *''motif'' : le motif, par exemple ''Piratage'' (les mêmes motifs que dans les MP sur JVC normal) | ||
Ligne 1 473 : | Ligne 1 080 : | ||
|- | |- | ||
|messages-prives/connexion_valid_ws.php | |messages-prives/connexion_valid_ws.php | ||
|Permet d'afficher le nombre de messages non-lus ainsi que l'URL de l'avatar. Paramètres à envoyer : | |Permet d'afficher le nombre de messages non-lus ainsi que l'URL de l'avatar. Paramètres à envoyer : | ||
*''id_user'' : id de l'utilisateur | * ''id_user'' : id de l'utilisateur | ||
*''pseudo'' : pseudo de l'utilisateur | *''pseudo'' : pseudo de l'utilisateur | ||
|- | |- | ||
|messages-prives/add_destinataire_ws.php | |messages-prives/add_destinataire_ws.php | ||
|Permet d'ajouter un destinataire à un message privé. Paramètres à envoyer : | |Permet d'ajouter un destinataire à un message privé. Paramètres à envoyer : | ||
*''id_user'' : id de l'utilisateur | * ''id_user'' : id de l'utilisateur | ||
*''id_discussion'' : id de la discussion | *''id_discussion'' : id de la discussion | ||
*''tab_pseudo'' : liste des destinataires à ajouter, séparés par un point-virgule | *''tab_pseudo'' : liste des destinataires à ajouter, séparés par un point-virgule | ||
Ligne 1 490 : | Ligne 1 097 : | ||
|} | |} | ||
== | ==Reverse-engineering== | ||
===Décompilation=== | ===Décompilation=== | ||
Cette section concerne la décompilation de l'application Android de JVC sous Linux. | Cette section concerne la décompilation de l'application Android de JVC sous Linux. | ||
Ligne 1 533 : | Ligne 1 140 : | ||
print repr(string[:-ord(string[-1])]) | print repr(string[:-ord(string[-1])]) | ||
Modifiez la clé selon l'application que vous décompilez: | Modifiez la clé selon l'application que vous décompilez: | ||
*Pour l'application Jeuxvideo.com (version >= 2.0.3), c'est ''package com.jeuxvideo.activity'' | *Pour l'application Jeuxvideo.com (version >= 2.0.3), c'est ''package com.jeuxvideo.activity'' | ||
Ligne 1 542 : | Ligne 1 149 : | ||
==Liens externes== | ==Liens externes== | ||
*[https://fr.wikipedia.org/wiki/Interface_de_programmation API sur Wikipédia] | *[https://fr.wikipedia.org/wiki/Interface_de_programmation API sur Wikipédia] | ||
*[http://www.jeuxvideo.com/forums/1-1000021-1691093-1-0-1-0-documentation-de-l-api-de-jeuxvideo-com.htm Lien du topic sur JVC pour poser vos questions] | *[http://www.jeuxvideo.com/forums/1-1000021-1691093-1-0-1-0-documentation-de-l-api-de-jeuxvideo-com.htm Lien du topic sur JVC pour poser vos questions] | ||
*[https://play.google.com/store/apps/details?id=com.jeuxvideo&hl=fr L'application Android] | *[https://play.google.com/store/apps/details?id=com.jeuxvideo&hl=fr L'application Android] | ||
Ligne 1 567 : | Ligne 1 174 : | ||
{{TableauCatégorieFonctionnementJVC}} | {{TableauCatégorieFonctionnementJVC}} | ||
[[Catégorie:Fonctionnement | [[Catégorie:Fonctionnement de jeuxvideo.com]] | ||
[[Catégorie:Extensions et outils]] | [[Catégorie:Extensions et outils]] | ||
{{TableauCatégories}} |