]> git.evergreen-ils.org Git - Evergreen.git/blob - Open-ILS/src/perlmods/lib/Template/Plugin/ResolverResolver.pm
Merge remote-tracking branch 'eg-working/user/berick/hold-current-shelf-lib'
[Evergreen.git] / Open-ILS / src / perlmods / lib / Template / Plugin / ResolverResolver.pm
1 #
2 # OpenILS::Template::Plugin::ResolverResolver
3 #
4 # DESCRIPTION
5 #
6 #   Simple Template Toolkit Plugin which hooks into Dan Scott's Resolver
7 #
8 # AUTHOR
9 #   Art Rhyno <http://projectconifer.ca>
10 #
11 # COPYRIGHT
12 #   Copyright (C) 2011
13 #
14 # LICENSE
15 # GNU General Public License v2 or later
16 #
17 #============================================================================
18
19 package Template::Plugin::ResolverResolver;
20
21 use strict;
22 use warnings;
23 use base 'Template::Plugin';
24 use OpenILS::Application::ResolverResolver;
25 use OpenILS::Application;
26 use base qw/OpenILS::Application/;
27 use OpenSRF::AppSession;
28
29
30 our $VERSION = 0.9;
31
32 sub load {
33     my ( $class, $context ) = @_;
34     return $class;
35 }   
36
37 sub new { 
38     my ( $class, $context, @params ) = @_;
39
40     bless { _CONTEXT => $context, }, $class;   
41
42
43 # monkeypatch ResolverResolver::params() method to Do The Right Thing in TT land
44
45 sub ResolverResolver::params {
46     my $self = shift;
47     local $" = ', ';
48
49     return $self->{ _TT_PARAMS } ||= do {
50         # must call Vars() in a list context to receive
51         # plain list of key/vals rather than a tied hash
52         my $params = { $self->Vars() };
53
54         # convert any null separated values into lists
55         @$params{ keys %$params } = map { 
56             /\0/ ? [ split /\0/ ] : $_ 
57         } values %$params;
58
59         $params;
60     };
61 }
62
63 sub resolve_issn
64 {
65     my ($class, $issn, $baseurl, $timeout) = @_;
66
67     if (length($issn) <= 9) {
68            my $session = OpenSRF::AppSession->create("open-ils.resolver");
69         
70            my $request = $session->request("open-ils.resolver.resolve_holdings.raw", "issn", $issn, $baseurl, $timeout)->gather();
71            if ($request) {
72                  return $request;
73            }
74            $session->disconnect();
75     }
76         
77     return "";
78 }
79
80 sub resolve_isbn
81 {
82     my ($class, $isbn, $baseurl, $timeout) = @_;
83
84     my $session = OpenSRF::AppSession->create("open-ils.resolver");
85         
86     my $request = $session->request("open-ils.resolver.resolve_holdings.raw", "isbn", $isbn, $baseurl, $timeout)->gather();
87         
88     if ($request) {
89             return $request;
90     }
91     $session->disconnect();
92         
93     return "";
94 }
95
96
97 1;
98