Spec-Zone.ru › Ruby 2.3

модуль OpenURI::OpenRead

Mixin для URI HTTP и FTP.

Публичные методы экземпляров

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

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

Spec-Zone.ru

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