Spec-Zone.ru › Ruby 2.6

модуль OpenURI::OpenRead

Mixin для URI HTTP и FTP.

Открытые методы экземпляров

open(*rest, &block) Показать исходный код
# File lib/open-uri.rb, line 735
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

Используется для указания сертификата CA для SSL. Если он задан, не используются сертификаты по умолчанию.

:ssl_verify_mode

Синтаксис:

:ssl_verify_mode=>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 разрешены.

read(options={}) Показать исходный код
# File lib/open-uri.rb, line 743
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.

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API