модуль OpenURI::OpenRead
Mixin для URI HTTP и FTP.
Публичные методы экземпляров
# File lib/open-uri.rb, line 720 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.Если для прокси
URIзадано nil, этот параметр просто игнорируется.Если заданы :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 728
def read(options={})
self.open(options) {|f|
str = f.read
Meta.init str, f
str
}
end OpenURI::OpenRead#read([ options ]) считывает содержимое, на которое ссылается self, и возвращает содержимое в виде строки. Строка расширена с помощью OpenURI::Meta. Аргумент options такой же, как в OpenURI::OpenRead#open.
Ruby Core © 1993–2020 Yukihiro Matsumoto
Licensed under the Ruby License.
Ruby Standard Library © contributors
Licensed under their own licenses.