12345678910111213141516171819202122232425262728293031323334353637383940414243444546 |
- package Trog::Routes::XML;
- use strict;
- use warnings;
- no warnings 'experimental';
- use feature qw{signatures state};
- use Clone qw{clone};
- use XML::Twig;
- use Trog::Config();
- my $conf = Trog::Config::get();
- our %routes = (
- '/xml/version' => {
- method => 'GET',
- callback => \&version,
- parameters => [],
- },
- );
- # Clone / redact for catalog
- my $cloned = clone(\%routes);
- foreach my $r (keys(%$cloned)) {
- delete $cloned->{$r}{callback}
- }
- # Note to authors, don't forget to update this
- sub _version () {
- return '1.0';
- }
- sub version ($query) {
- my $enc = XML::Twig->new(
- 'pretty_print' => 'indented',
- );
- $enc->set_root( XML::Twig::Elt->new('version' => _version()) );
- $new_xml->set_xml_version('1.0');
- $new_xml->set_encoding('utf-8');
- state $ret = [200, ['Content-type' => "application/xml", ETag => 'version-'._version()],[$new_xml->sprint()]];
- return $ret;
- }
- 1;
|