модуль OpenURI::OpenRead
Миксин для URI HTTP и FTP.
Публичные методы экземпляров
# File lib/open-uri.rb, line 733 def open(*rest, &block) OpenURI.open_uri(self, *rest, &block) end
#open предоставляет `open` для URI::HTTP и URI::FTP.
#open принимает необязательные 3 аргумента, как:
OpenURI::OpenRead#open([mode [, perm]] [, options]) [{|io| ... }]
#open возвращает объект типа IO, если блок не задан. В противном случае он передает объект IO и возвращает значение блока. Объект IO расширен с помощью OpenURI::Meta.
mode и perm аналогичны Kernel#open.
Однако, mode должен быть в режиме чтения, так как #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, значение должно быть строкой, URI, булевым значением или nil.
При вводе строки или 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, значение должно быть массивом из 3 элементов. Он должен содержать прокси URI, имя пользователя прокси и пароль прокси. Прокси URI должен быть строкой, URI или nil. Имя пользователя и пароль прокси должны быть строками.
Если для прокси 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 741
def read(options={})
self.open(options) {|f|
str = f.read
Meta.init str, f
str
}
end #read) считывает содержимое, на которое ссылается self, и возвращает содержимое в виде строки. Строка расширена с помощью OpenURI::Meta. Аргумент options такой же, как в #open.
Ruby Core © 1993–2017 Yukihiro Matsumoto
Licensed under the Ruby License.
Ruby Standard Library © contributors
Licensed under their own licenses.