From 561736e68c8cd727d5b66a8e60d089209f655da0 Mon Sep 17 00:00:00 2001
From: Mathieu Loiseau <loizbek@lezinter.net>
Date: Mon, 12 Mar 2018 20:35:57 +0100
Subject: [PATCH] login qui marche (en mode non secure) ?

---
 DESCRIPTION |  1 +
 R/class.R   | 42 ++++++++++++++++++++++++++++++++++--------
 2 files changed, 35 insertions(+), 8 deletions(-)

diff --git a/DESCRIPTION b/DESCRIPTION
index 925fa1f..c5bb2bf 100644
--- a/DESCRIPTION
+++ b/DESCRIPTION
@@ -9,3 +9,4 @@ License: MIT
 Encoding: UTF-8
 LazyData: true
 RoxygenNote: 6.0.1
+Imports: RCurl
diff --git a/R/class.R b/R/class.R
index b8c5e92..9cec4ff 100644
--- a/R/class.R
+++ b/R/class.R
@@ -5,12 +5,38 @@
 setClass("Mediawikir", representation(url = "character", user_name = "character", auth_token = "character"))
 
 setGeneric("connect", function(.Object, pass){})
-#'Connects to mediawiki instance and gets token (to be called by constructor)
-#'
-setMethod("connect", "Mediawikir", function(.Object, pass){
-  library("RCurl")
-  paste("connecting : ", .Object@user_name, "/", pass)
-})
+  #'Connects to mediawiki instance and gets token (to be called by constructor)
+  setMethod("connect", "Mediawikir", function(.Object, pass){
+    #get login token
+    query <- httr::POST(.Object@url,
+                        body = list(action="query",
+                                    meta="tokens",
+                                    type="login",
+                                    lgname = .Object@user_name,
+                                    format= "json"))
+    httr::stop_for_status(query)
+    response <- httr::content(query, "parsed", "application/json")
+    print("query 1")#debug
+    token <- response$query$tokens$logintoken
+    print(token)#debug
+    query <- httr::POST(.Object@url,
+                    body = list(action="clientlogin",
+                                username = .Object@user_name,
+                                password = pass,
+                                logintoken = token,
+                                loginreturnurl="http://wiki.lezinter.net",
+                                format= "json"))
+    httr::stop_for_status(query)
+    response <- httr::content(query, "parsed", "application/json")
+    print("query 2")#debug
+    print(response)#debug
+    if(response$clientlogin$status=="PASS"){
+      return(token)
+    }
+    else{
+      return("0")
+    }
+  })
 
 #'Creates a new Mediawikir object instance
 #'
@@ -20,8 +46,8 @@ setMethod("connect", "Mediawikir", function(.Object, pass){
 #'@examples
 #' new("Mediawikir", "http://wiki.example.com", "admin", "theadmin'spassword")
 setMethod("initialize", "Mediawikir", function (.Object, instance_url, user, pass){
-  .Object@url <- instance_url
+  .Object@url <- paste(instance_url,"/","api.php",sep="")
   .Object@user_name <- user
-  .Object@auth_token <- connect(.Object, pass)
+  .Object@auth_token=connect(.Object, pass)
   return(.Object)
 })
-- 
GitLab