File Coverage

blib/lib/OpenSearch/Client/Cxn/Factory.pm
Criterion Covered Total %
statement 20 20 100.0
branch n/a
condition n/a
subroutine 6 6 100.0
pod 0 2 0.0
total 26 28 92.8


line stmt bran cond sub pod time code
1             # OpenSearch::Client is an unofficial client for OpenSearch.
2             # It is derived from Search::Elasticsearch version 7.714
3             # License details from the original work are contained in the
4             # NOTICE file distributed with this work.
5             #
6             #-----------------------------------------------------------------------
7             # OpenSearch::Client
8             #-----------------------------------------------------------------------
9             # Copyright 2026 Mark Dootson
10             #
11             # Licensed under the Apache License, Version 2.0 (the "License");
12             # you may not use this file except in compliance with the License.
13             # You may obtain a copy of the License at
14             #
15             # http://www.apache.org/licenses/LICENSE-2.0
16             #
17             # Unless required by applicable law or agreed to in writing, software
18             # distributed under the License is distributed on an "AS IS" BASIS,
19             # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
20             # See the License for the specific language governing permissions and
21             # limitations under the License.
22              
23             package OpenSearch::Client::Cxn::Factory;
24             $OpenSearch::Client::Cxn::Factory::VERSION = '3.007002';
25 55     55   26773 use Moo;
  55         101  
  55         346  
26 55     55   18624 use OpenSearch::Client::Util qw(parse_params load_plugin);
  55         291  
  55         518  
27 55     55   17339 use namespace::clean;
  55         262  
  55         421  
28              
29             has 'cxn_class' => ( is => 'ro', required => 1 );
30             has '_factory' => ( is => 'ro', required => 1 );
31             has 'default_host' => ( is => 'ro', default => 'http://localhost:9200' );
32             has 'max_content_length' => ( is => 'rw', default => 104_857_600 );
33              
34             #===================================
35             sub BUILDARGS {
36             #===================================
37 100     100 0 57811 my ( $class, $params ) = parse_params(@_);
38 100         325 my %args = (%$params);
39 100         190 delete $args{nodes};
40              
41             my $cxn_class
42 100         244 = load_plugin( 'OpenSearch::Client::Cxn', delete $args{cxn} );
43             $params->{_factory} = sub {
44 175     175   484 my ( $self, $node ) = @_;
45 175         2617 $cxn_class->new(
46             %args,
47             node => $node,
48             max_content_length => $self->max_content_length
49             );
50 100         2126 };
51 100         216 $params->{cxn_args} = \%args;
52 100         235 $params->{cxn_class} = $cxn_class;
53 100         1856 return $params;
54             }
55              
56             #===================================
57 175     175 0 633 sub new_cxn { shift->_factory->(@_) }
58             #===================================
59              
60             1;
61              
62             __END__