#!/usr/bin/perl # # rhrdweb # # Copyright (C) 2016 Christian Pointner # # This file is part of rhrdweb. # # rhrdweb is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as published by # the Free Software Foundation, either version 3 of the License, or # any later version. # # rhrdweb is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Affero General Public License for more details. # # You should have received a copy of the GNU Affero General Public License # along with rhrdweb. If not, see . # use strict; use RHRD::rddb; use JSON::MaybeXS; my $status = 'ERROR'; my $errorstring = 'unknown'; my $responsecode = 500; my @showlist; my @mshowlist; (my $ctx, $status, $errorstring) = RHRD::rddb::init(); if(defined $ctx) { my @shows = RHRD::rddb::list_shows($ctx); if(!defined $shows[0] && defined $shows[1]) { $responsecode = 500; $status = $shows[1]; $errorstring = $shows[2]; } else { my @mshows = RHRD::rddb::list_multi_shows($ctx); if(!defined $mshows[0] && defined $mshows[1]) { $responsecode = 500; $status = $mshows[1]; $errorstring = $mshows[2]; } else { my %multirefs; my @sorted = sort { lc($a->{'TITLE'}) cmp lc($b->{'TITLE'}) } @mshows; for my $href (@sorted) { my %mshow; $mshow{'id'} = int($href->{'ID'}); $mshow{'type'} = $href->{'TYPE'}; $mshow{'title'} = $href->{'TITLE'}; $mshow{'title'} .= ' (Wiederholung)' if($href->{'TYPE'} eq 'r'); $mshow{'title'} .= ' (Sondersendung)' if($href->{'TYPE'} eq 's'); $mshow{'weeks'} = $href->{'SHOWS'}; my %parts = %{$href->{'SHOWS'}}; foreach my $week (keys %parts) { my %ref; $ref{'week'} = int($week); $ref{'id'} = $mshow{'id'}; $multirefs{$parts{$week}} = \%ref; } push @mshowlist, \%mshow; } @sorted = sort { lc($a->{'TITLE'}) cmp lc($b->{'TITLE'}) } @shows; for my $href (@sorted) { my %show; $show{'id'} = int($href->{'ID'}); $show{'type'} = $href->{'TYPE'}; $show{'title'} = $href->{'TITLE'}; $show{'title'} .= ' (Wiederholung)' if($href->{'TYPE'} eq 'r'); $show{'title'} .= ' (Sondersendung)' if($href->{'TYPE'} eq 's'); if(exists($multirefs{$href->{'ID'}})) { $show{'multi'} = $multirefs{$href->{'ID'}}; } push @showlist, \%show; } $responsecode = 200; $status = "OK"; $errorstring = "success"; } } RHRD::rddb::destroy($ctx); } my %answer; $answer{'status'} = $status; $answer{'errorstring'} = $errorstring; $answer{'shows'} = \@showlist; $answer{'multi-shows'} = \@mshowlist; my $j = JSON::MaybeXS->new(utf8 => 0); print "Content-type: application/json; charset=UTF-8\n"; print "Status: $responsecode\n\n"; print $j->encode(\%answer);