R/chucknorris.R

#' @title Interface to the Chuck Norris API
#' @name chucknorris
#' @description Provides programmatic access to the collection of Chuck Norris facts
#'
#' @docType package
#' @aliases chucknorris chucknorris-package
NULL

#' Retrieve a fact from the Chuck Norris API
#' @param  category A string containing the category of interest(set it to NULL for a random fact).
#'  Use \code{\link{list_categories}} to display the available categories.
#' @return A list containing the fact(s) and the related ids
#' @references https://api.chucknorris.io/
#' @import httr
#' @export
#' @examples
#'  library("chucknorris")
#'  science_facts<- facts(category="science")
#'
#'
facts <- function(category=NULL){
    if(is.null(category)) {
        r <- GET("https://api.chucknorris.io/jokes/random")
    } else {
        r <- GET(paste0("https://api.chucknorris.io/jokes/random?category=", category))
    }
    if (r$status_code != 200) {
        stop_for_status(r)
    } else {tmp <- content(r)}
    tmp
}

print <- function(x, ...) cat(x$value, "\n", sep="")


#' This methods permits to look for a Chuck Norris fact based on a word (or phrase)
#' I
#' @param text A character containing the word (phrase) you are looking among facts
#' @return a list containing all the results related to the query param
#' @references https://api.chucknorris.io
#' @export
#' @examples
#'  library("chucknorris")
#'  query(text="rambo")
#'
query <- function(text=NULL){
    if(is.null(text)){
        r <- GET("https://api.chucknorris.io/jokes/random")
    } else {
        r <- GET(paste0("https://api.chucknorris.io/jokes/search?query=", text))
    }
    if (r$status_code != 200) {
        stop_for_status(r)
    } else {tmp <- content(r)}
    tmp
}

#' Returns a list corresponding to the currently available categories
#' @return A list containing the currently available categories
#' @references https://api.chucknorris.io
#' @export
#' @examples
#' library('chucknorris')
#' list_categories()
list_categories <- function(){
    r <- GET("https://api.chucknorris.io/jokes/categories")
    if (r$status_code != 200) stop_for_status(r) else tmp <- content(r)
    unlist(tmp)
}
onertipaday/chucknorris documentation built on May 3, 2019, 5:49 p.m.