
Lib_proweb
Библиотека для полноценной работы с http

---

// Для создания, соединения, настройки, закрытия

procedure open(url: String);
Создает соединение с указаным url.

procedure set_property(key, value: string);
Устанавливает свойство key c значением value.

procedure set_method(s: String);
Метод GET или POST

procedure set_body(s: String);
Устанавливает текст запроса для метода POST

function request(): integer;
Устанавливает соединение и возвращает ответ сервера.

function get_field(key: String): string;
Возвращает значение заголовка по названию key от сервера.

function get_fieldvalue(int s): string;
Возвращает значение заголовка по индексу или пустую строку, если индекс превышен.

function get_fieldkey(int s): string;
Возвращает название заголовка по индексу или пустую строку, если индекс превышен.

function get_cookie(): string;
Возвращает ВСЕ cookie одной строкой. 

procedure close();
Закрывает соединение, очищает все данные.

// Для установленного соединения

function get_data_bg(): integer;
Возвращает значение состояния загрузки данных.
0 - загрузка данных еще продолжается.
1 - загрузка данных окончена. Данные могут быть получены через get_data() или get_stream()

procedure get_data_stop();
Останавливает процесс загрузки данных. Закрывает соединение, а загруженные данные можно получить через get_stream();

function get_stream(): string;
Возвращает значение входного потока. Все данные которые загружены на данный момент.

function get_data(): string;
Ожидает окончания загрузки всех данных и возвращает загруженные данные.  
Получение больших данных может занимать много времени, программа будет простаивать, лучше использовать get_data_bg или get_stream.  

// Авто

procedure q_property(key, value: string);
Устанавливает свойство key c значением value для функции q_request.

function q_request(url, method, body, gz: string): integer;
Создает соединение с url, методом method и телом body, вспомогательным параметром gz и возвращает ответ сервера.
Заголовки предварительно установить с помощью q_property. 

Параметр gz может иметь слудующие значения:
"gzip" - если сервер поддерживает сжатие, загружает данные в сжатом виде gzip, get_datа вернет распакованные данные, в случае ошибки распаковки ничего.
"auto" - аналогично gzip, но в случае ошибки распаковки автоматически перезагрузить указанный url в несжатом виде.
"none" - используется обычная загрузка без сжатия.

Также автоматически определяет кодировку и перекодирует при возможности входные данные. 
Поддерживает UTF-8, и кириллические русские Windows-1251, ISO-8859-5, MacCyrillic, KOI8-R

Функия поддерживает автоматическую переадресацию.

function q_get_uri(): string;
Возвращает URI соединения, например, в случае переадресации URL. Или пустую строчку.


// Вспомогательные

function get_error(): string;
После выполнения процедуры, возвращает описание ошибки, или пустую строчку если нет ошибки.

function gunzip(gz_d: string): string;
Возвращает распакованный архив из строки gz_d.

function gz_ratio(): integer;
После распаковки возвращает степень сжатия.

function str2rs(s: String): resource
Переводит строчку s в ресурс.

function rs2str(res: resource): string;
Переводит ресурс res в строчку. 

function encode(s, e, def: String): string;
Берет строчку s в кодировке e (значения "utf-8", "Windows-1251", "ISO-8859-5","MacCyrillic", "KOI8-R") и возвращает в Unicode.
В случае невозможности перекодировки возвращает строчку def.


function base64_encode(String encoded): string;
Возвращает закодированную строку encoded в формате base64.

function base64_decode(String decoded): string;
Возвращает раскодированную строку decoded в формате base64.


Пример использования в папке Example
