#!perl -w ## # # Please note that, for the time being, # this is really just an example app # ## use strict; use Data::Dumper; use Net::Google::Calendar; use Data::ICal::Entry::Event; use Date::ICal; my $url = shift || die "You must pass a feed url\n"; my $cal = Net::Google::Calendar->new( url => $url ); my $u = shift; my $p = shift; $cal->login($u, $p) || die "Couldn't log in: $@\n"; if (0 && !@ARGV) { for ($cal->get_calendars) { print $_->title."\n"; print $_->id."\n\n"; } exit; } my ($c) = grep { $_->title =~ m!default!i } $cal->get_calendars; die "Couldn't get cal\n" unless defined $c; $cal->set_calendar($c); if (!@ARGV) { print "Getting events\n"; for ($cal->get_events()) { #print Dumper $_->as_xml; #next; print $_->title."\n"; print $_->id."\n"; my ($start, $finish) = $_->when(); print "${start}-${finish}\n"; #print $_->content->body; print "\n*****\n\n"; } exit; } my $title = shift; my $entry = Net::Google::Calendar::Entry->new(); $entry->title($title); $entry->content("My content"); #$entry->location('London, England'); #$entry->transparency('transparent'); #$entry->status('confirmed'); $entry->when(DateTime->now, DateTime->now() + DateTime::Duration->new( hours => 6 ) ); #my $author = Net::Google::Calendar::Person->new(); #$author->name('Foo Bar'); #$author->email('foo@bar.com'); #$entry->author($author); my $recurrence = Data::ICal::Entry::Event->new(); use DateTime::Event::Recurrence; use Date::ICal; use DateTime::Format::ICal; my $last_day_of_the_month = DateTime::Event::Recurrence->monthly( days => -1 ); $recurrence->add_properties( dtstart => DateTime::Format::ICal->format_datetime(DateTime->now), rrule => DateTime::Format::ICal->format_recurrence($last_day_of_the_month), ); #$entry->recurrence($recurrence); print STDERR $entry->as_xml."\n\n\n*********************\n\n"; #exit; print "Before=".scalar($cal->get_events())."\n"; my $tmp = $cal->add_entry($entry); die "Couldn't add event: $@\n" unless defined $tmp; print "After=".scalar($cal->get_events())."\n"; #die $tmp->as_xml; $tmp->content('Updated'); #print "Update\n"; $cal->update_entry($tmp) || die "Couldn't update ".$tmp->id.": $@\n"; print "Updated=".scalar($cal->get_events())."\n"; #print $tmp->as_xml; for ($cal->get_events()) { print $_->title."\n"; print $_->id."\n"; my ($start, $finish) = $_->when(); print "${start}-${finish}\n"; #print $_->content->body; print "\n*****\n\n"; $cal->delete_entry($_); # print $_->as_xml; } print "Delete\n"; #$cal->delete_entry($tmp) || die "Couldn't delete ".$tmp->id.": $@\n"; #print "Delete=".scalar($cal->get_events())."\n";