View | Details | Raw Unified | Return to bug 25032
Collapse All | Expand All

(-)a/Koha/REST/Plugin/Exceptions.pm (+75 lines)
Line 0 Link Here
1
package Koha::REST::Plugin::Exceptions;
2
3
# This file is part of Koha.
4
#
5
# Koha is free software; you can redistribute it and/or modify it
6
# under the terms of the GNU General Public License as published by
7
# the Free Software Foundation; either version 3 of the License, or
8
# (at your option) any later version.
9
#
10
# Koha is distributed in the hope that it will be useful, but
11
# WITHOUT ANY WARRANTY; without even the implied warranty of
12
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13
# GNU General Public License for more details.
14
#
15
# You should have received a copy of the GNU General Public License
16
# along with Koha; if not, see <http://www.gnu.org/licenses>.
17
18
use Modern::Perl;
19
20
use Koha::Logger;
21
22
use Mojo::Base 'Mojolicious::Plugin';
23
24
=head1 NAME
25
26
Koha::REST::Plugin::Exceptions
27
28
=head1 API
29
30
=head2 Helper methods
31
32
=head3 unhandled_exception
33
34
    try {
35
        ...
36
    }
37
    catch {
38
        if ( know_exception ) {
39
            handle_known_exception($_);
40
        }
41
42
        $c->unhandled_exception($_);
43
    }
44
45
Provides a generic and reusable way to throw unhandled exceptions. This way we
46
can centralize the behaviour control (e.g. production vs. development environmet)
47
48
=cut
49
50
sub register {
51
    my ( $self, $app ) = @_;
52
53
    $app->helper(
54
        'unhandled_exception' => sub {
55
            my ( $c, $exception ) = @_;
56
57
            my $req    = $c->req;
58
            my $method = $req->method;
59
            my $path   = $req->url->to_abs->path;
60
61
            $c->app->log->error("$method $path: unhandled exception ($exception)");
62
63
            $c->render(
64
                status  => 500,
65
                openapi => {
66
                    error =>
67
                      "Something went wrong, check Koha logs for details."
68
                }
69
            );
70
          }
71
72
    );
73
}
74
75
1;
(-)a/Koha/REST/V1.pm (-1 / +3 lines)
Lines 40-45 Overloaded Mojolicious->startup method. It is called at application startup. Link Here
40
sub startup {
40
sub startup {
41
    my $self = shift;
41
    my $self = shift;
42
42
43
    $self->log( Koha::Logger->get({ interface => 'api' }) );
44
43
    $self->hook(
45
    $self->hook(
44
        before_dispatch => sub {
46
        before_dispatch => sub {
45
            my $c = shift;
47
            my $c = shift;
Lines 132-137 sub startup { Link Here
132
    $self->plugin( 'Koha::REST::Plugin::Pagination' );
134
    $self->plugin( 'Koha::REST::Plugin::Pagination' );
133
    $self->plugin( 'Koha::REST::Plugin::Query' );
135
    $self->plugin( 'Koha::REST::Plugin::Query' );
134
    $self->plugin( 'Koha::REST::Plugin::Objects' );
136
    $self->plugin( 'Koha::REST::Plugin::Objects' );
137
    $self->plugin( 'Koha::REST::Plugin::Exceptions' );
135
}
138
}
136
139
137
1;
140
1;
138
- 

Return to bug 25032