!=====================================================================================
! Класс интерфейса с библиотекой CUrl (командная строка).
! Вячеслав Черников, г.Рязань, 2015г.
!=====================================================================================

!=====================================================================================
! Класс: интерфейс с CUrl.
! Пример вызова.
!
! FsCurlL   FsCurl
!
! FsCurlL.Init()               !инициализация класса
! FsCurl.Kill                  !уничтожаем класс
!
!===================================================================================
! Структуры для управления процессами
!
StartUpInfoType        GROUP,TYPE
cb                     ULONG
lpReserved             LONG    !*PSTR
lpDesktop              LONG    !*PSTR
lpTitle                LONG    !*PSTR
dwX                    ULONG
dwY                    ULONG
dwXSize                ULONG
dwYSize                ULONG
dwXCountChars          ULONG
dwYCountChars          ULONG
dwFillAttribute        ULONG
dwFlags                ULONG
wShowWindow            SIGNED
cbReserved2            SIGNED
lpReserved2            LONG    !*BYTE
hStdInput              UNSIGNED
hStdOutput             UNSIGNED
hStdError              UNSIGNED
dwHotKey               ULONG
dwShellData            ULONG
                     END

Process_InformationType GROUP,TYPE
hProcess               UNSIGNED
hThread                UNSIGNED
dwProcessId            ULONG
dwThreadId             ULONG
                     END

QueueCurlType  Queue, type    !буфер для формирования строки
BufStr    STRING(1024)        !строка буфера
end

Mail_ParamType GROUP,TYPE
FlagSSL        BYTE
MailKolFiles   BYTE
MailFrom       STRING(40)
MailTo         STRING(40)
MailNameFrom   STRING(128)
MailNameTo     STRING(128)
MailSubject    STRING(255)
MailBody       STRING(4096)
                     END

!=====================================================================================

FsCurl      CLASS,TYPE,MODULE('FsCurl.CLW'),LINK('FsCurl.CLW')
Active         BYTE,       PRIVATE          !флаг активности
WindowTitle    STRING(80)                   !заголовок окна выполнения процесса
FlagWait       BYTE                         !признак ожидания выполнения процесса
FlagShow       BYTE                         !признак показа окна программы 

UrlName        STRING(128)                  !адрес
UserName       STRING(40)                   !имя пользователя
UserPswd       STRING(40)                   !пароль

PathTmp        STRING(128)                  !каталог для временных файлов
FileNameInput  STRING(128)                  !имя файла параметров

BufPoint       LONG                         !указатель в буфере
BufPointMax    LONG                         !максимальное значение указателя 
MailPoint      LONG                         !указатель в буфере
MailPointMax   LONG                         !максимальное значение указателя 

QueueCurl      &QueueCurlType               !буфер для формирования строки
QueueInput     &QueueCurlType               !буфер для формирования файла параметров

Mail_Param           like(Mail_ParamType)

StartUpInfo          like(StartUpInfoType)
Process_Information  like(Process_InformationType)

Init           PROCEDURE()                  !инициализация объекта
Kill           PROCEDURE                    !уничтожение объекта
Destruct       PROCEDURE                    !деструктор

ClearBuffer    PROCEDURE                     !очистить буфер
AddBuffer      PROCEDURE (STRING Str)        !добавить строку в буфер

ClearInput     PROCEDURE                     !очистить буфер письма 
AddInput       PROCEDURE (STRING Str, <BYTE Reg>)        !добавить строку в файл параметров
MakeInput      PROCEDURE                     !сформировать файл параметров
AttachFile     PROCEDURE  (STRING pFile)     !прикрепить файл к файлу параметров
StringToBase64 FUNCTION  (STRING pString, LONG pLen), STRING   !приведение строки к base64
StringToKoi8r  FUNCTION  (STRING pStr), STRING  !приведение строки к koi8

StartProcess   FUNCTION (STRING pName), BYTE !запустить процесс
StartProcessExt FUNCTION (), BYTE            !запустить процесс для строки из буфера
KillProcess    FUNCTION (), BYTE             !убить процесс

SetMailHeader  PROCEDURE  (STRING pFrom, STRING pTo, <STRING pNameFrom>, <STRING pNameTo>)  !установить параметры письма
SetMailText    PROCEDURE  (STRING pSubject, STRING pBody)   !установить текст письма
MailHeaderAdd  FUNCTION (), BYTE             !создать заголовок для письма
MailFileAdd    FUNCTION (STRING pFile), BYTE !прикрепить файл к письму 

SetUrl         PROCEDURE  (STRING pUrl, <STRING pName>, <STRING pPswd>)  !установить URL

HttpRequestSymple FUNCTION (STRING pRemote, <STRING pLocal>), BYTE !выполнить простой http-запрос
MailSend    FUNCTION (), BYTE   !отправить письмо, используя ssl
             END
