This one here is just repackaged rss2html from XML::RSS module,
made to fit style suggested by John Leonard.

I still think it would be better to make those applets as regular perl
modules - that way it's trivial to precompile them into apache and solves
namespace problems.

-- 
Dariusz Pietrzak
snafu
<%

# -----------------------------------------------------------------------------------
#
# - rss.inc  - Apache::ASP applet
# - 
#
# -----------------------------------------------------------------------------------
#
# INCLUDES
use strict;
use XML::RSS;
use LWP::Simple;

# Declare variables
my $content;
my $file;

# MAIN

# get the command-line argument
my ($arg) = @_;

# create new instance of XML::RSS
my $rss = new XML::RSS;

# argument is a URL
if ($arg=~ /http:/i) {
    $content = get($arg);
    die "Could not retrieve $arg" unless $content;
    # parse the RSS content
    $rss->parse($content);

# argument is a file
} else {
    $file = $arg;
    die "File \"$file\" does't exist.\n" unless -e $file;
    # parse the RSS file
    $rss->parsefile($file);
}

# print the HTML channel
&print_html($rss);

# SUBROUTINES
sub print_html {
    my $rss = shift;
    print <<HTML;
<table bgcolor="#000000" border="0" width="200"><tr><td>
<TABLE CELLSPACING="1" CELLPADDING="4" BGCOLOR="#FFFFFF" BORDER=0 width="100%">
  <tr>
  <td valign="middle" align="center" bgcolor="#EEEEEE"><font color="#000000" 
face="Arial,Helvetica"><B><a 
href="$rss->{'channel'}->{'link'}">$rss->{'channel'}->{'title'}</a></B></font></td></tr>

<tr><td>
HTML

    # print channel image
    if ($rss->{'image'}->{'link'}) {
        print <<HTML;
<center>
<p><a href="$rss->{'image'}->{'link'}"><img src="$rss->{'image'}->{'url'}" 
alt="$rss->{'image'}->{'title'}" border="0"
HTML
        print " width=\"$rss->{'image'}->{'width'}\""
            if $rss->{'image'}->{'width'};
        print " height=\"$rss->{'image'}->{'height'}\""
            if $rss->{'image'}->{'height'};
        print "></a></center><p>\n";
    }

    # print the channel items
    foreach my $item (@{$rss->{'items'}}) {
        next unless defined($item->{'title'}) && defined($item->{'link'});
        print "<li><a href=\"$item->{'link'}\">$item->{'title'}</a><BR>\n";
    }

    # if there's a textinput element
    if ($rss->{'textinput'}->{'title'}) {
        print <<HTML;
<form method="get" action="$rss->{'textinput'}->{'link'}">
$rss->{'textinput'}->{'description'}<BR> 
<input type="text" name="$rss->{'textinput'}->{'name'}"><BR>
<input type="submit" value="$rss->{'textinput'}->{'title'}">
</form>
HTML
    }

    # if there's a copyright element
    if ($rss->{'channel'}->{'copyright'}) {
        print <<HTML;
<p><sub>$rss->{'channel'}->{'copyright'}</sub></p>
HTML
    }

    print <<HTML;
</td>
</TR>
</TABLE>
</td></tr></table>
HTML
}



=head1 NAME

rss.inc - Apache::ASP applet

=head1 SYNOPSIS

  $Response->Include( "rss.inc" ,"/path/to/file.rdf" );
  $Response->Include( "showdir.inc", "http://slashdot.org/slashdot.rdf";); -don't abuse 
this!

=head1 DESCRIPTION
 This little ASP applet produces html table from RDF file.
It can fetch it from network using LWP agent, but watch out for this solution - 
webmasters often
place limits on how often you can fetch their site.rdf file.

=head1 SIDE EFFECTS

Outputs resulting HTML string using print.

=head1 AUTHOR

Jonathan Eisenzopf.
Apache::ASP version - Eyck;) 

=cut



%>
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to