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" ...@@ -7,35 +7,43 @@ setClass("Mediawikir", representation(url = "character", user_name = "character"
setGeneric("connect", function(.Object, pass){}) setGeneric("connect", function(.Object, pass){})
#'Connects to mediawiki instance and gets token (to be called by constructor) #'Connects to mediawiki instance and gets token (to be called by constructor)
setMethod("connect", "Mediawikir", function(.Object, pass){ setMethod("connect", "Mediawikir", function(.Object, pass){
#get login token tryCatch(
query <- httr::POST(.Object@url, { #get login token
body = list(action="query", query <- httr::POST(.Object@url,
meta="tokens", body = list(action="query",
type="login", meta="tokens",
lgname = .Object@user_name, 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")) format= "json"))
httr::stop_for_status(query) httr::stop_for_status(query)
response <- httr::content(query, "parsed", "application/json") #parse query response to make sure login worked
print("query 1")#debug response <- httr::content(query, "parsed", "application/json")
token <- response$query$tokens$logintoken if(response$clientlogin$status!="PASS"){
print(token)#debug stop(paste(response$clientlogin,"\n"))
query <- httr::POST(.Object@url, }
body = list(action="clientlogin", else{
username = .Object@user_name, return(token)
password = pass, }
logintoken = token, },
loginreturnurl="http://wiki.lezinter.net", error = function(e)
format= "json")) {
httr::stop_for_status(query) print(paste("Could not login to", .Object@url, e$message))
response <- httr::content(query, "parsed", "application/json") token <- 0
print("query 2")#debug }
print(response)#debug )
if(response$clientlogin$status=="PASS"){ return(token)
return(token)
}
else{
return("0")
}
}) })
#'Creates a new Mediawikir object instance #'Creates a new Mediawikir object instance
...@@ -46,8 +54,15 @@ setGeneric("connect", function(.Object, pass){}) ...@@ -46,8 +54,15 @@ setGeneric("connect", function(.Object, pass){})
#'@examples #'@examples
#' new("Mediawikir", "http://wiki.example.com", "admin", "theadmin'spassword") #' new("Mediawikir", "http://wiki.example.com", "admin", "theadmin'spassword")
setMethod("initialize", "Mediawikir", function (.Object, instance_url, user, pass){ setMethod("initialize", "Mediawikir", function (.Object, instance_url, user, pass){
.Object@url <- paste(instance_url,"/","api.php",sep="") tryCatch({
.Object@user_name <- user .Object@url <- paste(instance_url,"/","api.php",sep="")
.Object@auth_token=connect(.Object, pass) .Object@user_name <- user
.Object@auth_token=connect(.Object, pass)
},
error = function(e){
print(e$message)
.Object <- FALSE
}
)
return(.Object) 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