diff --git a/NAMESPACE b/NAMESPACE index 37fec0f..a97a304 100644 --- a/NAMESPACE +++ b/NAMESPACE @@ -23,6 +23,7 @@ export(get_gs_pptx) export(get_image_from_slide) export(get_image_link_from_slide) export(get_object_id_notes) +export(get_pages_url) export(get_slide_id) export(get_slide_page) export(get_yaml_spec) @@ -46,10 +47,7 @@ export(set_up_leanpub) export(unzip_pptx) export(website_to_embed_leanpub) export(xml_notes) -import(bookdown_path) -import(cow) import(dplyr) -importFrom(fs,dir_copy) importFrom(httr,GET) importFrom(httr,accept_json) importFrom(httr,config) diff --git a/R/get_pages_url.R b/R/get_pages_url.R new file mode 100644 index 0000000..d65f082 --- /dev/null +++ b/R/get_pages_url.R @@ -0,0 +1,81 @@ +#' Retrieve pages url for a repo +#' +#' Given an repository on GitHub, retrieve the pages URL for it. +#' +#' @param repo_name The full name of the repo to get bookdown chapters from. +#' e.g. "jhudsl/OTTR_Template" +#' @param git_pat If private repositories are to be retrieved, a github personal +#' access token needs to be supplied. If none is supplied, then this will attempt to +#' grab from a git pat set in the environment with usethis::create_github_token(). +#' Authorization handled by \link[cow]{get_git_auth} +#' @param verbose TRUE/FALSE do you want more progress messages? +#' @param keep_json verbose TRUE/FALSE keep the json file locally? +#' +#' @return a data frame with the repository with the following columns: +#' data_level, data_path, chapt_name, url, repository name +#' +#' @importFrom magrittr %>% +#' @import dplyr +#' +#' @export +#' +#' @examples \dontrun{ +#' +#' usethis::create_github_token() +#' +#' get_chapters("jhudsl/Documentation_and_Usability") +#' } +get_pages_url <- function(repo_name, + git_pat = NULL, + verbose = FALSE, + keep_json = FALSE) { + page_url <- NA + + # Try to get credentials other way + auth_arg <- get_git_auth(git_pat = git_pat, quiet = !verbose) + + git_pat <- try(auth_arg$password, silent = TRUE) + + if (grepl("Error", git_pat[1])) { + warning("Cannot retrieve page info without GitHub credentials. Passing an NA.") + } + + # We can only retrieve pages if we have the credentials + if (!grepl("Error", git_pat[1])) { + exists <- check_git_repo( + repo_name = repo_name, + git_pat = git_pat, + verbose = FALSE + ) + + if (exists) { + # Get repo info + repo_info <- get_repo_info( + repo_name = repo_name, + git_pat = git_pat + ) + + # Declare URL + url <- paste0("https://api.github.com/repos/", repo_name, "/pages") + + # Github api get + response <- httr::GET( + url, + httr::add_headers(Authorization = paste0("token ", auth_arg$password)), + httr::accept_json() + ) + + if (httr::http_error(response)) { + if (verbose) { + warning(paste0("url: ", url, " failed")) + } + } else { + # Get content as JSON + page_info <- httr::content(response, as = "parsed") + + page_url <- page_info$html_url + } + } + } + return(page_url) +} diff --git a/R/screenshot.R b/R/screenshot.R index e1b7c39..5315a77 100644 --- a/R/screenshot.R +++ b/R/screenshot.R @@ -5,7 +5,6 @@ #' @param output_dir default is "resources/chapt_screen_images"; Output directory where the chapter's screen images should be stored. For OTTR courses, don't change this unless you've changed the downstream functions accordingly. #' @param base_url default is NULL; rendered bookdown URL where screenshots are taken from, if NULL, the function will use the repo_name and and git_pat to find the base_url #' @return the file path for file where chapter urls are saved -#' @import cow #' @import dplyr #' @importFrom webshot2 webshot #' @importFrom magrittr %>% @@ -27,7 +26,7 @@ make_screenshots <- function(git_pat, repo, output_dir = "resources/chapt_screen } if (is.null(base_url)){ - base_url <- cow::get_pages_url(repo_name = repo, git_pat = git_pat) #what if these arguments are still NULL/not supplied? + base_url <- ottrpal::get_pages_url(repo_name = repo, git_pat = git_pat) #what if these arguments are still NULL/not supplied? base_url <- gsub("/$", "", base_url) } diff --git a/man/get_pages_url.Rd b/man/get_pages_url.Rd new file mode 100644 index 0000000..3ee5765 --- /dev/null +++ b/man/get_pages_url.Rd @@ -0,0 +1,36 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/get_pages_url.R +\name{get_pages_url} +\alias{get_pages_url} +\title{Retrieve pages url for a repo} +\usage{ +get_pages_url(repo_name, git_pat = NULL, verbose = FALSE, keep_json = FALSE) +} +\arguments{ +\item{repo_name}{The full name of the repo to get bookdown chapters from. +e.g. "jhudsl/OTTR_Template"} + +\item{git_pat}{If private repositories are to be retrieved, a github personal +access token needs to be supplied. If none is supplied, then this will attempt to +grab from a git pat set in the environment with usethis::create_github_token(). +Authorization handled by \link[cow]{get_git_auth}} + +\item{verbose}{TRUE/FALSE do you want more progress messages?} + +\item{keep_json}{verbose TRUE/FALSE keep the json file locally?} +} +\value{ +a data frame with the repository with the following columns: +data_level, data_path, chapt_name, url, repository name +} +\description{ +Given an repository on GitHub, retrieve the pages URL for it. +} +\examples{ +\dontrun{ + +usethis::create_github_token() + +get_chapters("jhudsl/Documentation_and_Usability") +} +} diff --git a/man/make_screenshots.Rd b/man/make_screenshots.Rd new file mode 100644 index 0000000..d3d4c9d --- /dev/null +++ b/man/make_screenshots.Rd @@ -0,0 +1,38 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/screenshot.R +\name{make_screenshots} +\alias{make_screenshots} +\title{A function to make screenshots from an OTTR bookdown website} +\usage{ +make_screenshots( + git_pat, + repo, + output_dir = "resources/chapt_screen_images", + base_url = NULL +) +} +\arguments{ +\item{git_pat}{required argument; a Git secret -- see https://docs.github.com/en/authentication/keeping-your-account-and-data-secure/managing-your-personal-access-tokens for more info} + +\item{repo}{required argument; GitHub repository name, e.g., jhudsl/OTTR_Template} + +\item{output_dir}{default is "resources/chapt_screen_images"; Output directory where the chapter's screen images should be stored. For OTTR courses, don't change this unless you've changed the downstream functions accordingly.} + +\item{base_url}{default is NULL; rendered bookdown URL where screenshots are taken from, if NULL, the function will use the repo_name and and git_pat to find the base_url} +} +\value{ +the file path for file where chapter urls are saved +} +\description{ +This function creates screenshots of course chapters that are stored in a created output directory +} +\examples{ +\dontrun{ + + make_screenshots(Sys.getenv("secrets.GH_PAT"), "jhudsl/OTTR_Template") + +} +} +\author{ +Candace Savonen +}