1234567891011121314151617181920212223242526272829303132333435363738394041424344454647 |
- package Trog::Routes::JSON;
- use strict;
- use warnings;
- no warnings 'experimental';
- use feature qw{signatures};
- use JSON::MaybeXS();
- our %routes = (
- '/api/catalog' => {
- method => 'GET',
- callback => \&catalog,
- parameters => [],
- },
- '/api/webmanifest' => {
- method => 'GET',
- callback => \&webmanifest,
- parameters => [],
- },
- );
- my $contenttype = "Content-type:application/json;";
- sub catalog ($query, $input, $=) {
- my $enc = JSON::MaybeXS->new( utf8 => 1 );
- my %rcopy = %{\%routes};
- foreach my $r (keys(%rcopy)) {
- delete $rcopy{$r}{callback}
- }
- return [200,[$contenttype],[$enc->encode(\%rcopy)]];
- }
- sub webmanifest ($query, $input, $=) {
- my $enc = JSON::MaybeXS->new( utf8 => 1 );
- my %manifest = (
- "icons" => [
- { "src" => "$query->{theme_dir}/img/icon/favicon-192.png", "type" => "image/png", "sizes" => "192x192" },
- { "src" => "$query->{theme_dir}/img/icon/favicon-512.png", "type" => "image/png", "sizes" => "512x512" },
- ],
- );
- return [ 200, [$contenttype], [$enc->encode(\%manifest)] ];
- }
- 1;
|