XML.pm 943 B

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. package Trog::Routes::XML;
  2. use strict;
  3. use warnings;
  4. no warnings 'experimental';
  5. use feature qw{signatures state};
  6. use Clone qw{clone};
  7. use XML::Twig;
  8. use Trog::Config();
  9. my $conf = Trog::Config::get();
  10. our %routes = (
  11. '/xml/version' => {
  12. method => 'GET',
  13. callback => \&version,
  14. parameters => [],
  15. },
  16. );
  17. # Clone / redact for catalog
  18. my $cloned = clone(\%routes);
  19. foreach my $r (keys(%$cloned)) {
  20. delete $cloned->{$r}{callback}
  21. }
  22. # Note to authors, don't forget to update this
  23. sub _version () {
  24. return '1.0';
  25. }
  26. sub version ($query) {
  27. my $enc = XML::Twig->new(
  28. 'pretty_print' => 'indented',
  29. );
  30. $enc->set_root( XML::Twig::Elt->new('version' => _version()) );
  31. $new_xml->set_xml_version('1.0');
  32. $new_xml->set_encoding('utf-8');
  33. state $ret = [200, ['Content-type' => "application/xml", ETag => 'version-'._version()],[$new_xml->sprint()]];
  34. return $ret;
  35. }
  36. 1;