差分

このページの2つのバージョン間の差分を表示します。

この比較画面へのリンク

次のリビジョン
前のリビジョン
r:set.proxy [2022/05/21 09:32] – 作成 watalur:set.proxy [2022/05/21 10:04] (現在) watalu
行 3: 行 3:
 set.proxy = function(proxy) { set.proxy = function(proxy) {
   if( is.list(proxy) ) {   if( is.list(proxy) ) {
 +    if(length(setdiff(names(proxy), c("http", "https", "ftp"))) == 0 ) {
 +      Sys.setenv("http_proxy"=proxy$http)
 +      Sys.setenv("https_proxy"=proxy$https)
 +      Sys.setenv("ftp_proxy"=proxy$ftp)
 +      return(TRUE)
 +    } else {
 +      return(FALSE)
 +    }
 +  } else if (is.vector(proxy)) {
     if( length(proxy) == 3 ) {     if( length(proxy) == 3 ) {
       Sys.setenv("http_proxy"=proxy[1])       Sys.setenv("http_proxy"=proxy[1])
       Sys.setenv("https_proxy"=proxy[2])       Sys.setenv("https_proxy"=proxy[2])
       Sys.setenv("ftp_proxy"=proxy[3])       Sys.setenv("ftp_proxy"=proxy[3])
-    } else {+      return(TRUE) 
 +    } else if (is.character(proxy[1])) {
       Sys.setenv("http_proxy"=proxy[1])       Sys.setenv("http_proxy"=proxy[1])
       Sys.setenv("https_proxy"=proxy[1])       Sys.setenv("https_proxy"=proxy[1])
       Sys.setenv("ftp_proxy"=proxy[1])       Sys.setenv("ftp_proxy"=proxy[1])
 +      return(TRUE)
 +    } else {
 +      return(FALSE)
     }     }
-  } else {+  } else if (is.character(proxy)) {
     Sys.setenv("http_proxy"=proxy)     Sys.setenv("http_proxy"=proxy)
     Sys.setenv("https_proxy"=proxy)     Sys.setenv("https_proxy"=proxy)
     Sys.setenv("ftp_proxy"=proxy)     Sys.setenv("ftp_proxy"=proxy)
 +    return(TRUE)
   }   }
 +  return(FALSE)
 } }
 </code> </code>
行 22: 行 37:
 使用法は次のとおり。 使用法は次のとおり。
 <code> <code>
-set.proxy(c("http://proxy.uec.ac.jp:8080",  "http://proxy.uec.ac.jp:8080", "http://proxy.uec.ac.jp:8080"))+set.proxy(list(http="http://proxy.uec.ac.jp:8080",   
 +          https="http://proxy.uec.ac.jp:8080",  
 +          ftp="http://proxy.uec.ac.jp:8080")) 
 +</code> 
 +<code> 
 +set.proxy(c("http://proxy.uec.ac.jp:8080",   
 +            "http://proxy.uec.ac.jp:8080",  
 +            "http://proxy.uec.ac.jp:8080"))
 </code> </code>
 <code> <code>
 set.proxy("http://proxy.uec.ac.jp:8080") set.proxy("http://proxy.uec.ac.jp:8080")
 </code> </code>
 +プロキシの設定を解除する関数も一緒に用意しておく。
 +<code>
 +unset.proxy = function() {
 +  Sys.setenv("http_proxy")
 +  Sys.setenv("https_proxy")
 +  Sys.setenv("ftp_proxy")
 +}
 +</code>
 +この関数の使い方は、引数なし。
 +<code>
 +unset.proxy()
 +</code>
 +