Bug 13545: (followup) POD and error handling
[koha.git] / svc / barcode
1 #!/usr/bin/perl
2
3 # Copyright 2014 ByWater Solutions
4 #
5 # This file is part of Koha.
6 #
7 # Koha is free software; you can redistribute it and/or modify it under the
8 # terms of the GNU General Public License as published by the Free Software
9 # Foundation; either version 3 of the License, or (at your option) any later
10 # version.
11 #
12 # Koha is distributed in the hope that it will be useful, but WITHOUT ANY
13 # WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
14 # A PARTICULAR PURPOSE.  See the GNU General Public License for more details.
15 #
16 # You should have received a copy of the GNU General Public License along
17 # with Koha; if not, write to the Free Software Foundation, Inc.,
18 # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
19
20 use Modern::Perl;
21
22 use CGI qw(header);
23 use GD::Barcode;
24
25 use C4::Auth qw(check_cookie_auth);
26
27 =head1 NAME
28
29     /cgi-bin/koha/svc/barcode
30
31 =head1 SYNOPSIS
32
33 This service generates a PNG barcode image for the requested barcode.
34
35 =head2 PARAMETERS
36
37 =over
38
39 =item I<barcode>
40
41 I<barcode> is the desired barcode. It should be called like:
42
43 =item I<type>
44
45 I<type> is the desired barcode type. Possible values are TODO. If ommited,
46 it defaults to Code39.
47
48 =back
49
50 =head2 EXAMPLES
51
52 =over
53
54 =item /cgi-bin/koha/svc/barcode?barcode=123456789
55
56 Returns a Code39 barcode image for barcode 123456789
57
58 =item /cgi-bin/koha/svc/barcode?barcode=123456789&type=UPCE
59
60 Returns a UPCE barcode image for barcode 123456789
61
62 =cut
63
64 my $input = new CGI;
65
66 my ( $auth_status, $sessionID ) = check_cookie_auth( $input->cookie('CGISESSID'), { catalogue => '*' } );
67
68 if ( $auth_status ne "ok" ) {
69     exit 0;
70 }
71
72 binmode(STDOUT);
73
74 my $type = $input->param('type') || 'Code39';
75 my $barcode = $input->param('barcode');
76 my $image;
77
78 eval {
79     $image = GD::Barcode->new( $type, $barcode )->plot()->png();
80 };
81
82 if ( $@ ) {
83     # problem creating image
84     print header( -status => 500 );
85 } else {
86     print header('image/png');
87     print $image;
88 }
89
90 exit 0;
91
92 =head1 AUTHOR
93
94 Kyle M Hall <kyle@bywatersolutions.com>
95
96 =cut