--- nsdl/lonsql 2005/11/17 22:04:47 1.2 +++ nsdl/lonsql 2005/11/24 20:21:15 1.6 @@ -3,7 +3,7 @@ # The LearningOnline Network # lonsql - LON TCP-NSDL Query Handler. # -# $Id: lonsql,v 1.2 2005/11/17 22:04:47 www Exp $ +# $Id: lonsql,v 1.6 2005/11/24 20:21:15 www Exp $ # # Copyright Michigan State University Board of Trustees # @@ -113,7 +113,10 @@ use IO::File; use Socket; use Fcntl; use Tie::RefHash; - +use HTML::LCParser(); +use LWP::UserAgent(); +use HTTP::Headers; +use HTTP::Date; use File::Find; use localenroll; @@ -450,7 +453,7 @@ sub process_file { sub do_sql_query { my ($query) = @_; - &logthis('doing query '.$query); +# &logthis('doing query '.$query); my @results = (); @@ -847,7 +850,40 @@ sub HUPSMAN { # sig sub nsdl_query { my $query=shift; -} + my ($keyword)=($query=~/\"\%([^\%]+)\%\"/); + $keyword=&escape($keyword); + &logthis('Doing '.$keyword); + my $url='http://search.nsdl.org?verb=Search&s=0&n=500&q=-link.primaryCollection:oai\:nsdl.org\:nsdl.nsdl\:00254%20'.$keyword; + my $ua=new LWP::UserAgent; + my $response=$ua->get($url); + my $parser=HTML::LCParser->new(\$response->content); + my %result=(); + my $is=(); + my $cont=''; + my $array=[]; + my $token; + while ($token=$parser->get_token) { + if ($token->[0] eq 'T') { + $cont.=$token->[1]; + } elsif ($token->[0] eq 'S') { + if ($token->[1] eq 'record') { + %result=(); + } elsif ($token->[1]=~/^dc\:/) { + $is=$token->[1]; + $cont=''; + } + } elsif ($token->[0] eq 'E') { + if ($token->[1] eq 'record') { +# +# Now store it away +# + } elsif ($token->[1]=~/^dc\:/) { + $result{$is}=$cont; + } + } + } + return $array; +} =pod