R/ftdoi_storr_funs.R

Defines functions storr_init storr_create storr_exists storr_path doi_issn_list_keys doi_issn_get doi_issn_exists doi_issn_update url_list_keys url_exists url_get url_update prefix_list_keys doi_prefix key_exists prefix_get prefix_update

# doi-crossref member
prefix_update <- function(doi, df) {
  storr_init("_doi_prefixes")
  ftdoi_doi_prefixes$set(
    key = doi_prefix(doi),
    value = list(prefix = doi_prefix(doi), member=df$member)
  )
}
prefix_get <- function(doi) {
  storr_init("_doi_prefixes")
  tryCatch(ftdoi_doi_prefixes$get(key = doi_prefix(doi)),
    error=function(e) e)
}
key_exists <- function(x) !inherits(x, "error") && (!is.null(x) && length(x) > 0) 
doi_prefix <- function(doi) strsplit(doi, "/")[[1]][1]
prefix_list_keys <- function() {
  storr_init("_doi_prefixes")
  ftdoi_doi_prefixes$list()
}

# doi-url
url_update <- function(doi, url, content_type) {
  storr_init("_urls")
  if (!nzchar(as.character(url)) || is.null(url)) return()
  if (!key_exists(url_get(doi, content_type))) {
    ftdoi_urls$set(
      key = paste(doi, content_type, sep = ":"),
      value = list(url=url, content_type=content_type)
    )
  }
}
url_get <- function(doi, content_type = NULL) {
  storr_init("_urls")
  if (is.null(content_type)) {
    keys <- grep(doi, ftdoi_urls$list(), value = TRUE)
    lapply(keys, function(z) ftdoi_urls$get(z))
  } else {
    tryCatch(ftdoi_urls$get(key = paste(doi, content_type, sep = ":")),
      error=function(e) e)
  }
}
url_exists <- function(doi) {
  storr_init("_urls")
  keys <- ftdoi_urls$list()
  any(grepl(doi, keys))
}
url_list_keys <- function() {
  storr_init("_urls")
  ftdoi_urls$list()
}

# doi-issn
doi_issn_update <- function(doi, issn) {
  storr_init("_doi_issn")
  if (!ftdoi_doi_issn$exists(doi)) {
    ftdoi_doi_issn$set(key = doi, value = issn)
  }
}
doi_issn_exists <- function(doi) ftdoi_doi_issn$exists(doi)
doi_issn_get <- function(doi) {
  storr_init("_doi_issn")
  tryCatch(ftdoi_doi_issn$get(key = doi), error=function(e) e)
}
doi_issn_list_keys <- function() {
  storr_init("_doi_issn")
  ftdoi_doi_issn$list()
}

# storr helper functions
storr_path <- function(x) file.path(ftdoi_cache$cache_path_get(), x)
storr_exists <- function(x) dir.exists(storr_path(x))
storr_create <- function(x) {
  storr::storr_rds(file.path(ftdoi_cache$cache_path_get(), x),
    mangle_key = TRUE)
}
storr_init <- function(x) {
  if (!storr_exists(x)) storr_create(x)
}

ftdoi_doi_prefixes <- ftdoi_urls <- ftdoi_doi_issn <- NULL

Try the fulltext package in your browser

Any scripts or data that you put into this service are public.

fulltext documentation built on June 12, 2021, 9:06 a.m.