J’ai développé une appli Web via le framework Perl Catalyst. J’aimerai lui ajouter un flux RSS, tout est bien expliqué dans le manuel. Lorsque je tape dans mon navigateur http://localhost:3000/rss.xml, j’ai donc le fichier suivant généré automatiquement :
[codebox]
<?xml version="1.0" encoding="UTF-8"?>
Dmaggen1 - RPM Manager
http://localhost:3000/
La liste des RPMs récents
fr-FR
ADEO_PMAGGEN_tools 2.0.0000000-1-noarch
ADEO_PMAGGEN_tools 2.0.0000000-1-noarchMise à jour le 01/10/2007
01/10/2007
http://localhost:3000/package/ADEO_PMAGGEN_tools-2.0.0000000-1-noarch
http://localhost:3000/package/ADEO_PMAGGEN_tools-2.0.0000000-1-noarch
ADEO_PMAGGEN_alimentation 1.0-7-noarch
ADEO_PMAGGEN_alimentation 1.0-7-noarchMise à jour le 01/10/2007
01/10/2007
http://localhost:3000/package/ADEO_PMAGGEN_alimentation-1.0-7-noarch
http://localhost:3000/package/ADEO_PMAGGEN_alimentation-1.0-7-noarch
ADEO_PMAGGEN_alimentation 1.0-6-noarch
ADEO_PMAGGEN_alimentation 1.0-6-noarchMise à jour le 01/10/2007
01/10/2007
http://localhost:3000/package/ADEO_PMAGGEN_alimentation-1.0-6-noarch
http://localhost:3000/package/ADEO_PMAGGEN_alimentation-1.0-6-noarch
ADEO_PMAGGEN_Php 1.0.000580-1-noarch
ADEO_PMAGGEN_Php 1.0.000580-1-noarchMise à jour le 01/10/2007
01/10/2007
http://localhost:3000/package/ADEO_PMAGGEN_Php-1.0.000580-1-noarch
http://localhost:3000/package/ADEO_PMAGGEN_Php-1.0.000580-1-noarch
ADEO_PMAGGEN_alimentation 1.0-4-noarch
ADEO_PMAGGEN_alimentation 1.0-4-noarchMise à jour le 26/09/2007
26/09/2007
http://localhost:3000/package/ADEO_PMAGGEN_alimentation-1.0-4-noarch
http://localhost:3000/package/ADEO_PMAGGEN_alimentation-1.0-4-noarch
ADEO_PMAGGEN_consobu 1.0-4-noarch
ADEO_PMAGGEN_consobu 1.0-4-noarchMise à jour le 26/09/2007
26/09/2007
http://localhost:3000/package/ADEO_PMAGGEN_consobu-1.0-4-noarch
http://localhost:3000/package/ADEO_PMAGGEN_consobu-1.0-4-noarch
ADEO_PMAGGEN_gestion 1.0-1-noarch
ADEO_PMAGGEN_gestion 1.0-1-noarchMise à jour le 26/09/2007
26/09/2007
http://localhost:3000/package/ADEO_PMAGGEN_gestion-1.0-1-noarch
http://localhost:3000/package/ADEO_PMAGGEN_gestion-1.0-1-noarch
ADEO_PMAGGEN_install 1.0-4-noarch
ADEO_PMAGGEN_install 1.0-4-noarchMise à jour le 26/09/2007
26/09/2007
http://localhost:3000/package/ADEO_PMAGGEN_install-1.0-4-noarch
http://localhost:3000/package/ADEO_PMAGGEN_install-1.0-4-noarch
ADEO_PMAGGEN_perlutil 1.0-4-noarch
ADEO_PMAGGEN_perlutil 1.0-4-noarchMise à jour le 26/09/2007
26/09/2007
http://localhost:3000/package/ADEO_PMAGGEN_perlutil-1.0-4-noarch
http://localhost:3000/package/ADEO_PMAGGEN_perlutil-1.0-4-noarch
ADEO_PMAGGEN_pmagframework 1.1-0.438-noarch
ADEO_PMAGGEN_pmagframework 1.1-0.438-noarchMise à jour le 26/09/2007
26/09/2007
http://localhost:3000/package/ADEO_PMAGGEN_pmagframework-1.1-0.438-noarch
http://localhost:3000/package/ADEO_PMAGGEN_pmagframework-1.1-0.438-noarch
ADEO_PMAGGEN_alerte 1.0-3-noarch
ADEO_PMAGGEN_alerte 1.0-3-noarchMise à jour le 26/09/2007
26/09/2007
http://localhost:3000/package/ADEO_PMAGGEN_alerte-1.0-3-noarch
http://localhost:3000/package/ADEO_PMAGGEN_alerte-1.0-3-noarch
ADEO_PMAGGEN_alerte 1.0-4-noarch
ADEO_PMAGGEN_alerte 1.0-4-noarchMise à jour le 26/09/2007
26/09/2007
http://localhost:3000/package/ADEO_PMAGGEN_alerte-1.0-4-noarch
http://localhost:3000/package/ADEO_PMAGGEN_alerte-1.0-4-noarch
ADEO_PMAGGEN_alerte 1.0-5-noarch
ADEO_PMAGGEN_alerte 1.0-5-noarchMise à jour le 26/09/2007
26/09/2007
http://localhost:3000/package/ADEO_PMAGGEN_alerte-1.0-5-noarch
http://localhost:3000/package/ADEO_PMAGGEN_alerte-1.0-5-noarch
ADEO_PMAGGEN_consobu 1.0-6-noarch
ADEO_PMAGGEN_consobu 1.0-6-noarchMise à jour le 26/09/2007
26/09/2007
http://localhost:3000/package/ADEO_PMAGGEN_consobu-1.0-6-noarch
http://localhost:3000/package/ADEO_PMAGGEN_consobu-1.0-6-noarch
ADEO_PMAGGEN_consobu 1.0-7-noarch
ADEO_PMAGGEN_consobu 1.0-7-noarchMise à jour le 26/09/2007
26/09/2007
http://localhost:3000/package/ADEO_PMAGGEN_consobu-1.0-7-noarch
http://localhost:3000/package/ADEO_PMAGGEN_consobu-1.0-7-noarch
ADEO_PMAGGEN_ffstock 1.0.000586-1-noarch
ADEO_PMAGGEN_ffstock 1.0.000586-1-noarchMise à jour le 26/09/2007
26/09/2007
http://localhost:3000/package/ADEO_PMAGGEN_ffstock-1.0.000586-1-noarch
http://localhost:3000/package/ADEO_PMAGGEN_ffstock-1.0.000586-1-noarch
ADEO_PMAGGEN_install 1.0-7-noarch
ADEO_PMAGGEN_install 1.0-7-noarchMise à jour le 26/09/2007
26/09/2007
http://localhost:3000/package/ADEO_PMAGGEN_install-1.0-7-noarch
http://localhost:3000/package/ADEO_PMAGGEN_install-1.0-7-noarch
ADEO_PMAGGEN_perlutil 1.0-7-noarch
ADEO_PMAGGEN_perlutil 1.0-7-noarchMise à jour le 26/09/2007
26/09/2007
http://localhost:3000/package/ADEO_PMAGGEN_perlutil-1.0-7-noarch
http://localhost:3000/package/ADEO_PMAGGEN_perlutil-1.0-7-noarch
ADEO_PMAGGEN_pmagframework 1.1-0.617-noarch
ADEO_PMAGGEN_pmagframework 1.1-0.617-noarchMise à jour le 26/09/2007
26/09/2007
http://localhost:3000/package/ADEO_PMAGGEN_pmagframework-1.1-0.617-noarch
http://localhost:3000/package/ADEO_PMAGGEN_pmagframework-1.1-0.617-noarch
ADEO_PMAGGEN_Valostkweb 1.0-0.528-noarch
ADEO_PMAGGEN_Valostkweb 1.0-0.528-noarchMise à jour le 26/09/2007
26/09/2007
http://localhost:3000/package/ADEO_PMAGGEN_Valostkweb-1.0-0.528-noarch
http://localhost:3000/package/ADEO_PMAGGEN_Valostkweb-1.0-0.528-noarch
[/codebox]
Mais Firefox ne veux pas le détecter comme flux RSS. Quel manipulation faut-il faire pour que celui-ci détecte qu’il s’agit d’un flux RSS.
Avec l’instruction
Firefox me propose de télécharger le flux, sans cette instruction, firefox m’affiche en brut dans le navigateur les données du fichier.
Résolut en utilisant le module XML::Feed de la manière suivante :
[codebox]
@method public void rss(Catalyst c)
Affiche la liste des RPMs
@param c le controller
sub rss : Path(’/atom.xml’) {
my ($self, $c) = @_;
# Création de la liste de posts
my $posts = new Adeo::Util::ArrayList();
# On recherches les derniers Rpms
my $rs = $c->model('RpmDB::Rpms')->search(undef,
{
order_by => 'me.date DESC',
page => 1,
rows => 20,
}
);
# Création du feed
my $feed = new XML::Feed("Atom");
$feed->title("RPM Manager");
$feed->link($c->uri_for('/'));
$feed->description("Recents Packages");
# On les parcours
while (my $rpm = $rs->next) {
my $entry = new XML::Feed::Entry();
$entry->title($rpm->name . " " . $rpm->version . "-" . $rpm->release . "-" . $rpm->arch);
$entry->modified($rpm->date);
$entry->link($c->uri_for("/package/" . $rpm->name . "-" . $rpm->version . "-" . $rpm->release . "-" . $rpm->arch));
$entry->summary($rpm->name . " " . $rpm->version . "-" . $rpm->release . "-" . $rpm->arch . " - Mise à jour le " . $rpm->date->dmy('/'));
$entry->content("" . $rpm->name . " " . $rpm->version . "-" . $rpm->release . "-" . $rpm->arch . "Mise à jour le " . $rpm->date->dmy('/') . "");
$feed->add_entry($entry);
}
$c->stash->{feed} = $feed;
$c->res->body($feed->as_xml());
}
[/codebox]