libcurl for Clarion

Программы на Clarion, шаблоны, библиотеки и пр.
Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
Аватара пользователя
Дед Пахом
Старичок
Сообщения: 2102
Зарегистрирован: 07 Июль 2005, 15:51
Откуда: Москва, Россия

libcurl for Clarion

Сообщение Дед Пахом » 25 Август 2018, 12:33

Я не все ещё CURLOPT-константы перенёс в Clarion, делаю это в основном по запросам пользователей.
Вот так будет в след. версии:

Код: Выделить всё

CURLOPT_HTTP_VERSION          EQUATE(84 + CURLOPTTYPE_LONG)             !Specify which HTTP version to use! This must be set to one of the CURL_HTTP_VERSION* enums set below.
!  /* These enums are for use with the CURLOPT_HTTP_VERSION option. */ 
CURL_HTTP_VERSION_NONE              EQUATE(0)                           !setting this means we don't care, and that we'd like the library to choose the best possible for us!
CURL_HTTP_VERSION_1_0               EQUATE(1)                           !please use HTTP 1.0 in the request
CURL_HTTP_VERSION_1_1               EQUATE(2)                           !please use HTTP 1.1 in the request
CURL_HTTP_VERSION_2_0               EQUATE(3)                           !please use HTTP 2 in the request
CURL_HTTP_VERSION_2TLS              EQUATE(4)                           !use version 2 for HTTPS, version 1.1 for HTTP
CURL_HTTP_VERSION_2_PRIOR_KNOWLEDGE EQUATE(5)                           !please use HTTP 2 without HTTP/1.1 Upgrade
CURL_HTTP_VERSION_LAST              EQUATE(6)                           !*ILLEGAL* http version
С уважением, ДП

Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 3711
Зарегистрирован: 07 Июль 2005, 9:19
Откуда: г. Ростов-на-Дону

libcurl for Clarion

Сообщение Игорь Столяров » 25 Август 2018, 14:05

Ура ! Господин назвал меня пользователем !
(C) Белое солнце пустыни
Спасибо ! :)
«V» значит Вендетта !

Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 3711
Зарегистрирован: 07 Июль 2005, 9:19
Откуда: г. Ростов-на-Дону

libcurl for Clarion

Сообщение Игорь Столяров » 26 Август 2018, 18:26

Добрый день !

Назрел вопрос по существу. ;) Про метод:

Код: Выделить всё

SetPostFields                   PROCEDURE(STRING pPostFields), CURLcode, PROC
Пытаюсь загонять картинки POST запросами (на самом деле таких задач с BIGDATA много).
В принципе - всё работает. Создаю строку IDynStr, загоняю в неё картинку в BASE64, оборачиваю в XML и передаю.

Смущает то, что приходится выполнять преобразование IDynStr в достаточно упитанный STRING
и дальше гнать его в LibCurl по значению. На строках от 10 MByte вызовы уже чувствуются … :(

Может быть есть возможность рассмотреть пополнения зоопарка методом:

Код: Выделить всё

SetPostFields                   PROCEDURE(*IDynStr pPostFields), CURLcode, PROC
там только поменять параметр на pPostFields.Str(), а длина сразу известна pPostFields.StrLen() ... ?
Заранее спасибо за рассмотрение.

P/S: Про сабклассинг знаю, умею, но здесь ещё не созрел … ;)
«V» значит Вендетта !

Аватара пользователя
Дед Пахом
Старичок
Сообщения: 2102
Зарегистрирован: 07 Июль 2005, 15:51
Откуда: Москва, Россия

libcurl for Clarion

Сообщение Дед Пахом » 26 Август 2018, 19:04

Игорь Столяров писал(а):
26 Август 2018, 18:26
Может быть есть возможность рассмотреть пополнения зоопарка методом:

Код: Выделить всё

SetPostFields                   PROCEDURE(*IDynStr pPostFields), CURLcode, PROC
Легко! v1.33 уже в продаже.
С уважением, ДП

Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 3711
Зарегистрирован: 07 Июль 2005, 9:19
Откуда: г. Ростов-на-Дону

libcurl for Clarion

Сообщение Игорь Столяров » 26 Август 2018, 19:50

Спасибо ! Сейчас будем запрягать … :)
Ещё живёт один вопрос, но сразу скажу, что я им пока не занимался ...
Пиашписты, как-то возгоняют через POST файлы напрямую, вообще без загрузки в строку.
Например, как вот здесь: https://toster.ru/q/295743
Но то ли это возможности PHP, то ли CURL - я пока не понял ...
«V» значит Вендетта !

Аватара пользователя
Дед Пахом
Старичок
Сообщения: 2102
Зарегистрирован: 07 Июль 2005, 15:51
Откуда: Москва, Россия

libcurl for Clarion

Сообщение Дед Пахом » 26 Август 2018, 20:10

Игорь Столяров писал(а):
26 Август 2018, 19:50
Пиашписты, как-то возгоняют через POST файлы напрямую, вообще без загрузки в строку. Например, как вот здесь: https://toster.ru/q/295743
Не знаю PHP, но по-моему там как раз файл загоняется в массив (в одном месте написано array, в другом [...]), видимо это массив байт или что-то подобное.
А вообще надо не фантазировать, а читать документацию :-)
https://curl.haxx.se/libcurl/c/CURLOPT_POSTFIELDS.html
С уважением, ДП

Аватара пользователя
Admin
Администратор
Сообщения: 3324
Зарегистрирован: 05 Июль 2005, 14:59
Откуда: Хабаровск
Контактная информация:

libcurl for Clarion

Сообщение Admin » 27 Август 2018, 1:45

Дед Пахом писал(а):
26 Август 2018, 20:10
в одном месте написано array, в другом [...]
Начиная с PHP 5.4 возможно использовать короткий синтаксис определения массивов,
который заменяет языковую конструкцию array() на []
Рай совершает ошибки ничуть не реже чем ад. Просто у него хорошая пресса

pansoft
Бывалый
Сообщения: 67
Зарегистрирован: 08 Август 2011, 10:37

libcurl for Clarion

Сообщение pansoft » 29 Август 2018, 11:32

Добрый день всем,

Может кто поделится рабочим примером получения почты с сервера.
Сам запускаю пример, выдает ошибку 7 (Email List reading failed: Couldnt't connect to server)
Может прокси мешает?

Аватара пользователя
Дед Пахом
Старичок
Сообщения: 2102
Зарегистрирован: 07 Июль 2005, 15:51
Откуда: Москва, Россия

libcurl for Clarion

Сообщение Дед Пахом » 29 Август 2018, 12:24

Рабочий пример libcurl\examples\ReceiveMail\
С уважением, ДП

Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 3711
Зарегистрирован: 07 Июль 2005, 9:19
Откуда: г. Ростов-на-Дону

libcurl for Clarion

Сообщение Игорь Столяров » 29 Август 2018, 12:25

pansoft писал(а):
29 Август 2018, 11:32
Сам запускаю пример, выдает ошибку 7
Запускал тестовый пример почты ReceiveMail (давно) - всё прекрасно работало до получения списка сообщений.
Что касается PROXY - то это же Ваши местные прибамбасы, как здесь можно что-то советовать ?
Попробуйте включить и настроить опции для доступа CURL через PROXY - примеров на PHP полно.

Код: Выделить всё

CURLOPT_PROXY
CURLOPT_PROXYUSERNAME
CURLOPT_PROXYPASSWORD
и т.д.
«V» значит Вендетта !

Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 3711
Зарегистрирован: 07 Июль 2005, 9:19
Откуда: г. Ростов-на-Дону

libcurl for Clarion

Сообщение Игорь Столяров » 31 Август 2018, 7:24

Добрый день !

Это снова я. И у меня вопросы … ;) По пунктам.

1. Спасибо за интересные новые методы вставки картинок в текст письма.

Код: Выделить всё

  AddEmbeddedImage(STRING pFilename, STRING pCid, <STRING pName>)  !forces to use 'text/html' content-type
  AltBody(STRING pBody)    !forces to use 'text/html' content-type
хоть, что-то заработало сразу с убогими кларионовскими WMF листами отчётов ... :)

2. Но дьявол, снова скрылся в деталях ...
Вставка картинки в текст, затирает собственно сам текст письма ... :(
Т.е. если выполнить:

Код: Выделить всё

   ...
   MyCurl.Body('Посылаю Вам 20 своих селфи топлес !')
   ...
   Loc:GUID = GetGUID() 
   MyCurl.AddEmbeddedImage(Loc:FileName,Loc:GUID)
   MyCurl.Body('<html><body><img src="cid:' & Clip(Loc:GUID) & '"/></body></html>')
   ...
   Loc:ErrorCode = MyCurl.Send()
То в тексте письма придут только картинки ... Не хорошо это.
Или я неправильно формирую письмо ?
Вопрос именно о тексте письма, а не названии картинки.
Заранее спасибо за наводку. :)
«V» значит Вендетта !

Аватара пользователя
RaFaeL
Ветеран
Сообщения: 755
Зарегистрирован: 24 Март 2009, 17:59
Откуда: НН
Контактная информация:

libcurl for Clarion

Сообщение RaFaeL » 31 Август 2018, 9:46

Ну судя по примеру, нижнее .Body затирает верхнее, все логично )
Вообще структура HTML письма имеет "тело" минимум из трех частей - первая разводящая, вторая "текст" и третья "HTML", их надо заполнять независимо. В моей библиотеке для этого отдельные методы, по идее в curl тоже должны быть отдельные

Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 3711
Зарегистрирован: 07 Июль 2005, 9:19
Откуда: г. Ростов-на-Дону

libcurl for Clarion

Сообщение Игорь Столяров » 31 Август 2018, 10:12

RaFaeL писал(а):
31 Август 2018, 9:46
вторая "текст" и третья "HTML"
Вот здесь что-то и не срастается ... Потому, что в LibCurl - либо текст, либо HTML ...
И как-то конечно хочется, что бы Curl.Body() была накопительной …
Вполне логичная схема формирования письма:

Код: Выделить всё

  MyCurl.Body('Вступление')
  MyCurl.Body('Глава 1')
  MyCurl.Body('Глава 2')
  MyCurl.Body('Эпилог')
  ...
  ! --- Вложение картинок
  MyCurl.AddEmbeddedImage(Loc:FileName,Loc:GUID)
  MyCurl.Body('<html><body><img src="cid:' & Clip(Loc:GUID) & '"/></body></html>')
«V» значит Вендетта !

Аватара пользователя
RaFaeL
Ветеран
Сообщения: 755
Зарегистрирован: 24 Март 2009, 17:59
Откуда: НН
Контактная информация:

libcurl for Clarion

Сообщение RaFaeL » 31 Август 2018, 11:21

https://curl.haxx.se/libcurl/c/smtp-mime.html
Пример
B нем отдельные методы на каждую операцию
B libcurl по идее должны быть аналогичные

Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 3711
Зарегистрирован: 07 Июль 2005, 9:19
Откуда: г. Ростов-на-Дону

libcurl for Clarion

Сообщение Игорь Столяров » 31 Август 2018, 11:36

RaFaeL писал(а):
31 Август 2018, 11:21
B нем отдельные методы на каждую операцию
Да ! В принципе, тоже самое, что и библиотеке Catalyst - сборка / разборка MIME сообщения c произвольным кол-вом разделов.
И каждый раздел может иметь свой тип данных (TEXT / HTML / ФАЙЛ ...), передаваемых внутри MIME пакета ...
«V» значит Вендетта !

Ответить