SXXXXXXX_ControlPanel/sar_images/exiftool_files/lib/CryptX.pm
2025-10-16 09:52:34 +02:00

58 lines
1.3 KiB
Perl

package CryptX;
use strict;
use warnings ;
our $VERSION = '0.069';
require XSLoader;
XSLoader::load('CryptX', $VERSION);
use Carp;
my $has_json;
BEGIN {
if (eval { require Cpanel::JSON::XS }) {
Cpanel::JSON::XS->import(qw(encode_json decode_json));
$has_json = 1;
}
elsif (eval { require JSON::XS }) {
JSON::XS->import(qw(encode_json decode_json));
$has_json = 2;
}
elsif (eval { require JSON::PP }) {
JSON::PP->import(qw(encode_json decode_json));
$has_json = 3;
}
else {
$has_json = 0;
}
}
sub _croak {
die @_ if ref $_[0] || !$_[-1];
if ($_[-1] =~ /^(.*)( at .+ line .+\n$)/s) {
pop @_;
push @_, $1;
}
die Carp::shortmess @_;
}
sub _decode_json {
croak "FATAL: cannot find JSON::PP or JSON::XS or Cpanel::JSON::XS" if !$has_json;
decode_json(shift);
}
sub _encode_json {
croak "FATAL: cannot find JSON::PP or JSON::XS or Cpanel::JSON::XS" if !$has_json;
my $data = shift;
my $rv = encode_json($data); # non-canonical fallback
return(eval { Cpanel::JSON::XS->new->canonical->encode($data) } || $rv) if $has_json == 1;
return(eval { JSON::XS->new->canonical->encode($data) } || $rv) if $has_json == 2;
return(eval { JSON::PP->new->canonical->encode($data) } || $rv) if $has_json == 3;
return($rv);
}
1;
#line 136