代码之家  ›  专栏  ›  技术社区  ›  Conor Neilson

如果脱机运行,CRAN示例将失败(与外部API对话)

r
  •  0
  • Conor Neilson  · 技术社区  · 4 年前

    #' @examples
    #' library(opentriviadb)
    #' dat <- httr::GET("https://opentdb.com/api_category.php")
    

    我的问题是,这与互联网连接工作得很好,但如果克兰建立这个而一台机器无法访问互联网,它将失败R CMD检查

    Error in curl::curl_fetch_memory(url, handle = handle) : 
      Timeout was reached: [opentdb.com] Operation timed out after 10000 milliseconds with 0 out of 0 bytes received
    

    \dontrun{}

    1 回复  |  直到 4 年前
        1
  •  1
  •   Dirk is no longer here    4 年前

    是的,有。如果你已经使用了 curl has_internet() :

    > curl::has_internet() 
    [1] TRUE
    >
    

    gtrendsR 很明显,如果没有连接的话,谷歌很难进行查询。。。考虑到这一点,我意识到我也在自己的实用程序包中实现了自己的测试 dang

    > dang::isConnected()
    [1] TRUE
    > 
    

    哪一个 does not depend on any other packages 因此,您可以复制它(并始终感谢署名):

    isConnected <- function(site="https://www.google.com") {
        uoc <- function(site) {
            con <- url(site)                # need to assign so that we can close
            open(con)                       # in case of success we have a connection
            close(con)                      # ... so we need to clean up
        }
        suppressWarnings(!inherits(try(uoc(site), silent=TRUE), "try-error"))
    }