src/ruby_supportlib/phusion_passenger/utils/download.rb
# Downloads a file from the given URL and saves it to the given filename.
# Returns whether the download succeeded.
#
# Options:
#
#   show_progress: whether to show download progress. Default: false.
#   logger: the logger to use. If not given, this function will log to STDERR.
#   cacert: a CA certificate file to use for verifying SSL websites.
#           The default is to use the download tool's down CA database.
#   use_cache: Whether to copy the file from the download cache, if available.
#              Default: false.
#   connect_timeout: The maximum amount of time to spend on DNS lookup
#                    and establishing the TCP connection. Set to nil to
#                    disable this timeout. Default: 4.
#   idle_timeout: The maximum idle read time. Set to nil to set this timeout
#                 to the default wget value, 900. Set to nil to disable this
#                 timeout. Default: 5.
#   total_timeout: The maximum amount of time spent on the whole download
#                  operation, including connection time. Only has effect on curl.
#                  Set to nil to disable this timeout. Default: nil.
Downloads a file from the given URL and saves it to the given filename.
Returns whether the download succeeded.



whether to show download progress. Default: false.
logger: the logger to use. If not given, this function will log to STDERR.
cacert: a CA certificate file to use for verifying SSL websites.
The default is to use the download tool's down CA database.
use_cache: Whether to copy the file from the download cache, if available.
Default: false.
connect_timeout: The maximum amount of time to spend on DNS lookup
and establishing the TCP connection. Set to nil to
disable this timeout. Default: 4.
idle_timeout: The maximum idle read time. Set to nil to set this timeout
to the default wget value, 900. Set to nil to disable this
timeout. Default: 5.
total_timeout: The maximum amount of time spent on the whole download
operation, including connection time. Only has effect on curl.
Set to nil to disable this timeout. Default: nil.
Downloads a file from the given URL and saves it to the given filename . Returns whether the download succeeded . whether to show download progress . Default : false . logger : the logger to use . If not given this function will log to STDERR . cacert : a CA certificate file to use for verifying SSL websites . The default is to use the download tool ' s down CA database . use_cache : Whether to copy the file from the download cache if available . Default : false . connect_timeout : The maximum amount of time to spend on DNS lookup and establishing the TCP connection . Set to nil to disable this timeout . Default : 4 . idle_timeout : The maximum idle read time . Set to nil to set this timeout to the default wget value 900 . Set to nil to disable this timeout . Default : 5 . total_timeout : The maximum amount of time spent on the whole download operation including connection time . Only has effect on curl . Set to nil to disable this timeout . Default : nil .
def download(url, output, options = {})
        options = {
          :connect_timeout => 4,
          :idle_timeout    => 5
        }.merge(options)
        logger = options[:logger] || Logger.new(STDERR)
        if options[:use_cache] && cache_dir = PhusionPassenger.download_cache_dir
          basename = basename_from_url(url)
          if File.exist?("#{cache_dir}/#{basename}")
            logger.info "Copying #{basename} from #{cache_dir}..."
            FileUtils.cp("#{cache_dir}/#{basename}", output)
            return true
          end
        end
        if PlatformInfo.find_command("curl")
          return download_with_curl(logger, url, output, options)
        elsif PlatformInfo.find_command("wget")
          return download_with_wget(logger, url, output, options)
        else
          logger.error "Could not download #{url}: no download tool found (curl or wget required)"
          return false
        end
      end
def download ( url , output , options = { } ) options = { :connect_timeout => 4 , :idle_timeout => 5 } . merge ( options ) logger = options [ :logger ] || Logger . new ( STDERR ) if options [ :use_cache ] && cache_dir = PhusionPassenger . download_cache_dir basename = basename_from_url ( url ) if File . exist? ( "#{cache_dir}/#{basename}" ) logger . info "Copying #{basename} from #{cache_dir}..." FileUtils . cp ( "#{cache_dir}/#{basename}" , output ) return true end end if PlatformInfo . find_command ( "curl" ) return download_with_curl ( logger , url , output , options ) elsif PlatformInfo . find_command ( "wget" ) return download_with_wget ( logger , url , output , options ) else logger . error "Could not download #{url}: no download tool found (curl or wget required)" return false end end
Downloads a file from the given URL and saves it to the given filename.
Downloads a file from the given URL and saves it to the given filename .
url
output
options