### Описание класса URL

Производит буферизованное и кеширующее чтение укзанного URL из глобальной сети. Суть заключается в том, что на самом деле чтение данных производит программа WGET, а данный класс всего лишь "обертка" вокруг WGET. Класс позволяет читать данные из сети и использовать неполностью считанные данные в любой момент времени без остановки как процесса чтения данных из сети так и данных из закешированного файла.
Простенький пример использования:

    // открыть URL
    u=urlNew("http","www.itk.ru","/clipper","index.html")
    u:open()
    while !u:eof() // пока не закончился процесс чтения данных из сети
       ? u:status
       // здесь еще можно timeout вкрутить
       u:kick // обновить статус процесса "выкачки"
       sleep(1)
       // или вместо sleep можно начать обрабатывать частично закачанные
       // данные из сети
       do while !u:fileEof()
           ? u:getstr()
       enddo
       u:goTop()
    enddo
      // процесс "закачки" закончился - можно преваривать полученный файл
      // такой же цикл можно использовать и вместо sleep(1)
      // только надо быть осторожным чтоб не уйти в бесконечность.
    u:goTop()
    while !u:dataEof()
      ? u:getStr(1000)
    enddo

### Атрибуты/свойства

Название атрибута | Значение атрибута
--- | ---
protocol | "http" | "ftp" | "file"
port | NIL | numeric
user | NIL | string
password | NIL | string
host | адрес сайта в виде строки "www.itk.ru" или строки с IP-номером
path | каталог на сайте
file | имя файла на сайте
anchor | якорь
params | NIL | string
start | число секунд системного времени (результат работы функции seconds) в момент начала считывания URL
stop | число секунд системного времени (результат работы функции seconds) в момент окончания считывания URL
status | строковое сообщение о текущем состоянии процесса скачивания
messages | строка со всеми сообщениями, выдававшиеся программой WGET
length | предполагаемая длина выкачиваемого файла
ready | сколько байт реально скачано

### Методы/функции

#### функция urlNew

urlNew(protocol,host,path,file) - инициализирует новый URL.
urlNew(url_OBJ) - инициализурует новый URL из структуры url_OBJ, например можно унаследовать свойства родительской страницы.

#### метод url:parseUrl(url)

Разбирает строку с URL в формате: [protocol:][//user:password@][host][/path/]file[?params][#anchor] раскладывает значения по атрибутам объекта. Старые значения атрибутов, не указанные в анализируемом URL не уничтожаются - т.е. используются как значения по умолчанию.

#### метод url:makeUrl(url)

Возвращает строку, собрнную из атрибутов объекта

#### метод url:open()

Начать процесс закачки.

#### метод url:close()

Закончить процесс закачки, даже если еще не все данные приняты.

#### метод url:eof()

Закончился ли процесс скачивания.

#### метод url:kick()

Обновить статусы процесса скачивания.

#### метод url:kick()

Обновить статусы процесса скачивания.

#### метод url:goTop()

Начать процесс чтения скаченных данных из закешированного файла.

#### метод url:read()

read(@buffer,nBytes) - прочитать в buffer скачанные данные в размере nBytes, возвращает реально прочитанное кол-во байт. Аналогично функции fread.

#### метод url:readStr(nBytes)

readStr(@buffer) - прочитать nBytes из скачанного файла и вернуть их в виде строки. Аналогично функции freadStr.

#### метод url:getStr(nBytes)

readStr(@buffer) - прочитать из скачанного файла строку, ограниченную символами конца строки. Аналогично функции fileGetStr.

#### метод url:fileEof()

Достигнут ли конец закешированного файла в процессе чтения, это не означает что процесс скачивания уже закончился. Это означает что все скачанные данные прочитаны методами read*

#### метод url:dataEof()

А вот это означает что процесс скачивания закончился и все данные из закешированного файла прочитаны функциями read*
© Ю.Хныкин, uri@itk.ru, 2000