blob: 099975c87d9b5a5551a7a5e0412a761e877042ca [file] [log] [blame]
#' Class KorAPConnection
#'
#' \code{KorAPConnection} objetcs represent the connection to a KorAP server.
#' New \code{KorAPConnection} objects can be created by \code{KorAPConnection()}
#'
#' @import jsonlite
#' @import utils
#' @import methods
#'
#'
#' @export
KorAPConnection <- setClass("KorAPConnection", slots=c(KorAPUrl="character", apiVersion="character", apiUrl="character"))
#' @param .Object KorAPConnection object
#' @param KorAPUrl the URL of the KorAP server instance you want to access.
#' @param apiVersion which version of KorAP's API you want to connect to.
#' @param apiUrl URL of the KorAP web service.
#' @return \code{\link{KorAPConnection}} object that can be used e.g. with \code{\link{corpusQuery}}
#'
#' @examples
#' kcon <- new("KorAPConnection")
#' kq <- corpusQuery(kcon, "Ameisenplage")
#' kq <- fetchAll(kq, verbose=TRUE)
#'
#' @note Currently it is not possible to authenticate the client
#'
#' @rdname KorAPConnection-class
#' @export
setMethod("initialize", "KorAPConnection",
function(.Object, KorAPUrl = "https://korap.ids-mannheim.de/instance/test/", apiVersion = 'v1.0', apiUrl) {
.Object <- callNextMethod()
m <- regexpr("https?://[^?]+", KorAPUrl, perl = TRUE)
.Object@KorAPUrl <- regmatches(KorAPUrl, m)
if (!endsWith(.Object@KorAPUrl, '/')) {
.Object@KorAPUrl <- paste0(.Object@KorAPUrl, "/")
}
if (missing(apiUrl)) {
.Object@apiUrl = paste0(.Object@KorAPUrl, 'api/', apiVersion, '/')
} else {
.Object@apiUrl = apiUrl
}
.Object@apiVersion = apiVersion
.Object
})
#' @rdname KorAPConnection-class
#' @param object KorAPConnection object
#' @export
setMethod("show", "KorAPConnection", function(object) {
cat("<KorAPConnection>", "\n")
cat("apiUrl: ", object@apiUrl, "\n")
})
#' Funtion KorAPConnection()
#'
#' Wrappper function for new("KorAPConnection")
#'
#' @rdname KorAPConnection-constructor
#' @name KorAPConnection-constructor
#' @export
# KorAPConnection <- function(...) new("KorAPConnection", ...)