Spec-Zone.ru › Ruby 2.5

модуль OpenURI::OpenRead

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

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

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