X-Git-Url: http://git.tpope.net/?a=blobdiff_plain;f=perl%2Fsctweb;h=018077c0793336d20a7304fce624c2927df8da1d;hb=74b4e7b3ee855c17c8bff7ef19578d665c4bde54;hp=7fe412b1a138a3f9bccf0baf24160f4661504192;hpb=34b81bfb1d78d143dceae44563e16818c3a122a7;p=tpope-extra.git diff --git a/perl/sctweb b/perl/sctweb index 7fe412b..018077c 100755 --- a/perl/sctweb +++ b/perl/sctweb @@ -9,9 +9,56 @@ use strict; use LWP::UserAgent; use HTML::TableExtract; -use vars qw($ua %opts); -my ($ts, $row, $response); -my $url="https://sctweb.accd.edu/ia-bin4/tsrvweb.exe?WID=W&tserve_tip_read_destroy&tserve_host_code=4&tserve_tiphost_code=0"; +#use Time::Local; +use Date::Calc::Object qw(Day_of_Week Decode_Day_of_Week Week_of_Year Monday_of_Week Day_of_Week_Abbreviation Delta_Days Add_Delta_Days Nth_Weekday_of_Month_Year Gmtime Mktime); +use Date::Calendar::Profiles qw($Profiles); +use Date::Calendar::Year; +use vars qw($ua %opts %faculty); + +my ($response); + +$opts{'holidays'} = { # %{$Profiles->{'US-TX'}}, + "Martin Luther King Day" => "3/Mon/Jan", + "Good Friday" => "-2", + "Spring Break Monday" => \&Spring_Break, + "Spring Break Tuesday" => \&Spring_Break, + "Spring Break Wednesday" => \&Spring_Break, + "Spring Break Thursday" => \&Spring_Break, + "Spring Break Friday" => \&Spring_Break, + "Spring Break Saturday" => \&Spring_Break, + "Fiesta Holiday" => "4/Fri/Apr", + "Memorial Day" => "5/Mon/May", + "Independence Day" => \&US_Independence, + "Labor Day" => \&US_Labor, + "Columbus Day" => "2/Mon/Oct", + "Thanksgiving Day" => "4/Thu/Nov", + "Thanksgiving Friday" => \&Thanksgiving_Friday, +}; + +sub Spring_Break { + my($year,$label) = @_; + $label =~ s/^Spring Break //; + return( Add_Delta_Days( + Nth_Weekday_of_Month_Year($year,1,1,1), + 7*(11-1) # This is for the 11th Monday of the year + +Decode_Day_of_Week($label)-1) ); +} + +sub Thanksgiving_Friday { + my($year,$label) = @_; + return( Add_Delta_Days(Nth_Weekday_of_Month_Year($year,11,4,4), 1) ); +} +sub US_Independence # Fourth of July +{ + my($year,$label) = @_; + return( &Date::Calendar::Profiles::Nearest_Workday($year,7,4) ); +} +sub US_Labor # First Monday after the first Sunday in September +{ + my($year,$label) = @_; + return( Add_Delta_Days( + Nth_Weekday_of_Month_Year($year,9,7,1), +1) ); +} if (-r $ENV{HOME} . "/.sctwebrc") { open CONFIG, $ENV{HOME} . "/.sctwebrc"; @@ -22,6 +69,9 @@ if (-r $ENV{HOME} . "/.sctwebrc") { } close CONFIG; } +my $domain = $opts{'domain'} || "sctweb.accd.edu"; +my $url = "https://$domain/ia-bin4/tsrvweb.exe?WID=W&tserve_tip_read_destroy&tserve_host_code=4&tserve_tiphost_code=0"; +$url = $opts{'url'} if(defined($opts{'url'})); $ua = LWP::UserAgent->new; $ua->timeout(10); @@ -29,19 +79,122 @@ $ua->env_proxy; $ua->cookie_jar( {} ); $ua->get("$url&tserve_tip_write=||WID&tserve_transconfig=astulog.cfg") or die "$!"; $response = $ua->post("$url&tserve_trans_config=astulog.cfg", { tserve_tip_write => "%7C%7CWID%7CSID%7CPIN", SID => $opts{SID}, PIN => $opts{PIN} }) or die "$!"; -#print $response->content; -#die "Site down. Try again later.\n" if(length($response->content)<256); $response = $ua->get("$url&tserve_tip_write=||WID|SID|PIN|Term&tserve_trans_config=" . ("regterm.cfg"||"rgrdterm.cfg")); # Valid terms die $response->status_line unless $response->is_success; my @terms = grep {s/^