Spec-Zone.ru › Ruby 2.2

модуль OpenURI::OpenRead

Миксин для URI HTTP и FTP.

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

open(*rest, &block) Показать исходный код
# File lib/open-uri.rb, line 715
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, булевым значением или null.

Если задана строка или URI, она обрабатывается как прокси URI.

Если задано true или параметр не указан, проверяется переменная окружения `scheme_proxy`. `scheme` заменяется на `http`, `https` или `ftp`.

Если задано false или null, переменные окружения игнорируются, и подключение осуществляется к серверу напрямую.

: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 или null. Имя пользователя прокси и пароль должны быть строками.

Если для прокси URI задано null, этот параметр просто игнорируется.

Если заданы :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, процедура вызывается только один раз для последней передачи.

Если ожидаемая длина содержимого неизвестна, процедура вызывается с null. Это происходит, когда 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 723
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