Книга: Программирование на языке Ruby
18.2.9. Библиотека Open-URI
18.2.9. Библиотека Open-URI
Библиотеку Open-URI написал Танака Акира (Tanaka Akira). Ее цель — унифицировать работу с сетевыми ресурсами из программы, предоставив интуитивно очевидный и простой интерфейс.
По существу она является оберткой вокруг библиотек net/http
, net/https
и net/ftp
и предоставляет метод open
, которому можно передать произвольный URI. Пример из предыдущего раздела можно было бы переписать следующим образом:
require 'open-uri'
data = nil
open("http://www.marsdrive.com/") {|f| data = f.read }
puts "Получено #{data.split.size} строк, #{data.size} байтов"
Объект, возвращаемый методом open(f
в примере выше), — не просто файл. У него есть также методы из модуля OpenURI::Meta
, поэтому мы можем получить метаданные:
uri = f.base_uri # Объект URI с собственными методами доступа.
ct = f.content_type # "text/html"
cs = f.charset # "utf-8"
ce = f.content_encoding # []
Библиотека позволяет задать и дополнительные заголовочные поля, передавая методу open
хэш. Она также способна работать через прокси-серверы и обладает рядом других полезных функций. В некоторых случаях этой библиотеки недостаточно (например, если необходимо разбирать заголовки HTTP, буферизовать очень большой скачиваемый файл, отправлять куки и т.д.). Дополнительную информацию можно найти в онлайновой документации на сайте http://ruby-doc.org.
- 18.2.1. Получение истинно случайных чисел из Web
- 18.2.2. Запрос к официальному серверу времени
- 18.2.3. Взаимодействие с РОР-сервером
- 18.2.4. Отправка почты по протоколу SMTP
- 18.2.5. Взаимодействие с IMAP-сервером
- 18.2.6. Кодирование и декодирование вложений
- 18.2.7. Пример: шлюз между почтой и конференциями
- 18.2.8. Получение Web-страницы с известным URL
- 18.2.9. Библиотека Open-URI
- Интегрированная безопасность (NT Integrated Security)
- Open Source Insight and Discussion
- Chapter 5 Installing and Configuring VirtualCenter 2.0
- namespace-uri()
- 5.2.2. Дополнительные возможности OpenSSL
- 7.7.2. mod_security
- openSUSE
- 14.5.1. Open Systems Interconnection
- 17.2.1. Библиотека setup.rb
- Azuri (Eight19): превращение солнечной энергетики в жизнеспособный бизнес
- 15.2.1. Стандартная библиотека rss
- Библиотека Ext Core