1&1 Cosmo CalDAV przykładowa aplikacja

0

Witajcie. Jestem na praktykach i dostałem zadanie z którym nie mogę sobie poradzić. Otóż. Muszę użyć https://github.com/1and1/cosmo
Do zrobienia przykładowego projektu w którym użytkownik będzie mógł utworzyć kalendarz i ogólnie muszę napisać nowa bibliotekę która będzie ogarniała kalendarz i synchronizację z urządzeniami. Ale zadanie teraz mam następujące:

  1. utworzyć projekt przykładowy.
  2. Jako bazę użyć właśnie tego Cosmo 1&1
  3. Przykładowa aplikacja ma być w spring boot i vaadin

I teraz mam problem. NIGDY nie robiłem niczego z kalendarzami i żadnymi serwerami kalendarzy. Więc pierwsze co chciałbym to co to w ogóle jest ten cosmo najprościej jak się da? Jak w ogóle to ugryźć i zrozumieć? Naprawdę jestem w szoku zadaniami jakie tu dostaję (dla praktykanta w pierwszym miesiącu bez żadnego wcześniejszego doświadczenia)

0

Opiekuna tam nie ma żadnego?

0

Na tym polegają praktyki, że masz wynieść z nich jak najwięcej. Dobrze, że rzucili Cię na głęboką wodę, a nie każą konfigurować sprzęt 10 dni.
Nie wyrabiasz się w godzinach praktyk? Posiedź nad tym wieczorem. Im więcej zrobisz, tym bardziej to zaowocuje potem.
Masz problem? Podpytaj opiekuna, ale niech to będzie sensowny problem a nie pytanie w stylu dlaczego tu w kodzie używa się equals a nie ==.

Nie poddawaj się, początki zawsze są trudne.

0

Po 2dniowej walce udalo mi sie ogarnac ten CalDAV, ale wg. opisu dostepnego tutaj: https://github.com/1and1/cosmo ustawienie nowego kalendarza odbywa sie przez

curl -X"MKCALENDAR" -H"Content-Type:application/xml" -u${your_email}:${your_passwd} http://localhost:8080/cosmo/dav/${your_email}/calendar

i to dziala, kalendarz sie dodaje i moge go importowac do np Thunderbird'a i synchronizacja dziala jak nalezy, ale w dokumentacji znalazlem:

https://tools.ietf.org/html/rfc4791#page-24

i tu moje pytanie, jak tego requesta wywolac przez curl w javie, probuje budowac te curl ale za nic nie idzie.
Chce robic to przez tego requesta, bo musze tez dodac event przy tworzeniu kalendarza a eventy tez sie dodaje tymi requestami. Jak powinien poprawnie wygladac curl takiego requesta (https://tools.ietf.org/html/rfc4791#page-24)?

Moje pierwsze proby:

curl -XPUT -H 'Content-Type: application/xml' -H 'charset: utf-8' -H 'Content-Length: xxxx' -d '
   <C:mkcalendar xmlns:D="DAV:"
                 xmlns:C="urn:ietf:params:xml:ns:caldav">
     <D:set>
       <D:prop>
         <D:displayname>Lisa's Events</D:displayname>
         <C:calendar-description xml:lang="en"
   >Calendar restricted to events.</C:calendar-description>
         <C:supported-calendar-component-set>
           <C:comp name="VEVENT"/>
         </C:supported-calendar-component-set>
         <C:calendar-timezone><![CDATA[BEGIN:VCALENDAR
   PRODID:-//Example Corp.//CalDAV Client//EN
   VERSION:2.0
   BEGIN:VTIMEZONE
   TZID:US-Eastern
   LAST-MODIFIED:19870101T000000Z
   BEGIN:STANDARD
   DTSTART:19671029T020000
   RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10
   TZOFFSETFROM:-0400
   TZOFFSETTO:-0500
   TZNAME:Eastern Standard Time (US & Canada)
   END:STANDARD
   BEGIN:DAYLIGHT
   DTSTART:19870405T020000
   RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4
   TZOFFSETFROM:-0500
   TZOFFSETTO:-0400
   TZNAME:Eastern Daylight Time (US & Canada)
   END:DAYLIGHT
   END:VTIMEZONE
   END:VCALENDAR
   ]]></C:calendar-timezone>
       </D:prop>
     </D:set>
   </C:mkcalendar>' http://localhost:8080/cosmo/dav/

1

„ jak tego requesta wywolac przez curl w javie” - albo przez curl, albo w javie.

0

Zle sie wyrazilem, chcialbym tego requesta (https://greenbytes.de/tech/webdav/rfc4791.html#n-creating-calendar-object-resources):

PUT /home/lisa/calendars/events/qwue23489.ics HTTP/1.1
If-None-Match: *
Host: cal.example.com
Content-Type: text/calendar
Content-Length: xxxx

BEGIN:VCALENDAR
VERSION:2.0
PRODID:-//Example Corp.//CalDAV Client//EN
BEGIN:VEVENT
UID:[email protected]
DTSTAMP:20060712T182145Z
DTSTART:20060714T170000Z
DTEND:20060715T040000Z
SUMMARY:Bastille Day Party
END:VEVENT
END:VCALENDAR

wywolac jako curl w apliakcji napisanej w javie (np. Process process = Runtime.getRuntime().exec(request_w_curl))

curl wyglada nastepujaca:

String curl = "curl -X PUT -H 'Content-Type: text/calendar' -H charset: utf-8 -H 'Content-Length: xxxx' [email protected]: http://localhost:8080/cosmo/dav/[email protected]/qwerty123.ics " +
                "-d 'BEGIN:VCALENDAR" +
                "PRODID:-//Mozilla.org/NONSGML Mozilla Calendar V1.1//EN" +
                "VERSION:2.0" +
                "BEGIN:VTIMEZONE" +
                "TZID:Europe/Berlin" +
                "BEGIN:DAYLIGHT" +
                "TZOFFSETFROM:+0100" +
                "TZOFFSETTO:+0200" +
                "TZNAME:CEST" +
                "DTSTART:19700329T020000" +
                "RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU" +
                "END:DAYLIGHT" +
                "BEGIN:STANDARD" +
                "TZOFFSETFROM:+0200" +
                "TZOFFSETTO:+0100" +
                "TZNAME:CET" +
                "DTSTART:19701025T030000" +
                "RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU" +
                "END:STANDARD" +
                "END:VTIMEZONE" +
                "BEGIN:VEVENT" +
                "CREATED:20191018T132601Z" +
                "LAST-MODIFIED:20191018T132602Z" +
                "DTSTAMP:20191018T132602Z" +
                "UID:d2b3c24b-969f-49fa-a721-0036e8c4bfeb" +
                "SUMMARY:Neuer Termin" +
                "DTSTART;TZID=Europe/Berlin:20191018T163000" +
                "DTEND;TZID=Europe/Berlin:20191018T173000" +
                "TRANSP:OPAQUE" +
                "END:VEVENT" +
                "END:VCALENDAR'";

i nic z tego nie wynika niestety

String command2 = "curl -X PUT -H 'Content-Type: text/calendar' -H charset: utf-8 -H 'Content-Length: xxxx' HTTP/1.1 [email protected]: http://localhost:8080/cosmo/dav/[email protected]/calendar/sdvq345.ics " +
                "-d 'BEGIN:VCALENDAR" +
                "BEGIN:VEVENT" +
                "UID:d2b3c24b-969f-49fa-a721-0036e8c4bfeb" +
                "SUMMARY:Test Event" +
                "DTSTART:20191018T080000Z" +
                "DTEND:20191018T170000Z" +
                "END:VEVENT" +
                "END:VCALENDAR'";

to tez nie dziala

1

Ale dlaczego chcesz tak to robić, zamiast po ludzku użyć klienta HTTP (np. OkHttp czy Apache)?

1 użytkowników online, w tym zalogowanych: 0, gości: 1