Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

copy over cow function to ottrpal #154

Merged
merged 2 commits into from
Jul 9, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
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)
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Do I need to also add an @export to the make_screenshots() function?

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.