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

(-)a/Koha/REST/V1/Patrons/Image.pm (+74 lines)
Line 0 Link Here
1
package Koha::REST::V1::Patrons::Image;
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 Mojo::Base 'Mojolicious::Controller';
21
22
use Koha::Patrons;
23
24
use Try::Tiny qw( catch try );
25
26
use MIME::Base64 qw( encode_base64 );
27
28
=head1 NAME
29
30
Koha::REST::V1::Patrons::Image
31
32
=head1 API
33
34
=head2 Methods
35
36
=head3 get
37
38
Controller method that gets a patron's image
39
40
=cut
41
42
sub get {
43
    my $c = shift->openapi->valid_input or return;
44
45
    my $patron = Koha::Patrons->find( $c->param('patron_id') );
46
47
    unless ($patron) {
48
        return $c->render(
49
            status  => 404,
50
            openapi => { error => "Patron not found." }
51
        );
52
    }
53
54
    return try {
55
        my $image = $patron->image;
56
57
        unless ($image) {
58
            return $c->render(
59
                status  => 404,
60
                openapi => { error => "Patron image not found." }
61
            );
62
        }
63
64
        return $c->render(
65
            status => 200,
66
            format => "png",              # currently all patron images are converted to png upon upload
67
            data   => $image->imagefile
68
        );
69
    } catch {
70
        $c->unhandled_exception($_);
71
    };
72
}
73
74
1;
(-)a/api/v1/swagger/paths/patrons_image.yaml (+42 lines)
Line 0 Link Here
1
---
2
"/patrons/{patron_id}/default_image":
3
  get:
4
    x-mojo-to: Patrons::Image#get
5
    operationId: getPatronImage
6
    tags:
7
      - patrons
8
    summary: Get image of a patron
9
    parameters:
10
      - $ref: "../swagger.yaml#/parameters/patron_id_pp"
11
    produces:
12
      - image/png
13
    responses:
14
      "200":
15
        description: Patron's image
16
      "401":
17
        description: Authentication required
18
        schema:
19
          $ref: "../swagger.yaml#/definitions/error"
20
      "403":
21
        description: Access forbidden
22
        schema:
23
          $ref: "../swagger.yaml#/definitions/error"
24
      "404":
25
        description: Patron not found
26
        schema:
27
          $ref: "../swagger.yaml#/definitions/error"
28
      "500":
29
        description: |
30
          Internal server error. Possible `error_code` attribute values:
31
32
          * `internal_server_error`
33
        schema:
34
          $ref: "../swagger.yaml#/definitions/error"
35
      "503":
36
        description: Under maintenance
37
        schema:
38
          $ref: "../swagger.yaml#/definitions/error"
39
    x-koha-authorization:
40
      permissions:
41
        - borrowers: "list_borrowers"
42
        - borrowers: "edit_borrowers"
(-)a/api/v1/swagger/swagger.yaml (-1 / +2 lines)
Lines 459-464 paths: Link Here
459
    $ref: "./paths/patrons_holds.yaml#/~1patrons~1{patron_id}~1holds"
459
    $ref: "./paths/patrons_holds.yaml#/~1patrons~1{patron_id}~1holds"
460
  "/patrons/{patron_id}/checkouts":
460
  "/patrons/{patron_id}/checkouts":
461
    $ref: "./paths/patrons_checkouts.yaml#/~1patrons~1{patron_id}~1checkouts"
461
    $ref: "./paths/patrons_checkouts.yaml#/~1patrons~1{patron_id}~1checkouts"
462
  "/patrons/{patron_id}/default_image":
463
    $ref: "./paths/patrons_image.yaml#/~1patrons~1{patron_id}~1default_image"
462
  "/patrons/{patron_id}/password":
464
  "/patrons/{patron_id}/password":
463
    $ref: "./paths/patrons_password.yaml#/~1patrons~1{patron_id}~1password"
465
    $ref: "./paths/patrons_password.yaml#/~1patrons~1{patron_id}~1password"
464
  "/patrons/{patron_id}/password/expiration_date":
466
  "/patrons/{patron_id}/password/expiration_date":
465
- 

Return to bug 35797