|
Lines 20-25
use Modern::Perl;
Link Here
|
| 20 |
use Mojo::Base 'Mojolicious'; |
20 |
use Mojo::Base 'Mojolicious'; |
| 21 |
|
21 |
|
| 22 |
use C4::Context; |
22 |
use C4::Context; |
|
|
23 |
use Carp; |
| 23 |
use JSON::Validator::OpenAPI::Mojolicious; |
24 |
use JSON::Validator::OpenAPI::Mojolicious; |
| 24 |
use Try::Tiny; |
25 |
use Try::Tiny; |
| 25 |
|
26 |
|
|
Lines 103-134
sub startup {
Link Here
|
| 103 |
catch { |
104 |
catch { |
| 104 |
# Validation of the complete spec failed. Resort to validation one-by-one |
105 |
# Validation of the complete spec failed. Resort to validation one-by-one |
| 105 |
# to catch bad ones. |
106 |
# to catch bad ones. |
| 106 |
$validator->load_and_validate_schema( |
|
|
| 107 |
$self->home->rel_file("api/v1/swagger/swagger.json"), |
| 108 |
{ |
| 109 |
allow_invalid_ref => 1, |
| 110 |
schema => ( $swagger_schema ) ? $swagger_schema : undef, |
| 111 |
} |
| 112 |
); |
| 113 |
|
| 114 |
$spec = $validator->schema->data; |
| 115 |
$self->plugin( |
| 116 |
'Koha::REST::Plugin::PluginRoutes' => { |
| 117 |
spec => $spec, |
| 118 |
validator => $validator |
| 119 |
} |
| 120 |
) unless C4::Context->needs_install; # load only if Koha is installed |
| 121 |
|
107 |
|
| 122 |
$self->plugin( |
108 |
# JSON::Validator uses confess, so trim call stack from the message. |
| 123 |
OpenAPI => { |
109 |
carp "Warning: Could not load REST API spec bundle: " . ($_ =~ /\A(.*?)$/ms)[0]; |
| 124 |
spec => $spec, |
110 |
|
| 125 |
route => $self->routes->under('/api/v1')->to('Auth#under'), |
111 |
try { |
| 126 |
allow_invalid_ref => |
112 |
$validator->load_and_validate_schema( |
| 127 |
1, # required by our spec because $ref directly under |
113 |
$self->home->rel_file("api/v1/swagger/swagger.json"), |
| 128 |
# Paths-, Parameters-, Definitions- & Info-object |
114 |
{ |
| 129 |
# is not allowed by the OpenAPI specification. |
115 |
allow_invalid_ref => 1, |
| 130 |
} |
116 |
schema => ( $swagger_schema ) ? $swagger_schema : undef, |
| 131 |
); |
117 |
} |
|
|
118 |
); |
| 119 |
|
| 120 |
$spec = $validator->schema->data; |
| 121 |
$self->plugin( |
| 122 |
'Koha::REST::Plugin::PluginRoutes' => { |
| 123 |
spec => $spec, |
| 124 |
validator => $validator |
| 125 |
} |
| 126 |
) unless C4::Context->needs_install; # load only if Koha is installed |
| 127 |
|
| 128 |
$self->plugin( |
| 129 |
OpenAPI => { |
| 130 |
spec => $spec, |
| 131 |
route => $self->routes->under('/api/v1')->to('Auth#under'), |
| 132 |
allow_invalid_ref => |
| 133 |
1, # required by our spec because $ref directly under |
| 134 |
# Paths-, Parameters-, Definitions- & Info-object |
| 135 |
# is not allowed by the OpenAPI specification. |
| 136 |
} |
| 137 |
); |
| 138 |
} |
| 139 |
catch { |
| 140 |
# JSON::Validator uses confess, so trim call stack from the message. |
| 141 |
croak "Could not load REST API spec: " . ($_ =~ /\A(.*?)$/ms)[0]; |
| 142 |
}; |
| 132 |
}; |
143 |
}; |
| 133 |
|
144 |
|
| 134 |
$self->plugin( 'Koha::REST::Plugin::Pagination' ); |
145 |
$self->plugin( 'Koha::REST::Plugin::Pagination' ); |
| 135 |
- |
|
|