модуль OpenURI::OpenRead
Миксин для URI HTTP и FTP.
Общедоступные методы экземпляра
# File lib/open-uri.rb, line 749 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 757
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.