Changeset 512 for cybozu2ical/trunk/lib/WWW
- Timestamp:
- 08/29/08 18:53:48 (4 months ago)
- Location:
- cybozu2ical/trunk/lib/WWW/CybozuOffice6
- Files:
-
- 1 added
- 3 modified
-
Calendar.pm (modified) (2 diffs)
-
CalendarDriver.pm (added)
-
CalendarDriver/ApiCalendar.pm (modified) (4 diffs)
-
CalendarDriver/SyncCalendar.pm (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
cybozu2ical/trunk/lib/WWW/CybozuOffice6/Calendar.pm
r510 r512 19 19 my $cal = bless \%param, $class; 20 20 $cal->{url} ||= delete $cal->{cybozu_url}; 21 $cal->driver_init; 22 $cal; 23 } 24 25 sub driver_init { 26 my $cal = shift; 27 my $driver = $cal->{calendar_driver} || 'ApiCalendar'; 28 $driver = 'WWW::CybozuOffice6::CalendarDriver::' . $driver 29 if $driver !~ m/^WWW::CybozuOffice6::CalendarDriver::/; 30 eval "use $driver;"; 31 $cal->{calendar_driver} = $driver; 21 $cal->{calendar_driver} = 22 WWW::CybozuOffice6::CalendarDriverFactory->get_driver( 23 $cal->{calendar_driver} ) 24 unless ref $cal->{calendar_driver}; 32 25 $cal; 33 26 } … … 66 59 } 67 60 61 package WWW::CybozuOffice6::CalendarDriverFactory; 62 63 sub get_driver { 64 my $class = shift; 65 my ($driver_name) = @_; 66 $driver_name ||= 'ApiCalendar'; 67 $driver_name = 'WWW::CybozuOffice6::CalendarDriver::' . $driver_name 68 if $driver_name !~ m/^WWW::CybozuOffice6::CalendarDriver::/; 69 eval "use $driver_name;"; 70 $driver_name->new; 71 } 72 68 73 1; 69 74 __END__ -
cybozu2ical/trunk/lib/WWW/CybozuOffice6/CalendarDriver/ApiCalendar.pm
r507 r512 5 5 use warnings; 6 6 7 use base qw( WWW::CybozuOffice6::CalendarDriver ); 7 8 use Carp; 8 9 use Encode qw( from_to ); … … 13 14 14 15 sub request { 15 my $ class= shift;16 my $driver = shift; 16 17 my ($cal) = @_; 17 18 my $date_range = $cal->{date_range} || 30; … … 76 77 77 78 sub get_items { 78 my $ class= shift;79 my $driver = shift; 79 80 my ($cal) = @_; 80 81 81 my $csv;82 if ( eval('require Text::CSV_XS') ) {83 $csv = Text::CSV_XS->new( { binary => 1 } );84 }85 elsif ( eval('require Text::CSV') ) {86 $csv = Text::CSV->new();87 }88 confess 'Text::CSV_XS or Text::CSV package is required' unless $csv;89 90 82 my @items; 83 my $csv = $driver->{csv}; 91 84 for my $line ( $cal->response ) { 92 85 $csv->parse($line) … … 100 93 # [ 0] $Item.ID 101 94 # [ 1] $TimeStamp 102 # [ 2] $s 95 # [ 2] $s (Shared) 103 96 # [ 3] $Date 104 97 # [ 4] $Item.TypeOmit -
cybozu2ical/trunk/lib/WWW/CybozuOffice6/CalendarDriver/SyncCalendar.pm
r507 r512 5 5 use warnings; 6 6 7 use base qw( WWW::CybozuOffice6::CalendarDriver ); 7 8 use Carp; 8 9 use Encode qw( from_to ); 9 10 use LWP::UserAgent; 10 use DateTime;11 11 use WWW::CybozuOffice6::Calendar::Event; 12 12 use WWW::CybozuOffice6::Calendar::RecurrentEvent; 13 13 14 14 sub request { 15 my $ class= shift;15 my $driver = shift; 16 16 my ($cal) = @_; 17 17 my $date_range = $cal->{date_range} || 30; … … 39 39 40 40 sub get_items { 41 my $ class= shift;41 my $driver = shift; 42 42 my ($cal) = @_; 43 43 44 my $csv;45 if ( eval('require Text::CSV_XS') ) {46 $csv = Text::CSV_XS->new( { binary => 1 } );47 }48 elsif ( eval('require Text::CSV') ) {49 $csv = Text::CSV->new;50 }51 confess 'Text::CSV_XS or Text::CSV package is required' unless $csv;52 53 44 my @items; 45 my $csv = $driver->{csv}; 54 46 for my $line ( $cal->response ) { 55 47 $csv->parse($line)
![(please configure the [header_logo] section in trac.ini)](/public/chrome/common/trac_banner.png)