--- loncom/lonnet/perl/lonnet.pm 2000/06/26 20:10:49 1.15 +++ loncom/lonnet/perl/lonnet.pm 2000/07/17 21:36:33 1.18 @@ -13,6 +13,8 @@ # put(namesp,hash) : stores hash in namesp # dump(namesp) : dumps the complete namespace into a hash # ssi(url) : does a complete request cycle on url to localhost +# repcopy(filename) : replicate file +# dirlist(url) : gets a directory listing # # 6/1/99,6/2,6/10,6/11,6/12,6/14,6/26,6/28,6/29,6/30, # 7/1,7/2,7/9,7/10,7/12,7/14,7/15,7/19, @@ -22,6 +24,7 @@ # 04/05,05/29,05/31,06/01, # 06/05,06/26 Gerd Kortemeyer # 06/26 Ben Tyszka +# 06/30,07/15,07/17 Gerd Kortemeyer package Apache::lonnet; @@ -290,6 +293,7 @@ sub subscribe { sub repcopy { my $filename=shift; my $transname="$filename.in.transfer"; + if ((-e $filename) || (-e $transname)) { return OK; } my $remoteurl=subscribe($filename); if ($remoteurl eq 'con_lost') { &logthis("Subscribe returned con_lost: $filename"); @@ -324,6 +328,15 @@ sub repcopy { ." LWP get: $message: $filename"); return HTTP_SERVICE_UNAVAILABLE; } else { + if ($remoteurl!~/\.meta$/) { + my $mrequest=new HTTP::Request('GET',$remoteurl.'.meta'); + my $mresponse=$ua->request($mrequest,$filename.'.meta'); + if ($mresponse->is_error()) { + unlink($filename.'.meta'); + &logthis( + "INFO: No metadata: $filename"); + } + } rename($transname,$filename); return OK; } @@ -344,9 +357,6 @@ sub ssi { return $response->content; } - - - # ------------------------------------------------------------------------- Log sub log { @@ -581,6 +591,17 @@ sub plaintext { sub assignrole { } +# ------------------------------------------------------------ Directory lister + +sub dirlist { + my $uri=shift; + $uri=~s/^\///; + $uri=~s/\/$//; + $uri=~/^res\/(\w+)\/(\w+)/; + my $listing=reply('ls:'.$perlvar{'lonDocRoot'}.'/'.$uri,homeserver($2,$1)); + return split(/:/,$listing); +} + # -------------------------------------------------------- Escape Special Chars sub escape {