// Copyright © 2002 by Apple Computer, Inc., All Rights Reserved.
//
// You may incorporate this Apple sample code into your own code
// without restriction. This Apple sample code has been provided "AS IS"
// and the responsibility for its operation is yours. You may redistribute
// this code, but you are not permitted to redistribute it as
// "Apple sample code" after having made changes.



#!/usr/bin/perl -w
use strict;
$|++;
	
use SOAP::Transport::HTTP;
	
my $daemon = SOAP::Transport::HTTP::Daemon
	  -> new (LocalAddr => 'localhost', LocalPort => 8001, Reuse => 1)
	  -> dispatch_to ('Server');
	
	print "Contact SOAP server at ", $daemon->url, "\n";
	$daemon->handle;
	
	BEGIN {
	  package Server;
	  use base qw(SOAP::Server::Parameters);
	
	  use XML::RSS;
	  use LWP::Simple;
	
	  sub fetch_headlines {
	    my $p = pop->method;
	    my $uri = $p->{uri} or die "missing uri parameter";
	    my $rdf = get $uri or die "Can't fetch rdf";
	    (my $rss = XML::RSS->new)->parse($rdf); # might die, we don't care
	
	    return [map {
	      my $item = $_;
	      +{ title => $item->{title}, link => $item->{link} };
	    } @{$rss->{items}}];
	  }
	}