Skip to content

Commit

Permalink
Merge pull request #154 from jhudsl/ki/refactor-cowfn
Browse files Browse the repository at this point in the history
copy over cow function to ottrpal
  • Loading branch information
kweav authored Jul 9, 2024
2 parents 0aabec8 + edddb94 commit 0a38e72
Show file tree
Hide file tree
Showing 5 changed files with 165 additions and 5 deletions.
5 changes: 2 additions & 3 deletions NAMESPACE
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand All @@ -32,6 +33,7 @@ export(gs_png_download)
export(gs_png_url)
export(include_slide)
export(make_embed_markdown)
export(make_screenshots)
export(output_destination)
export(parse_q_tag)
export(parse_quiz)
Expand All @@ -46,10 +48,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)
Expand Down
81 changes: 81 additions & 0 deletions R/get_pages_url.R
Original file line number Diff line number Diff line change
@@ -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_pages_url("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)
}
10 changes: 8 additions & 2 deletions R/screenshot.R
Original file line number Diff line number Diff line change
@@ -1,16 +1,22 @@
#' A function to make screenshots from an OTTR bookdown website
#' @description This function creates screenshots of course chapters that are stored in a created output directory
#'
#' @param 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
#' @param repo required argument; GitHub repository name, e.g., jhudsl/OTTR_Template
#' @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 %>%
#' @importFrom rprojroot find_root has_dir
#'
#' @author Candace Savonen
#'
#' @export
#'
#' @examples \dontrun{
#'
#' make_screenshots(Sys.getenv("secrets.GH_PAT"), "jhudsl/OTTR_Template")
Expand All @@ -27,7 +33,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)
}

Expand Down
36 changes: 36 additions & 0 deletions man/get_pages_url.Rd

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

38 changes: 38 additions & 0 deletions man/make_screenshots.Rd

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

0 comments on commit 0a38e72

Please sign in to comment.