use strict; use HTTP::DAV; use Data::Dumper; my $dav = HTTP::DAV->new(-headers=>{'Content-Type' => 'text/calendar'}); $dav->DebugLevel(3); $dav->credentials("username", "password", 'http://10.10.10.250/davical/caldav.php/travis/test2/') or die("Can't authenticate: " . $dav->message . "\n"); $dav->open('http://10.10.10.250/davical/caldav.php/travis/test2/') or die("Couldn't open URL: " .$dav->message . "\n"); my $resource = $dav->new_resource('http://10.10.10.250/davical/caldav.php/travis/test2/120958af-b1ac-42be-a12f-feb7243eb6aa.ics') or die("Can't create new resource: " . $dav->message . "\n"); print $dav->message . "\n"; my $caldata = "BEGIN:VCALENDAR\nPRODID:-//Mozilla.org/NONSGML Mozilla Calendar V1.1//EN\nVERSION:2.0\nBEGIN:VTIMEZONE\nTZID:America/Chicago\nX-LIC-LOCATION:America/Chicago\nBEGIN:DAYLIGHT\nTZOFFSETFROM:-0600\nTZOFFSETTO:-0500\nTZNAME:CDT\nDTSTART:19700308T020000\nRRULE:FREQ=YEARLY;BYDAY=2SU;BYMONTH=3\nEND:DAYLIGHT\nBEGIN:STANDARD\nTZOFFSETFROM:-0500\nTZOFFSETTO:-0600\nTZNAME:CST\nDTSTART:19701101T020000\nRRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=11\nEND:STANDARD\nEND:VTIMEZONE\nBEGIN:VEVENT\nCREATED:20101213T045325Z\nLAST-MODIFIED:20101213T045327Z\nDTSTAMP:20110420T045327Z\nUID:120958af-b1ac-42be-a12f-feb7243eb6aa\nSUMMARY:Testing52\nDTSTART;TZID=America/Chicago:20110120T103000\nDTEND;TZID=America/Chicago:20110120T113000\nX-MOZ-GENERATION:1\nEND:VEVENT\nEND:VCALENDAR"; my $response = $dav->put(-local=>\$caldata, -url=>"http://10.10.10.250/davical/caldav.php/travis/test2/120958af-b1ac-42be-a12f-feb7243eb6aa.ics") or die("Can't put: " . $dav->message . "\n"); print $dav->message . "\n";