модуль OpenURI::OpenRead
Миксин для URI HTTP и FTP.
Публичные методы экземпляров
# File lib/open-uri.rb, line 743 def open(*rest, &block) OpenURI.open_uri(self, *rest, &block) end
OpenURI::OpenRead#open предоставляет `open' для URI::HTTP и URI::FTP.
OpenURI::OpenRead#open принимает необязательные 3 аргумента как:
OpenURI::OpenRead#open([mode [, perm]] [, options]) [{|io| ... }]
OpenURI::OpenRead#open возвращает объект типа IO, если блок не задан. В противном случае он передает объект IO и возвращает значение блока. Объект IO расширен с помощью OpenURI::Meta.
mode и perm аналогичны Kernel#open.
Однако, mode должен быть в режиме чтения, так как OpenURI::OpenRead#open не поддерживает режим записи (ещё). Также perm игнорируется, так как имеет смысл только для создания файла.
options должен быть хэшем.
Каждый параметр со строковым ключом указывает дополнительное поле заголовка для HTTP. То есть, он игнорируется для FTP без прокси-сервера HTTP.
Хэш может включать и другие параметры, где ключи являются символами:
- :proxy
-
Синопсис:
:proxy => "http://proxy.foo.com:8000/" :proxy => URI.parse("http://proxy.foo.com:8000/") :proxy => true :proxy => false :proxy => nilЕсли указан параметр :proxy, значение должно быть
String,URI, булевым значением или nil.Когда задан
StringилиURI, это обрабатывается как проксиURI.При задании true или если параметр не указан, проверяется переменная окружения `scheme_proxy'. `scheme' заменяется на `http', `https' или `ftp'.
При задании false или nil переменные окружения игнорируются, и соединение будет установлено напрямую с сервером.
- :proxy_http_basic_authentication
-
Синопсис:
:proxy_http_basic_authentication => ["http://proxy.foo.com:8000/", "proxy-user", "proxy-password"] :proxy_http_basic_authentication => [URI.parse("http://proxy.foo.com:8000/"), "proxy-user", "proxy-password"]Если указан параметр :proxy, значение должно быть массивом
Arrayиз 3 элементов. Он должен содержать проксиURI, имя пользователя прокси и пароль прокси. ПроксиURIдолжен бытьString,URIили nil. Имя пользователя прокси и пароль должны бытьString.Если nil задан для прокси
URI, этот параметр просто игнорируется.Если указаны :proxy и :proxy_http_basic_authentication, генерируется
ArgumentError. - :http_basic_authentication
-
Синопсис:
:http_basic_authentication=>[user, password]
Если указан параметр :http_basic_authentication, значение должно быть массивом из 2 строк: имя пользователя и пароль. Используется для HTTP Basic аутентификации, определённой RFC 2617.
- :content_length_proc
-
Синопсис:
:content_length_proc => lambda {|content_length| ... }Если указан параметр :content_length_proc, процедура, заданная этим параметром, вызывается перед началом фактической передачи. Она принимает один аргумент, который представляет ожидаемую длину контента в байтах.
Если выполняется две или более передачи по HTTP-перенаправлению, процедура вызывается только один раз для последней передачи.
Если ожидаемая длина контента неизвестна, процедура вызывается с nil. Это происходит, когда HTTP-ответ не содержит заголовка Content-Length.
- :progress_proc
-
Синопсис:
:progress_proc => lambda {|size| ...}Если указан параметр :progress_proc, процедура вызывается с одним аргументом каждый раз, когда `open' получает фрагмент контента из сети. Аргумент
size— это суммарный размер переданных данных в байтах.Если выполняется две или более передачи по HTTP-перенаправлению, процедура вызывается только один раз для последней передачи.
:progress_proc и :content_length_proc предназначены для отображения прогресс-бара. Например, это можно реализовать с помощью Ruby/ProgressBar.
pbar = nil open("http://...", :content_length_proc => lambda {|t| if t && 0 < t pbar = ProgressBar.new("...", t) pbar.file_transfer_mode end }, :progress_proc => lambda {|s| pbar.set s if pbar }) {|f| ... } - :read_timeout
-
Синопсис:
:read_timeout=>nil (no timeout) :read_timeout=>10 (10 second)
Параметр :read_timeout задаёт таймаут чтения для HTTP-соединений.
- :open_timeout
-
Синопсис:
:open_timeout=>nil (no timeout) :open_timeout=>10 (10 second)
Параметр :open_timeout задаёт таймаут открытия для HTTP-соединений.
- :ssl_ca_cert
-
Синопсис:
:ssl_ca_cert=>filename or an Array of filenames
:ssl_ca_cert используется для указания сертификата CA для SSL. Если он задан, не используются стандартные сертификаты.
- :ssl_verify_mode
-
Синопсис:
:ssl_verify_mode=>mode
:ssl_verify_mode используется для указания режима проверки openssl.
- :ftp_active_mode
-
Синопсис:
:ftp_active_mode=>bool
:ftp_active_mode => trueиспользуется для переключения в активный режим FTP. Ruby 1.9 по умолчанию использует пассивный режим. Обратите внимание, что активный режим — по умолчанию в Ruby 1.8 или ранее. - :redirect
-
Синопсис:
:redirect=>bool
:redirectпо умолчанию true.:redirect => falseиспользуется для отключения всех HTTP-перенаправлений.OpenURI::HTTPRedirectисключение, которое генерируется при перенаправлении. Использованиеtrueтакже означает, что разрешены перенаправления между HTTP и FTP.
# File lib/open-uri.rb, line 751
def read(options={})
self.open(options) {|f|
str = f.read
Meta.init str, f
str
}
end OpenURI::OpenRead#read() считывает содержимое, на которое ссылается self, и возвращает содержимое в виде строки. Строка расширена с помощью OpenURI::Meta. Аргумент options такой же, как у OpenURI::OpenRead#open.
Ruby Core © 1993–2017 Yukihiro Matsumoto
Licensed under the Ruby License.
Ruby Standard Library © contributors
Licensed under their own licenses.