I want to download a csv file from a private GitHub repo and load it to the current environment. I don't want to simply read_csv("raw_git_url") as the script will be public and copy/pasting the raw_git_url will leave me with filename.csv?token=AHh_HT3Aetc.... and I don't want my token number being public.
Instead, I have got a GitHub authentication token and put it as a .Renviron file into my working directory.
I can e.g. write the file to disk/working-directory like this:
library(httr)
url <- "https://raw.githubusercontent.com/username/privatereponame/master/dataname.csv"
GET(url, write_disk("mynew.csv", overwrite=TRUE))
but I don't want to write a copy - just have the csv file available in the current environment. Am I missing something obvious? Changing write_disk.... to a readr::read_csv command isn't working.
I can do a hacky thing - access the raw content like this:
x=GET(url, authenticate(Sys.getenv("GITHUB_PAT1"), ""))
enc<-stringi::stri_enc_detect(content(x, "raw"))
content(x, "text", encoding = enc[[1]]$Encoding[1])
...and then writing some script to convert text to csv.... but this feels too long-winded.
sometimes you have to ask a question to dig to the answer:
x=GET(url, authenticate(Sys.getenv("GITHUB_PAT1"), ""))
content(x, type="text/csv")
Using the type argument in content() sets the MIME type.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With