| line |
stmt |
bran |
cond |
sub |
pod |
time |
code |
|
1
|
20
|
|
|
20
|
|
287
|
use v5.14; |
|
|
20
|
|
|
|
|
126
|
|
|
2
|
20
|
|
|
20
|
|
111
|
use warnings; |
|
|
20
|
|
|
|
|
42
|
|
|
|
20
|
|
|
|
|
1420
|
|
|
3
|
|
|
|
|
|
|
|
|
4
|
|
|
|
|
|
|
package Neo4j::Driver::ServerInfo 1.02; |
|
5
|
|
|
|
|
|
|
# ABSTRACT: Provides Neo4j server address and version |
|
6
|
|
|
|
|
|
|
|
|
7
|
|
|
|
|
|
|
|
|
8
|
20
|
|
|
20
|
|
114
|
use Carp qw(croak); |
|
|
20
|
|
|
|
|
49
|
|
|
|
20
|
|
|
|
|
1689
|
|
|
9
|
|
|
|
|
|
|
our @CARP_NOT = qw(Neo4j::Driver::Session); |
|
10
|
20
|
|
|
20
|
|
167
|
use Feature::Compat::Try; |
|
|
20
|
|
|
|
|
135
|
|
|
|
20
|
|
|
|
|
198
|
|
|
11
|
20
|
|
|
20
|
|
4146
|
use URI 1.25; |
|
|
20
|
|
|
|
|
8179
|
|
|
|
20
|
|
|
|
|
10290
|
|
|
12
|
|
|
|
|
|
|
|
|
13
|
|
|
|
|
|
|
|
|
14
|
|
|
|
|
|
|
sub new { |
|
15
|
|
|
|
|
|
|
# uncoverable pod (private method) |
|
16
|
90
|
|
|
90
|
0
|
345800
|
my ($class, $server_info) = @_; |
|
17
|
|
|
|
|
|
|
|
|
18
|
|
|
|
|
|
|
# don't store the full URI here - it may contain auth credentials |
|
19
|
90
|
|
|
|
|
540
|
$server_info->{uri} = URI->new( $server_info->{uri} )->host_port; |
|
20
|
|
|
|
|
|
|
|
|
21
|
90
|
|
|
|
|
13129
|
return bless $server_info, $class; |
|
22
|
|
|
|
|
|
|
} |
|
23
|
|
|
|
|
|
|
|
|
24
|
|
|
|
|
|
|
|
|
25
|
2
|
|
|
2
|
1
|
1266
|
sub address { shift->{uri} } |
|
26
|
180
|
|
|
180
|
1
|
3837
|
sub agent { shift->{version} } |
|
27
|
|
|
|
|
|
|
|
|
28
|
|
|
|
|
|
|
|
|
29
|
|
|
|
|
|
|
sub protocol_version { |
|
30
|
|
|
|
|
|
|
shift->{protocol} |
|
31
|
3
|
|
|
3
|
1
|
2594
|
} |
|
32
|
|
|
|
|
|
|
|
|
33
|
|
|
|
|
|
|
|
|
34
|
|
|
|
|
|
|
sub version { |
|
35
|
|
|
|
|
|
|
# uncoverable pod (see agent) |
|
36
|
1
|
|
|
1
|
0
|
99
|
warnings::warnif deprecated => "version() in Neo4j::Driver::ServerInfo is deprecated; use agent() instead"; |
|
37
|
1
|
|
|
|
|
1516
|
&agent; |
|
38
|
|
|
|
|
|
|
} |
|
39
|
|
|
|
|
|
|
|
|
40
|
|
|
|
|
|
|
|
|
41
|
|
|
|
|
|
|
# discover default database on Neo4j >= 4 using the given driver config |
|
42
|
|
|
|
|
|
|
sub _default_database { |
|
43
|
83
|
|
|
83
|
|
7195
|
my ($self, $driver) = @_; |
|
44
|
|
|
|
|
|
|
|
|
45
|
83
|
|
|
|
|
177
|
my $database = $self->{default_database}; |
|
46
|
83
|
100
|
|
|
|
321
|
return $database if defined $database; |
|
47
|
|
|
|
|
|
|
|
|
48
|
56
|
100
|
|
|
|
362
|
return if $self->{version} =~ m{^Neo4j/[123]\.}; |
|
49
|
52
|
|
|
|
|
119
|
try { |
|
50
|
52
|
|
|
|
|
305
|
my $sys = $driver->session(database => 'system'); |
|
51
|
52
|
|
|
|
|
280
|
$database = $sys->run('SHOW DEFAULT DATABASE')->single->get('name'); |
|
52
|
|
|
|
|
|
|
} |
|
53
|
|
|
|
|
|
|
catch ($e) { |
|
54
|
|
|
|
|
|
|
croak sprintf |
|
55
|
|
|
|
|
|
|
"%sSession creation failed because the default database of %s at %s could not be determined", |
|
56
|
3
|
|
|
|
|
5888
|
$e, $self->{version}, $self->{uri}; |
|
57
|
|
|
|
|
|
|
} |
|
58
|
49
|
|
|
|
|
261
|
return $self->{default_database} = $database; |
|
59
|
|
|
|
|
|
|
} |
|
60
|
|
|
|
|
|
|
|
|
61
|
|
|
|
|
|
|
|
|
62
|
|
|
|
|
|
|
1; |
|
63
|
|
|
|
|
|
|
|
|
64
|
|
|
|
|
|
|
__END__ |