Форум » [x]Harbour » Облачные сервисы (WebDAV, CalDAV &Co) » Ответить

Облачные сервисы (WebDAV, CalDAV &Co)

Dr. Oldwarez: После некоторого разбирательства с прогой удалось организовать импорт из ICAL-файлов и экспорт в оные. Но тут шеф захотел, чтобы был прямой контакт с CalDav через интернет. Я знаю, что на питоне такое возможно. На дельфине и даже Xojo (RealBasic) тоже - через спецбиблиотеку. Но как реализовать подключение к облачному сервису в Harbour/Minigui? Возможно ли это вообще?

Ответов - 174, стр: 1 2 3 4 5 6 7 8 9 All

Dr. Oldwarez: SergKis пишет: Это событие календаря, 1 запись в базе (вроде, был еще параметр выполнение события дата-время, или ошибаюсь) календарей у вас 6 штук. Это личные календари событий или предприятия\организации. Объем календаря (в событиях-записях). И чего вы от них хотите ? Просто показ в табл. виде отчетов ? Цель ? Да, просто занесения в DBF в целях синхронизации. 99% времени это работает в локальном режиме. А также обратно занесение полей из DBF в календарь. С последним некоторые проблемы. [pre2]curl -k --user USERNAME:PASSWORD -X PUT -H "Content-Type: text/calendar; charset=utf-8" -d "$a" "https://owncloud.jujens.eu/remote.php/caldav/calendars/jujens/omis/<mon-fichier.ics>"[/pre2] То есть тут <mon-fichier.ics> - это не локальный сгенерированный файл, а элемент календаря в сети. Как в него занести данные из локальных полей, даже если они сгенерированы в ЛОКАЛЬНЫЙ ics файл? типа C:\MYCALPROG\TEMP\EXPORT.ICS Как его в календарь с помощью CURL забросить?

SergKis: PS2 Есть еще STATUS:... нашел несколько значений STATUS:CONFIRMED STATUS:CANCLED STATUS:TENTATIVE возможно надо учесть ?

Dr. Oldwarez: SergKis пишет: PS2 Есть еще STATUS:... нашел несколько значений STATUS:CONFIRMED STATUS:CANCLED STATUS:TENTATIVE возможно надо учесть ? STATUS:CONFIRMED Но и без него можно обойтись Я уже сделал считывание из календаря в массив, который потом можно запихнуть в таблицу. Теперь моя последняя задача - запихивание данных из таблицы в календарь. После чего можно и отдохнуть.


SergKis: Dr. Oldwarez пишет Теперь моя последняя задача - запихивание данных из таблицы в календарь. В поиске попалось https://kb.kopano.io/display/WIKI/Importing+ICAL+.ics+files+into+Kopano тут https://curl.se/docs/manpage.html смотрим -T, --upload-file <file> This transfers the specified local file to the remote URL. If there is no file part in the specified URL, curl will append the local file name. NOTE that you must use a trailing / on the last directory to really prove to Curl that there is no file name or curl will think that your last directory name is the remote file name to use. That will most likely cause the upload operation to fail. If this is used on an HTTP(S) server, the PUT command will be used. ...

Dr. Oldwarez: SergKis пишет: В поиске попалось https://kb.kopano.io/display/WIKI/Importing+ICAL+.ics+files+into+Kopano тут https://curl.se/docs/manpage.html смотрим Спасибо. Завтра с утра попробую это

Петр: Dr. Oldwarez пишет: curl -k --user USERNAME:PASSWORD -X PUT -H "Content-Type: text/calendar; charset=utf-8" -d "$a" "https://owncloud.jujens.eu/remote.php/caldav/calendars/jujens/omis/<mon-fichier.ics>" То есть тут <mon-fichier.ics> - это не локальный сгенерированный файл, а элемент календаря в сети. Как в него занести данные из локальных полей, даже если они сгенерированы в ЛОКАЛЬНЫЙ ics файл? типа C:\MYCALPROG\TEMP\EXPORT.ICS Как его в календарь с помощью CURL забросить? Ну там же комментарии есть Q: In your post new event example, what is $a? A: Good question. It should contain the data you want to post, ie the content of you local ics file.

Dr. Oldwarez: Dr. Oldwarez пишет: SergKis пишет:  цитата: В поиске попалось https://kb.kopano.io/display/WIKI/Importing+ICAL+.ics+files+into+Kopano тут https://curl.se/docs/manpage.html смотрим И сделал... [pre2]curl -k --user USERNAME:PASSWORD -T C:\MINIGUI\PROGDIR\TEMPDIR\List.ics https://webmail.abcdef.com/rpc.php/calendars/aaaaa@abcdef.com/calendar~GhGVum1xWexaffEfhiVkNN7/[/pre2] Спасибо. Завтра с утра попробую это И получил [pre2]<?xml version="1.0" encoding="utf-8"?> <d:error xmlns:d="DAV:" xmlns:s="http://sabredav.org/ns"> <s:exception>Sabre\DAV\Exception\BadRequest</s:exception> <s:message>Every VEVENT in this object must have identical UIDs</s:message> <s:sabredav-version>1.8.12</s:sabredav-version> </d:error>[/pre2] Что это за identical UIDs?

Петр: Dr. Oldwarez пишет: Что это за identical UIDs? Что-то типа этого BEGIN:VEVENT UID:19970901T130000Z-123402@example.com DTSTAMP:19970901T130000Z DTSTART:19970401T163000Z Если вы обновляете события, то как их сервер находит? Правильно, с помощью UIDs

Dr. Oldwarez: Петр пишет: Петр пишет: Что-то типа этого BEGIN:VEVENT UID:19970901T130000Z-123402@example.com DTSTAMP:19970901T130000Z DTSTART:19970401T163000Z Если вы обновляете события, то как их сервер находит? Правильно, с помощью UIDs Знаю. Но я не хочу обновлять, хочу писать новые события. Тогда вообще лучше эти UIDы упразднить? Или как сделать, чтобы оно не искало события, а тупо писало их поверх существующих?

Петр: Dr. Oldwarez пишет: curl -k --user USERNAME:PASSWORD C:\MINIGUI\PROGDIR\TEMPDIR\List.ics https://webmail.abcdef.com/rpc.php/calendars/aaaaa]https://webmail.abcdef.com/rpc.php/calendars/aaaaa@abcdef.com/calendar~GhGVum1xWexaffEfhiVkNN7/ И запрос какой-то подозрительный, ни -X, ни -T, ни -d, ни --config..

Петр: Dr. Oldwarez пишет: Знаю. Но я не хочу обновлять, хочу писать новые По логике, вы не должны указывать UID, тогда сервер сгенерирует новый VEVENT и UID для него. Тогда вообще лучше эти UIDы упразднить? Или как сделать, чтобы оно не искало события, а тупо писало их поверх существующих? Это выше ваших сил. К счастью у разработчиков другое мнение.

Dr. Oldwarez: Петр пишет: Dr. Oldwarez пишет:  цитата: Знаю. Но я не хочу обновлять, хочу писать новые По логике, вы не должны указывать UID, тогда сервер сгенерирует новый VEVENT и UID для него.  цитата: Тогда вообще лучше эти UIDы упразднить? Или как сделать, чтобы оно не искало события, а тупо писало их поверх существующих? Это выше ваших сил. К счастью у разработчиков другое мнение. Выкинул UIDы из ICS-файла и получил [pre2]Every VEVENT component must have an UID[/pre2]

Dr. Oldwarez: Петр пишет: И запрос какой-то подозрительный, ни -X, ни -T, ни -d, ни --config.. -Т есть [pre2]curl -k --user USERNAME:PASSWORD -T C:\MINIGUI\MYPROG\TEMP\Terminliste.ics https://webmail.kleeblatt.com/rpc.php/calendars/USERNAME/calendar~GhGVum1xWexaffEfhiVkNN7/[/pre2]

Петр: Значит начнем с начала. Dr. Oldwarez пишет: Но как реализовать подключение к облачному сервису в Harbour/Minigui? Возможно ли это вообще? Возможно, но для этого нужно знать, что мы можем (и как) использовать из функционала Harbour и к чему нужно подключаться: какой сервер, протокол, версия, реализация некоторых моментов. С первым частично плохо. Как дела со вторым у топикстартера, для меня лично непонятно. Обратите внимание на посты №№257, 282 Dr. Oldwarez пишет: <?xml version="1.0" encoding="utf-8"?> <d:error xmlns:d="DAV:" xmlns:s="http://sabredav.org/ns"> <s:exception>Sabre\DAV\Exception\BadRequest</s:exception> <s:message>Every VEVENT in this object must have identical UIDs</s:message> <s:sabredav-version>1.8.12</s:sabredav-version> </d:error> Простой поиск быстро привод к Building a CalDAV client This document is a general howto on how to build a CalDAV client. The document is language-agnostic Совет: научились работать с curl, берите документацию и составляйте запросы. Есть вопросы как то или другое реализовать в Harbour - задавайте здесь.

Dr. Oldwarez: Петр пишет: Возможно, но для этого нужно знать, что мы можем (и как) использовать из функционала Harbour и к чему нужно подключаться: какой сервер, протокол, версия, реализация некоторых моментов. С первым частично плохо. Как дела со вторым у топикстартера, для меня лично непонятно. Ага, нет документации, не посмотрел, вот "частично плохо". Петр пишет: Совет: научились работать с curl, берите документацию и составляйте запросы. Есть вопросы как то или другое реализовать в Harbour - задавайте здесь. Так я уже подключал всё к CURL, считывал оттуда данные. И уже сохранил эти данные в DBF-формате. Осталось ТОЛЬКО ОДНО - забрасывание ics в календарь. И всё, прогу уже можно сдавать. Проблема, конкретно, не в программе, а в календаре. Установить его на генерацию UIDов. Он же принимал файлы без UIDов в ручном режиме

Петр: Dr. Oldwarez пишет: Установить его на генерацию UIDов. Он же принимал файлы без UIDов в ручном режиме Без комментариев. Вам же результат нужен, а не.. Найдите online uuid generator например Сгенерируйте uuid, загрузите себе в базу и пользуйтесь.

Dr. Oldwarez: Петр пишет: Без комментариев. Вам же результат нужен, а не.. Найдите online uuid generator например Сгенерируйте uuid, загрузите себе в базу и пользуйтесь. В смысле, загрузить вот ЭТО 2f4f6320-8fcc-11eb-8dcd-0242ac130003 в регистр и присваивать ВСЕМ строкам? Или для каждой строки новый генерить, но тут нужна уже встроенная функция.

Петр: Dr. Oldwarez пишет: В смысле, загрузить вот ЭТО Это от сайта вам подарок. А ниже вы можете указать количество и нажать загрузить в файл, выбрав 1 или 4 версии генератора. Оффлайн можете подключить библиотеку hbwin и использовать win_UuidCreateString LOCAL nRPCStatus ? win_UuidCreateString( @nRPCStatus ) ? nRPCStatus

Петр: Петр пишет: А ниже вы можете указать количество и нажать загрузить в файл, выбрав 1 или 4 версии генератора. А еще вы можете пользоваться API сайта и загрузить UUID с помощью CURL curl.exe -ouuid4.txt -k -X GET -H"text/plain; charset=utf-8" https://www.uuidgenerator.net/api/version4/500 или curl.exe -ouuid1.txt -k -X GET -H"text/plain; charset=utf-8" https://www.uuidgenerator.net/api/version1 PS. "text/plain; charset=utf-8" конечно же лучше заменить на "Content-Type: text/plain; charset=utf-8"

Dr. Oldwarez: Петр пишет: Оффлайн можете подключить библиотеку hbwin и использовать win_UuidCreateString LOCAL nRPCStatus ? win_UuidCreateString( @nRPCStatus ) ? nRPCStatus Подключил и сделал. То же самое [pre2] <?xml version="1.0" encoding="utf-8"?> <d:error xmlns:d="DAV:" xmlns:s="http://sabredav.org/ns"> <s:exception>Sabre\DAV\Exception\BadRequest</s:exception> <s:message>Every VEVENT in this object must have identical UIDs</s:message> <s:sabredav-version>1.8.12</s:sabredav-version> </d:error> [/pre2] Но UIDы в файле выглядят по-другому [pre2] BEGIN:VEVENT UID:89dbeac3-50de-4138-915a-1836802d0c9a DTSTAMP:20210328T211200Z DTSTART:20210331T090000Z DTEND:20210331T100000Z SUMMARY:abcd DESCRIPTION:qwerty LOCATION:Utopia END:VEVENT BEGIN:VEVENT UID:33892830-c61d-4279-91e8-3c69e9e13dd5 DTSTAMP:20210328T211200Z DTSTART:20210401T073000Z DTEND:20210401T161500Z SUMMARY:IT DONE DESCRIPTION:Blahblahblah LOCATION:Nowhere END:VEVENT [/pre2]



полная версия страницы