модуль OpenURI::OpenRead
Миксин для URI HTTP и FTP.
Публичные методы экземпляра
# File lib/open-uri.rb, line 739 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.
- :ssl_min_version
-
Синопсис:
:ssl_min_version=>:TLS1_2
Параметр :ssl_min_version задаёт минимально допустимую версию протокола SSL/TLS. См. также
OpenSSL::SSL::SSLContext#min_version=. - :ssl_max_version
-
Синопсис:
:ssl_max_version=>:TLS1_2
Параметр :ssl_max_version задаёт максимально допустимую версию протокола SSL/TLS. См. также
OpenSSL::SSL::SSLContext#max_version=. - :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 747
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–2022 Yukihiro Matsumoto
Licensed under the Ruby License.
Ruby Standard Library © contributors
Licensed under their own licenses.