Автор | Сообщение |
|
| постоянный участник
|
Пост 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: 3623
Зарегистрирован: 17.02.12
|
|
Отправлено: 19.03.21 23:29. Заголовок: Dr. Oldwarez пишет Т..
Dr. Oldwarez пишет цитата: | Теперь, как, собственно говоря, войти в календарь и просмотреть его содержимое? |
| цитата: | <d:multistatus xmlns:d="DAV:" xmlns:s="http://sabredav.org/ns" xmlns:cal="urn:ietf:params:xml:ns:caldav" xmlns:cs="http://calendarserver.org/ns/" xmlns:card="urn:ietf:params:xml:ns:carddav"> |
| Похожее видел в той статье <?xml version="1.0"?> <d:multistatus xmlns:d="DAV:" xmlns:s="https://sabredav.org/ns" xmlns:cal="urn:ietf:params:xml:ns:caldav" xmlns:cs="https://calendarserver.org/ns/" xmlns:card="urn:ietf:params:xml:ns:carddav"> ... Но у нас также есть еще одна интересная информация, возвращенная в теле запроса, а именно другая коллекция, которую мы можем изучить: /calendars/user@demo.atmail.com/ Мы будем выполнять рекурсию, насколько это возможно, с глубиной, установленной на бесконечность, но передаем некоторые данные запроса, чтобы указать, что нас интересуют только объекты календаря, и чтобы вернуть только URL-адрес, тип ресурса и отображаемое имя коллекции: $ curl --user "user@demo.atmail.com:ThePassword" -sD /dev/stderr -H "Content-Type: application/xml" -X PROPFIND -H "Depth: infinity" --data '<d:propfind xmlns:d="DAV:" xmlns:cs="https://calendarserver.org/ns/"><d:prop><d:resourcetype /><d:displayname /></d:prop></d:propfind>' https://demo-server.atmail.com:8443/calendars/user@demo.atmail.com/ | xmllint -format - ... и т.д. по статье, наверно, так
|
|
|
|
| постоянный участник
|
Пост N: 259
Зарегистрирован: 27.07.08
|
|
Отправлено: 19.03.21 23:43. Заголовок: Петр пишет: цитат..
Петр пишет: цитата: | цитата: Вроде что-то получилось curl -k -o test.xml --user USERNAME:PASSWORD -X PROPFIND "https://webmail.kleeblatt.com/rpc.php/principals/illya@kleeblatt.com/" Куда этот url ссылается? Эту часть почему отбросили /calendar~GhGVum1xWexaffEfhiVkNN7 |
| Добавил потерянную часть. И вот <?xml version="1.0" encoding="utf-8"?> <d:multistatus xmlns:d="DAV:" xmlns:s="http://sabredav.org/ns" xmlns:cal="urn:ietf:params:xml:ns:caldav" xmlns:cs="http://calendarserver.org/ns/" xmlns:card="urn:ietf:params:xml:ns:carddav"><d:response> <d:href>/rpc.php/calendars/illya@kleeblatt.com/calendar~GhGVum1xWexaffEfhiVkNN7/</d:href> <d:propstat><d:prop><d:resourcetype><d:collection/><cal:calendar/></d:resourcetype></d:prop> <d:status>HTTP/1.1 200 OK</d:status></d:propstat></d:response><d:response><d:href>/rpc.php/calendars/illya@kleeblatt.com/calendar~GhGVum1xWexaffEfhiVkNN7/w7klsLDepGCBYAA7Gmr4GIe.ics</d:href> <d:propstat><d:prop><d:getlastmodified>Sat, 13 Mar 2021 16:58:11 GMT</d:getlastmodified> <d:getcontentlength>500</d:getcontentlength><d:resourcetype/><d:getetag>"bb0f09c6bf34469cad5f872725ed93b9"</d:getetag> <d:getcontenttype>text/calendar; charset=utf-8</d:getcontenttype></d:prop><d:status>HTTP/1.1 200 OK</d:status> </d:propstat></d:response> <d:response><d:href>/rpc.php/calendars/illya@kleeblatt.com/calendar~GhGVum1xWexaffEfhiVkNN7/8gpZuoZBJQDnLlr-66brhHG.ics</d:href> <d:propstat><d:prop><d:getlastmodified>Thu, 04 Mar 2021 16:51:14 GMT</d:getlastmodified><d:getcontentlength>515</d:getcontentlength><d:resourcetype/> <d:getetag>"c1daa4a100ad72550dc468e539047aac"</d:getetag><d:getcontenttype>text/calendar; charset=utf-8</d:getcontenttype></d:prop> <d:status>HTTP/1.1 200 OK</d:status></d:propstat></d:response><d:response> <d:href>/rpc.php/calendars/illya@kleeblatt.com/calendar~GhGVum1xWexaffEfhiVkNN7/VM3wwLrVEm3Zwn-UkKAzXra.ics</d:href> <d:propstat><d:prop><d:getlastmodified>Thu, 04 Mar 2021 16:51:33 GMT</d:getlastmodified><d:getcontentlength>577</d:getcontentlength> <d:resourcetype/><d:getetag>"da02d9cfbc83085498615e55e87d25ea"</d:getetag><d:getcontenttype>text/calendar; charset=utf-8</d:getcontenttype></d:prop><d:status>HTTP/1.1 200 OK</d:status></d:propstat></d:response> <d:response><d:href>/rpc.php/calendars/illya@kleeblatt.com/calendar~GhGVum1xWexaffEfhiVkNN7/e5aab12a-1a2a-4309-96d4-cccb1b67d9ba.ics</d:href> <d:propstat><d:prop><d:getlastmodified>Mon, 08 Mar 2021 06:59:00 GMT</d:getlastmodified><d:getcontentlength>659</d:getcontentlength> <d:resourcetype/><d:getetag>"ff0f3e0392c3a16579e8b87442f60ff4"</d:getetag> <d:getcontenttype>text/calendar; charset=utf-8</d:getcontenttype></d:prop><d:status>HTTP/1.1 200 OK</d:status></d:propstat></d:response> <d:response><d:href>/rpc.php/calendars/illya@kleeblatt.com/calendar~GhGVum1xWexaffEfhiVkNN7/seukIp8ajv0rOXXx8IG4Q9j.ics</d:href><d:propstat> <d:prop><d:getlastmodified>Mon, 15 Mar 2021 12:56:41 GMT</d:getlastmodified><d:getcontentlength>546</d:getcontentlength><d:resourcetype/> <d:getetag>"fa79fe0b28dea03c0db457af39980eae"</d:getetag><d:getcontenttype>text/calendar; charset=utf-8</d:getcontenttype></d:prop> <d:status>HTTP/1.1 200 OK</d:status></d:propstat></d:response><d:response> <d:href>/rpc.php/calendars/illya@kleeblatt.com/calendar~GhGVum1xWexaffEfhiVkNN7/83sEK6nFBn4-TQ1XcZoPvWz.ics</d:href><d:propstat><d:prop> <d:getlastmodified>Mon, 15 Mar 2021 12:52:23 GMT</d:getlastmodified><d:getcontentlength>526</d:getcontentlength><d:resourcetype/> <d:getetag>"11735b683c59f7e3c0a60842c1df4101"</d:getetag><d:getcontenttype>text/calendar; charset=utf-8</d:getcontenttype></d:prop> <d:status>HTTP/1.1 200 OK</d:status></d:propstat></d:response></d:multistatus>
|
|
|
|
| постоянный участник
|
Пост N: 1608
Зарегистрирован: 09.10.06
|
|
Отправлено: 20.03.21 00:02. Заголовок: Dr. Oldwarez пишет: ..
Dr. Oldwarez пишет: цитата: | Я так понял, это список ICS файлов. Теперь надо открывать каждый ICS по отдельности, чтобы получить записи календаря? |
| Наверное. Попробуйте стащить один и поработать с ним оффлайн.
|
|
|
|
| постоянный участник
|
Пост N: 3624
Зарегистрирован: 17.02.12
|
|
Отправлено: 20.03.21 00:18. Заголовок: Dr. Oldwarez пишет Д..
Dr. Oldwarez пишет цитата: | Добавил потерянную часть. И вот |
| Смотреть без переноса трудно, но похоже (по статье) это коллекция календарей, опять по статье след. шаг цитата: | Итак, заглянем внутрь одной из этих коллекций (календарей). Выберем календарь «Дни рождения» и посмотрим, что там: $ curl --user "user@demo.atmail.com:ThePassword" -sD /dev/stderr -H "Content-Type: application/xml" -X PROPFIND -H "Depth: infinity" https://demo-server.atmail.com:8443/calendars/user@demo.atmail.com/02f29dd9516f1f0c415527e0a60cb3f7/ | xmllint -format - ...ответ В данном случае это календарное событие, и мы можем сказать об этом через свойство: <d: getcontenttype> текст / календарь; charset = utf-8; компонент = vevent </ d: getcontenttype> Наконец, давайте извлечем это событие с помощью обычного старого HTTP GET и посмотрим, что у нас есть: curl --user "user@demo.atmail.com:ThePassword" -i -X GET https://demo-server.atmail.com:8443/calendars/user@demo.atmail.com/02f29dd9516f1f0c415527e0a60cb3f7/33992bd8-d3fe-4b07-baaf-c43d0042fae8.ics HTTP/1.1 200 OK Server: nginx/1.16.1 Date: Sat, 09 May 2020 05:28:59 GMT Content-Type: text/calendar; charset=utf-8; component=vevent Content-Length: 554 Connection: keep-alive Last-Modified: Sat, 09 May 2020 01:24:06 GMT ETag: "d34b216dac0dcf327a3cf2d79f95a226" X-Content-Type-Options: nosniff BEGIN:VCALENDAR VERSION:2.0 PRODID:-//apiserver//API Server DAV//EN BEGIN:VEVENT UID:33992bd8-d3fe-4b07-baaf-c43d0042fae8 DTSTART;VALUE=DATE:20200506 DTEND;VALUE=DATE:20200507 CREATED:20190124T104704Z DTSTAMP:20190128T234044Z LAST-MODIFIED;X-VOBJ-FLOATINGTIME-ALLOWED=TRUE:20200503T203005 RRULE:FREQ=YEARLY;INTERVAL=1;WKST=MO SEQUENCE:30 STATUS:CONFIRMED SUMMARY:Dad's Birthday TRANSP:OPAQUE BEGIN:VALARM ACKNOWLEDGED:20190128T234044Z ACTION:DISPLAY DESCRIPTION:Default Description TRIGGER:-P1D END:VALARM END:VEVENT END:VCALENDAR |
| по статье такие действия для извл. данных
|
|
|
|
| постоянный участник
|
Пост N: 1609
Зарегистрирован: 09.10.06
|
|
Отправлено: 20.03.21 00:34. Заголовок: SergKis пишет: Смот..
|
|
|
|
| постоянный участник
|
Пост N: 3625
Зарегистрирован: 17.02.12
|
|
Отправлено: 20.03.21 00:54. Заголовок: Петр пишет Code Beau..
Петр пишет Через эту штуку и надо сюда выкладывать, а то страницы расползлись по ширине хз как, центрованные цитаты вправо улетели далеко за пределы экрана, не говоря о самом тексте
|
|
|
|
| постоянный участник
|
Пост N: 1610
Зарегистрирован: 09.10.06
|
|
Отправлено: 20.03.21 10:01. Заголовок: Надеюсь топикстартер..
Надеюсь топикстартер (или модератор) пост №259 удалит, а №260 отформатирует как следует.
|
|
|
|
| постоянный участник
|
Пост N: 261
Зарегистрирован: 27.07.08
|
|
Отправлено: 20.03.21 21:14. Заголовок: Петр пишет: Отпр..
Петр пишет: цитата: | Отправлено: Сегодня 10:01. Заголовок: Надеюсь топикстартер.. - новое! Надеюсь топикстартер (или модератор) пост №259 удалит, а №260 отформатирует как следует. |
| Подформатировал пост 259. 260 удалил как дубликат. Извините за созданные проблемы - я просто не имею опыта с xml файлами
|
|
|
|
| постоянный участник
|
Пост N: 262
Зарегистрирован: 27.07.08
|
|
Отправлено: 21.03.21 09:56. Заголовок: SergKis пишет: Смот..
SergKis пишет: цитата: | Смотреть без переноса трудно, но похоже (по статье) это коллекция календарей, опять по статье след. шаг цитата: Итак, заглянем внутрь одной из этих коллекций (календарей). Выберем календарь «Дни рождения» и посмотрим, что там: $ curl --user "user@demo.atmail.com:ThePassword" -sD /dev/stderr -H "Content-Type: application/xml" -X PROPFIND -H "Depth: infinity" https://demo-server.atmail.com:8443/calendars/user@demo.atmail.com/02f29dd9516f1f0c415527e0a60cb3f7/ | xmllint -format - ...ответ В данном случае это календарное событие, и мы можем сказать об этом через свойство: <d: getcontenttype> текст / календарь; charset = utf-8; компонент = vevent </ d: getcontenttype> Наконец, давайте извлечем это событие с помощью обычного старого HTTP GET и посмотрим, что у нас есть: curl --user "user@demo.atmail.com:ThePassword" -i -X GET https://demo-server.atmail.com:8443/calendars/user@demo.atmail.com/02f29dd9516f1f0c415527e0a60cb3f7/33992bd8-d3fe-4b07-baaf-c43d0042fae8.ics HTTP/1.1 200 OK Server: nginx/1.16.1 Date: Sat, 09 May 2020 05:28:59 GMT Content-Type: text/calendar; charset=utf-8; component=vevent Content-Length: 554 Connection: keep-alive Last-Modified: Sat, 09 May 2020 01:24:06 GMT ETag: "d34b216dac0dcf327a3cf2d79f95a226" X-Content-Type-Options: nosniff BEGIN:VCALENDAR VERSION:2.0 PRODID:-//apiserver//API Server DAV//EN BEGIN:VEVENT UID:33992bd8-d3fe-4b07-baaf-c43d0042fae8 DTSTART;VALUE=DATE:20200506 DTEND;VALUE=DATE:20200507 CREATED:20190124T104704Z DTSTAMP:20190128T234044Z LAST-MODIFIED;X-VOBJ-FLOATINGTIME-ALLOWED=TRUE:20200503T203005 RRULE:FREQ=YEARLY;INTERVAL=1;WKST=MO SEQUENCE:30 STATUS:CONFIRMED SUMMARY:Dad's Birthday TRANSP:OPAQUE BEGIN:VALARM ACKNOWLEDGED:20190128T234044Z ACTION:DISPLAY DESCRIPTION:Default Description TRIGGER:-P1D END:VALARM END:VEVENT END:VCALENDAR по статье такие действия для извл. данных |
| Да, я понял. Но сначала нужно весь список ics-ов считать в массив внешним циклом, а потом каждый ics ещё просмотреть, чтобы получить из него данные календарей. Это очень много вызовов curl и автоматически созданных промежуточных файлов получается. Нельзя ли так, чтобы сразу подключение и считывание прямо программой, минуя многочисленные промежуточные стадии? И как в Harbour считывать данные из XML в массив?
|
|
|
|
| постоянный участник
|
Пост N: 1611
Зарегистрирован: 09.10.06
|
|
Отправлено: 21.03.21 12:01. Заголовок: Dr. Oldwarez пишет: ..
Dr. Oldwarez пишет: цитата: | Но мне бы всё-таки хотелось встроенную библиотеку для удобства дистрибуции. Изучить я смогу. Только дайте мне документацию, а то hbd я не знаю, чем прочесть. И несколько примеров. |
| Dr. Oldwarez пишет: цитата: | Нельзя ли так, чтобы сразу подключение и считывание прямо программой, минуя многочисленные промежуточные стадии? |
| Добейтесь конечного результата с curl, а тогда будете оптимизировать. Сейчас у вас нет ни знаний, ни умений на свои хотелки. Все придет, может быть, а может и не быть. К тому же инсталлятор весом меньше 1 Га в наше время моветон
|
|
|
|
| постоянный участник
|
Пост N: 1612
Зарегистрирован: 09.10.06
|
|
Отправлено: 21.03.21 12:15. Заголовок: Dr. Oldwarez пишет: ..
Dr. Oldwarez пишет: цитата: | И как в Harbour считывать данные из XML в массив? |
| Все просто - считываете данные из XML и добавляете в массив. В Harbour нет встроенных функций для роботы с XML, в отличии от того же json или cvs, ini. Значит у вас есть выбор 1) Можете просто разбирать строку с помощью строковых функций; 2) Можете использовать библиотеку hbexpat из contrib, примеры там же; 3) Можете использовать библиотеку hbmxml из contrib, примеры там же; 4) Можете использовать библиотеку hbxml из состава Minigui, пример SAMPLES\Advanced\XmlDemo и др; 5) Можете использовать стандартные технологии MS OLE и Msxml, пример SAMPLES\Advanced\GoogleCharts; и т.д. и т.п.
|
|
|
|
|
| постоянный участник
|
Пост N: 3627
Зарегистрирован: 17.02.12
|
|
Отправлено: 21.03.21 13:59. Заголовок: Петр пишет Можете пр..
Петр пишет цитата: | Можете просто разбирать строку с помощью строковых функций; |
| Простой пример выкусить из xml поста 259 LOCAL cXml := "_ics.xml" // файл с данными из поста 259 LOCAL cBuf := hb_memoread(cXml) LOCAL aBuf, nI IF CRLF $ cBuf ; cBuf := StrTran(cBuf, CRLF, "") ENDIF aBuf := hb_ATokens(cBuf, "<d:response><d:href>") ? aBuf FOR nI := 1 TO Len(aBuf) cBuf := aBuf[nI] ? nI, left(cBuf, AT("</", cBuf)-1) NEXT ... результат ARRAY[8] 1 '' 2 /rpc.php/calendars/illya@kleeblatt.com/calendar~GhGVum1xWexaffEfhiVkNN7/ 3 /rpc.php/calendars/illya@kleeblatt.com/calendar~GhGVum1xWexaffEfhiVkNN7/w7klsLDepGCBYAA7Gmr4GIe.ics 4 /rpc.php/calendars/illya@kleeblatt.com/calendar~GhGVum1xWexaffEfhiVkNN7/8gpZuoZBJQDnLlr-66brhHG.ics 5 /rpc.php/calendars/illya@kleeblatt.com/calendar~GhGVum1xWexaffEfhiVkNN7/VM3wwLrVEm3Zwn-UkKAzXra.ics 6 /rpc.php/calendars/illya@kleeblatt.com/calendar~GhGVum1xWexaffEfhiVkNN7/e5aab12a-1a2a-4309-96d4-cccb1b67d9ba.ics 7 /rpc.php/calendars/illya@kleeblatt.com/calendar~GhGVum1xWexaffEfhiVkNN7/seukIp8ajv0rOXXx8IG4Q9j.ics 8 /rpc.php/calendars/illya@kleeblatt.com/calendar~GhGVum1xWexaffEfhiVkNN7/83sEK6nFBn4-TQ1XcZoPvWz.ics
|
|
|
|
| постоянный участник
|
Пост N: 3628
Зарегистрирован: 17.02.12
|
|
Отправлено: 21.03.21 14:12. Заголовок: Dr. Oldwarez пишет Н..
Dr. Oldwarez пишет цитата: | Нельзя ли так, чтобы сразу подключение и считывание прямо программой, минуя многочисленные промежуточные стадии? |
| Если пройдете по статье еще раз, то увидите, что каждый вызов curl это запрос к серверу и обработка результата и снова запрос ..., т.е. и без curl будет точно такая же схема работы. Если оформите запрос в ф-ю (вызов curl и обработка результата) с возвратом результата, то если (может и не понадобится) потом надо будет переделаете на исп. lib
|
|
|
|
| постоянный участник
|
Пост N: 3629
Зарегистрирован: 17.02.12
|
|
Отправлено: 21.03.21 14:53. Заголовок: PS Давать календари ..
PS Давать календари надо будет в цивилизованном виде, т.е. таблица dbf\array - "список календарей" -> выбираем -> запрос[ы] curl к серверу -> ответ и таблица dbf\array - "события календаря" если работа online, при offline тот же путь выборки и куда то сохранить первичные запросы (потом обновлять, если ics меняли)
|
|
|
|
| постоянный участник
|
Пост N: 3630
Зарегистрирован: 17.02.12
|
|
Отправлено: 21.03.21 15:25. Заголовок: PS2 Чуть усложнил и ..
PS2 Чуть усложнил и получил таблицу календарей в массиве Скрытый текст
/* * MINIGUI - Harbour Win32 GUI library Demo */ #define _HMG_OUTLOG #include "hmg.ch" #define SHOW_TITLE "Read list ics calendar from xml" REQUEST HB_CODEPAGE_RU1251, HB_CODEPAGE_RU866 REQUEST HB_CODEPAGE_UTF8 REQUEST DBFCDX, DBFFPT REQUEST DBFNTX, DBFDBT //////////////////////////////////////////////////////////////////////////// FUNCTION Main() LOCAL cXml := "_ics.xml" LOCAL cBuf := hb_memoread(cXml) LOCAL aBuf, nI, cI, nK, cK, nN LOCAL aIcs := {} SET CODEPAGE TO RUSSIAN SET LANGUAGE TO RUSSIAN rddSetDefault( "DBFCDX" ) SET CENTURY ON SET DATE GERMAN SET DATE FORMAT "DD.MM.YY" SET DELETED OFF SET EXCLUSIVE ON SET EPOCH TO 2000 SET AUTOPEN ON SET EXACT ON SET SOFTSEEK ON SET NAVIGATION EXTENDED SET FONT TO "Arial", 11 SET OOP ON fErase(".\_MsgLog.txt") IF CRLF $ cBuf ; cBuf := StrTran(cBuf, CRLF, "") ENDIF aBuf := hb_ATokens(cBuf, "<d:response><d:href>") ? aBuf, "Адреса:" nN := 0 FOR nI := 1 TO Len(aBuf) cI := aBuf[nI] nK := AT("</", cI) cK := trim(left(cI, nK-1)) IF right(cK, 4) == ".ics" nN += 1 AAdd(aIcs, { cK, "", "ics "+hb_ntos(nN) }) ENDIF ? nI, cK NEXT ? aBuf := hb_ATokens(cBuf, "<d:propstat><d:prop><d:getlastmodified>") ? aBuf, "Модификация:" nN := 0 FOR nI := 1 TO Len(aBuf) cI := aBuf[nI] cK := "" IF ! "<?xml " $ cI nN += 1 nK := AT("</", cI) cK := left(cI, nK-1) aIcs[nN][2] := cK ENDIF ? nI, cK NEXT ? ? "ICS =", aIcs ?v aIcs ? RETURN NIL Результат ARRAY[8] Адреса: 1 '' 2 /rpc.php/calendars/illya@kleeblatt.com/calendar~GhGVum1xWexaffEfhiVkNN7/ 3 /rpc.php/calendars/illya@kleeblatt.com/calendar~GhGVum1xWexaffEfhiVkNN7/w7klsLDepGCBYAA7Gmr4GIe.ics 4 /rpc.php/calendars/illya@kleeblatt.com/calendar~GhGVum1xWexaffEfhiVkNN7/8gpZuoZBJQDnLlr-66brhHG.ics 5 /rpc.php/calendars/illya@kleeblatt.com/calendar~GhGVum1xWexaffEfhiVkNN7/VM3wwLrVEm3Zwn-UkKAzXra.ics 6 /rpc.php/calendars/illya@kleeblatt.com/calendar~GhGVum1xWexaffEfhiVkNN7/e5aab12a-1a2a-4309-96d4-cccb1b67d9ba.ics 7 /rpc.php/calendars/illya@kleeblatt.com/calendar~GhGVum1xWexaffEfhiVkNN7/seukIp8ajv0rOXXx8IG4Q9j.ics 8 /rpc.php/calendars/illya@kleeblatt.com/calendar~GhGVum1xWexaffEfhiVkNN7/83sEK6nFBn4-TQ1XcZoPvWz.ics ARRAY[7] Модификация: 1 '' 2 Sat, 13 Mar 2021 16:58:11 GMT 3 Thu, 04 Mar 2021 16:51:14 GMT 4 Thu, 04 Mar 2021 16:51:33 GMT 5 Mon, 08 Mar 2021 06:59:00 GMT 6 Mon, 15 Mar 2021 12:56:41 GMT 7 Mon, 15 Mar 2021 12:52:23 GMT ICS = ARRAY[6] 1 {"/rpc.php/calendars/illya@kleeblatt.com/calendar~GhGVum1xWexaffEfhiVkNN7/w7klsLDepGCBYAA7Gmr4GIe.ics", "Sat, 13 Mar 2021 16:58:11 GMT", "ics 1"} 2 {"/rpc.php/calendars/illya@kleeblatt.com/calendar~GhGVum1xWexaffEfhiVkNN7/8gpZuoZBJQDnLlr-66brhHG.ics", "Thu, 04 Mar 2021 16:51:14 GMT", "ics 2"} 3 {"/rpc.php/calendars/illya@kleeblatt.com/calendar~GhGVum1xWexaffEfhiVkNN7/VM3wwLrVEm3Zwn-UkKAzXra.ics", "Thu, 04 Mar 2021 16:51:33 GMT", "ics 3"} 4 {"/rpc.php/calendars/illya@kleeblatt.com/calendar~GhGVum1xWexaffEfhiVkNN7/e5aab12a-1a2a-4309-96d4-cccb1b67d9ba.ics", "Mon, 08 Mar 2021 06:59:00 GMT", "ics 4"} 5 {"/rpc.php/calendars/illya@kleeblatt.com/calendar~GhGVum1xWexaffEfhiVkNN7/seukIp8ajv0rOXXx8IG4Q9j.ics", "Mon, 15 Mar 2021 12:56:41 GMT", "ics 5"} 6 {"/rpc.php/calendars/illya@kleeblatt.com/calendar~GhGVum1xWexaffEfhiVkNN7/83sEK6nFBn4-TQ1XcZoPvWz.ics", "Mon, 15 Mar 2021 12:52:23 GMT", "ics 6"}
|
|
|
|
|
| постоянный участник
|
Пост N: 263
Зарегистрирован: 27.07.08
|
|
Отправлено: 21.03.21 15:30. Заголовок: SergKis пишет: Дава..
SergKis пишет: цитата: | Давать календари надо будет в цивилизованном виде, т.е. таблица dbf\array - "список календарей" -> выбираем -> запрос[ы] curl к серверу -> ответ и таблица dbf\array - "события календаря" если работа online, при offline тот же путь выборки и куда то сохранить первичные запросы (потом обновлять, если ics меняли) |
| Спасибо за помощь! Я уже понял, примерно, как это. Но вот вопрос: если календарь заполнен и в нём 500 событий, это что, надо 500 раз соединяться? Такого DDOSа не выдержат ни сеть, ни комп. Профильтровать их тоже не получится - пока не откроешь ICS, его параметры будут неизвестны.
|
|
|
|
| постоянный участник
|
Пост N: 3631
Зарегистрирован: 17.02.12
|
|
Отправлено: 21.03.21 15:43. Заголовок: Dr. Oldwarez пишет Т..
Dr. Oldwarez пишет цитата: | Такого DDOSа не выдержат ни сеть, ни комп. |
| Это не DDOS, а REST API спец. механизм для доступа и обмена данными, смело используйте цитата: | Профильтровать их тоже не получится - пока не откроешь ICS, его параметры будут неизвестны. |
| Если сохранять в dbf, то можно опираться на дату модификации сначала ics, потом события при изм. календаря Если нет команды получить все события, получаем по одному
|
|
|
|
| постоянный участник
|
Пост N: 3632
Зарегистрирован: 17.02.12
|
|
Отправлено: 21.03.21 15:59. Заголовок: Dr. Oldwarez пишет Н..
Dr. Oldwarez пишет цитата: | Но вот вопрос: если календарь заполнен и в нём 500 событий, это что, надо 500 раз соединяться? |
| Вы не сделали запроса к конкретному ics, после списка, по статье, я так понял, должны получить на календарь список всех событий с датой создания и модификации. Т.е. если уже в dbf занесли данные, то можно выбрать из списка только изменненные и по ним делать запрос для получения данных VEVENT и изменять dbf только по ним
|
|
|
|
| постоянный участник
|
Пост N: 264
Зарегистрирован: 27.07.08
|
|
Отправлено: 21.03.21 16:04. Заголовок: SergKis пишет: Если..
SergKis пишет: цитата: | Если нет команды получить все события, получаем по одному |
| А мне надо именно, что ВСЕ события получить. Дата модификации неинформативна. Не дата модификации мне нужна, а дата и время события. Это и есть первичный ключ в моём локальном календаре
|
|
|
|
| постоянный участник
|
Пост N: 1613
Зарегистрирован: 09.10.06
|
|
Отправлено: 21.03.21 16:08. Заголовок: Dr. Oldwarez пишет: ..
Dr. Oldwarez пишет: цитата: | А мне надо именно, что ВСЕ события получить. |
| Так втащите весь календарь на локальный комп (за один запрос), а потом синхронизируйте его с сервером Пример с GET делали или нет?
|
|
|
Ответов - 174
, стр:
1
2
3
4
5
6
7
8
9
All
[только новые]
|
|