Автор | Сообщение |
|
| постоянный участник
|
Пост N: 253
Зарегистрирован: 27.07.08
|
|
Отправлено: 16.03.21 21:55. Заголовок: Облачные сервисы (WebDAV, CalDAV &Co)
После некоторого разбирательства с прогой удалось организовать импорт из ICAL-файлов и экспорт в оные. Но тут шеф захотел, чтобы был прямой контакт с CalDav через интернет. Я знаю, что на питоне такое возможно. На дельфине и даже Xojo (RealBasic) тоже - через спецбиблиотеку. Но как реализовать подключение к облачному сервису в Harbour/Minigui? Возможно ли это вообще?
|
|
|
Ответов - 174
, стр:
1
2
3
4
5
6
7
8
9
All
[только новые]
|
|
|
| постоянный участник
|
Пост N: 279
Зарегистрирован: 27.07.08
|
|
Отправлено: 27.03.21 23:05. Заголовок: SergKis пишет: Это ..
SergKis пишет: цитата: | Это событие календаря, 1 запись в базе (вроде, был еще параметр выполнение события дата-время, или ошибаюсь) календарей у вас 6 штук. Это личные календари событий или предприятия\организации. Объем календаря (в событиях-записях). И чего вы от них хотите ? Просто показ в табл. виде отчетов ? Цель ? |
| Да, просто занесения в DBF в целях синхронизации. 99% времени это работает в локальном режиме. А также обратно занесение полей из DBF в календарь. С последним некоторые проблемы. 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 забросить?
|
|
|
|
| постоянный участник
|
Пост N: 3660
Зарегистрирован: 17.02.12
|
|
Отправлено: 27.03.21 23:07. Заголовок: PS2 Есть еще STATUS:..
PS2 Есть еще STATUS:... нашел несколько значений STATUS:CONFIRMED STATUS:CANCLED STATUS:TENTATIVE возможно надо учесть ?
|
|
|
|
| постоянный участник
|
Пост N: 280
Зарегистрирован: 27.07.08
|
|
Отправлено: 27.03.21 23:20. Заголовок: SergKis пишет: PS2 ..
SergKis пишет: цитата: | PS2 Есть еще STATUS:... нашел несколько значений STATUS:CONFIRMED STATUS:CANCLED STATUS:TENTATIVE возможно надо учесть ? |
| STATUS:CONFIRMED Но и без него можно обойтись Я уже сделал считывание из календаря в массив, который потом можно запихнуть в таблицу. Теперь моя последняя задача - запихивание данных из таблицы в календарь. После чего можно и отдохнуть.
|
|
|
|
| постоянный участник
|
Пост N: 3661
Зарегистрирован: 17.02.12
|
|
Отправлено: 27.03.21 23:47. Заголовок: Dr. Oldwarez пишет Т..
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. ... |
|
|
|
|
|
| постоянный участник
|
Пост N: 281
Зарегистрирован: 27.07.08
|
|
Отправлено: 28.03.21 00:00. Заголовок: SergKis пишет: В по..
SergKis пишет: Спасибо. Завтра с утра попробую это
|
|
|
|
| постоянный участник
|
Пост N: 1643
Зарегистрирован: 09.10.06
|
|
Отправлено: 28.03.21 00:51. Заголовок: Dr. Oldwarez пишет: ..
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.
|
|
|
|
| постоянный участник
|
Пост N: 282
Зарегистрирован: 27.07.08
|
|
Отправлено: 28.03.21 13:27. Заголовок: Dr. Oldwarez пишет: ..
Dr. Oldwarez пишет: И сделал... curl -k --user USERNAME:PASSWORD -T C:\MINIGUI\PROGDIR\TEMPDIR\List.ics https://webmail.abcdef.com/rpc.php/calendars/aaaaa@abcdef.com/calendar~GhGVum1xWexaffEfhiVkNN7/ Спасибо. Завтра с утра попробую это И получил <?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> Что это за identical UIDs?
|
|
|
|
| постоянный участник
|
Пост N: 1644
Зарегистрирован: 09.10.06
|
|
Отправлено: 28.03.21 13:52. Заголовок: Dr. Oldwarez пишет: ..
Dr. Oldwarez пишет: цитата: | Что это за identical UIDs? |
| Что-то типа этого BEGIN:VEVENT UID:19970901T130000Z-123402@example.com DTSTAMP:19970901T130000Z DTSTART:19970401T163000Z Если вы обновляете события, то как их сервер находит? Правильно, с помощью UIDs
|
|
|
|
| постоянный участник
|
Пост N: 283
Зарегистрирован: 27.07.08
|
|
Отправлено: 28.03.21 14:07. Заголовок: Петр пишет: Петр п..
Петр пишет: [quote]` Петр пишет: цитата: | Что-то типа этого BEGIN:VEVENT UID:19970901T130000Z-123402@example.com DTSTAMP:19970901T130000Z DTSTART:19970401T163000Z Если вы обновляете события, то как их сервер находит? Правильно, с помощью UIDs |
| Знаю. Но я не хочу обновлять, хочу писать новые события. Тогда вообще лучше эти UIDы упразднить? Или как сделать, чтобы оно не искало события, а тупо писало их поверх существующих?
|
|
|
|
| постоянный участник
|
Пост N: 1645
Зарегистрирован: 09.10.06
|
|
Отправлено: 28.03.21 14:17. Заголовок: Dr. Oldwarez пишет: ..
Dr. Oldwarez пишет: И запрос какой-то подозрительный, ни -X, ни -T, ни -d, ни --config..
|
|
|
|
| постоянный участник
|
Пост N: 1646
Зарегистрирован: 09.10.06
|
|
Отправлено: 28.03.21 14:22. Заголовок: Dr. Oldwarez пишет: ..
Dr. Oldwarez пишет: цитата: | Знаю. Но я не хочу обновлять, хочу писать новые |
| По логике, вы не должны указывать UID, тогда сервер сгенерирует новый VEVENT и UID для него. цитата: | Тогда вообще лучше эти UIDы упразднить? Или как сделать, чтобы оно не искало события, а тупо писало их поверх существующих? |
| Это выше ваших сил. К счастью у разработчиков другое мнение.
|
|
|
|
|
| постоянный участник
|
Пост N: 284
Зарегистрирован: 27.07.08
|
|
Отправлено: 28.03.21 14:35. Заголовок: Петр пишет: Dr. Ol..
Петр пишет: цитата: | Dr. Oldwarez пишет: цитата: Знаю. Но я не хочу обновлять, хочу писать новые По логике, вы не должны указывать UID, тогда сервер сгенерирует новый VEVENT и UID для него. цитата: Тогда вообще лучше эти UIDы упразднить? Или как сделать, чтобы оно не искало события, а тупо писало их поверх существующих? Это выше ваших сил. К счастью у разработчиков другое мнение. |
| Выкинул UIDы из ICS-файла и получил Every VEVENT component must have an UID
|
|
|
|
| постоянный участник
|
Пост N: 285
Зарегистрирован: 27.07.08
|
|
Отправлено: 28.03.21 14:59. Заголовок: Петр пишет: И запро..
Петр пишет: цитата: | И запрос какой-то подозрительный, ни -X, ни -T, ни -d, ни --config.. |
| -Т есть curl -k --user USERNAME:PASSWORD -T C:\MINIGUI\MYPROG\TEMP\Terminliste.ics https://webmail.kleeblatt.com/rpc.php/calendars/USERNAME/calendar~GhGVum1xWexaffEfhiVkNN7/
|
|
|
|
| постоянный участник
|
Пост N: 1647
Зарегистрирован: 09.10.06
|
|
Отправлено: 28.03.21 15:16. Заголовок: Значит начнем с нача..
Значит начнем с начала. 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 - задавайте здесь.
|
|
|
|
| постоянный участник
|
Пост N: 286
Зарегистрирован: 27.07.08
|
|
Отправлено: 28.03.21 15:51. Заголовок: Петр пишет: Возможн..
Петр пишет: цитата: | Возможно, но для этого нужно знать, что мы можем (и как) использовать из функционала Harbour и к чему нужно подключаться: какой сервер, протокол, версия, реализация некоторых моментов. С первым частично плохо. Как дела со вторым у топикстартера, для меня лично непонятно. |
| Ага, нет документации, не посмотрел, вот "частично плохо". Петр пишет: цитата: | Совет: научились работать с curl, берите документацию и составляйте запросы. Есть вопросы как то или другое реализовать в Harbour - задавайте здесь. |
| Так я уже подключал всё к CURL, считывал оттуда данные. И уже сохранил эти данные в DBF-формате. Осталось ТОЛЬКО ОДНО - забрасывание ics в календарь. И всё, прогу уже можно сдавать. Проблема, конкретно, не в программе, а в календаре. Установить его на генерацию UIDов. Он же принимал файлы без UIDов в ручном режиме
|
|
|
|
| постоянный участник
|
Пост N: 1648
Зарегистрирован: 09.10.06
|
|
Отправлено: 28.03.21 16:12. Заголовок: Dr. Oldwarez пишет: ..
Dr. Oldwarez пишет: цитата: | Установить его на генерацию UIDов. Он же принимал файлы без UIDов в ручном режиме |
| Без комментариев. Вам же результат нужен, а не.. Найдите online uuid generator например Сгенерируйте uuid, загрузите себе в базу и пользуйтесь.
|
|
|
|
| постоянный участник
|
Пост N: 287
Зарегистрирован: 27.07.08
|
|
Отправлено: 28.03.21 16:49. Заголовок: Петр пишет: Без ком..
Петр пишет: цитата: | Без комментариев. Вам же результат нужен, а не.. Найдите online uuid generator например Сгенерируйте uuid, загрузите себе в базу и пользуйтесь. |
| В смысле, загрузить вот ЭТО 2f4f6320-8fcc-11eb-8dcd-0242ac130003 в регистр и присваивать ВСЕМ строкам? Или для каждой строки новый генерить, но тут нужна уже встроенная функция.
|
|
|
|
| постоянный участник
|
Пост N: 1649
Зарегистрирован: 09.10.06
|
|
Отправлено: 28.03.21 17:04. Заголовок: Dr. Oldwarez пишет: ..
Dr. Oldwarez пишет: цитата: | В смысле, загрузить вот ЭТО |
| Это от сайта вам подарок. А ниже вы можете указать количество и нажать загрузить в файл, выбрав 1 или 4 версии генератора. Оффлайн можете подключить библиотеку hbwin и использовать win_UuidCreateString LOCAL nRPCStatus ? win_UuidCreateString( @nRPCStatus ) ? nRPCStatus
|
|
|
|
| постоянный участник
|
Пост N: 1650
Зарегистрирован: 09.10.06
|
|
Отправлено: 28.03.21 17:51. Заголовок: Петр пишет: А ниже ..
Петр пишет: цитата: | А ниже вы можете указать количество и нажать загрузить в файл, выбрав 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"
|
|
|
|
| постоянный участник
|
Пост N: 288
Зарегистрирован: 27.07.08
|
|
Отправлено: 28.03.21 21:20. Заголовок: Петр пишет: Оффлайн..
Петр пишет: цитата: | Оффлайн можете подключить библиотеку hbwin и использовать win_UuidCreateString LOCAL nRPCStatus ? win_UuidCreateString( @nRPCStatus ) ? nRPCStatus |
| Подключил и сделал. То же самое <?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> Но UIDы в файле выглядят по-другому 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
|
|
|
Ответов - 174
, стр:
1
2
3
4
5
6
7
8
9
All
[только новые]
|
|