Skip to content
Snippets Groups Projects
Commit c3087f04 authored by Mathieu Loiseau's avatar Mathieu Loiseau
Browse files

error handling

parent 561736e6
No related branches found
No related tags found
No related merge requests found
......@@ -7,35 +7,43 @@ setClass("Mediawikir", representation(url = "character", user_name = "character"
setGeneric("connect", function(.Object, 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,
tryCatch(
{ #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)
#parse query response to retrieve token
response <- httr::content(query, "parsed", "application/json")
token <- response$query$tokens$logintoken
#login query
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 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")
}
httr::stop_for_status(query)
#parse query response to make sure login worked
response <- httr::content(query, "parsed", "application/json")
if(response$clientlogin$status!="PASS"){
stop(paste(response$clientlogin,"\n"))
}
else{
return(token)
}
},
error = function(e)
{
print(paste("Could not login to", .Object@url, e$message))
token <- 0
}
)
return(token)
})
#'Creates a new Mediawikir object instance
......@@ -46,8 +54,15 @@ setGeneric("connect", function(.Object, pass){})
#'@examples
#' new("Mediawikir", "http://wiki.example.com", "admin", "theadmin'spassword")
setMethod("initialize", "Mediawikir", function (.Object, instance_url, user, pass){
.Object@url <- paste(instance_url,"/","api.php",sep="")
.Object@user_name <- user
.Object@auth_token=connect(.Object, pass)
tryCatch({
.Object@url <- paste(instance_url,"/","api.php",sep="")
.Object@user_name <- user
.Object@auth_token=connect(.Object, pass)
},
error = function(e){
print(e$message)
.Object <- FALSE
}
)
return(.Object)
})
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment