diff --git a/lib/NGCP/BulkProcessor/Projects/Migration/Teletek/Provisioning.pm b/lib/NGCP/BulkProcessor/Projects/Migration/Teletek/Provisioning.pm index dc3923b..3032589 100644 --- a/lib/NGCP/BulkProcessor/Projects/Migration/Teletek/Provisioning.pm +++ b/lib/NGCP/BulkProcessor/Projects/Migration/Teletek/Provisioning.pm @@ -7,7 +7,7 @@ use threads::shared qw(); use String::MkPasswd qw(); #use List::Util qw(); -use JSON qw(); +use JSON -support_by_pp, -no_export; use Tie::IxHash; use NGCP::BulkProcessor::Projects::Migration::Teletek::Settings qw( diff --git a/lib/NGCP/BulkProcessor/Projects/t/create_subscriber.t b/lib/NGCP/BulkProcessor/Projects/t/create_subscriber.t index 5fe0dda..1cadafd 100644 --- a/lib/NGCP/BulkProcessor/Projects/t/create_subscriber.t +++ b/lib/NGCP/BulkProcessor/Projects/t/create_subscriber.t @@ -1,5 +1,5 @@ use Net::Domain qw(hostfqdn); -use JSON qw(); +use JSON -support_by_pp, -no_export; use Test::More; use Data::Dumper; use LWP::UserAgent; diff --git a/lib/NGCP/BulkProcessor/RestConnectors/NGCPRestApi.pm b/lib/NGCP/BulkProcessor/RestConnectors/NGCPRestApi.pm index ddc8f50..7c4c157 100644 --- a/lib/NGCP/BulkProcessor/RestConnectors/NGCPRestApi.pm +++ b/lib/NGCP/BulkProcessor/RestConnectors/NGCPRestApi.pm @@ -8,7 +8,9 @@ use threads::shared qw(shared_clone); use HTTP::Status qw(:constants :is status_message); -use JSON qw(); +use Encode qw(); + +use JSON -support_by_pp, -no_export; use IO::Uncompress::Unzip qw(); use NGCP::BulkProcessor::Globals qw( @@ -28,7 +30,7 @@ use NGCP::BulkProcessor::LogError qw( fileerror ); -use NGCP::BulkProcessor::RestConnector qw(_add_headers); +use NGCP::BulkProcessor::RestConnector qw(_add_headers convert_bools); use NGCP::BulkProcessor::Calendar qw(get_fake_now_string); @@ -61,6 +63,9 @@ my $faketime_header = 'X-Fake-Clienttime'; our $ITEM_REL_PARAM = 'item_rel'; #my $logger = getlogger(__PACKAGE__); +my $request_charset = 'utf-8'; +my $response_charset = 'utf-8'; + sub _get_api_cert_dir { return $working_path . $API_CERT_DIR; } @@ -187,13 +192,16 @@ sub _init_ssl_cert { sub _encode_request_content { my $self = shift; my ($data) = @_; - return JSON::to_json($data); + return Encode::encode($request_charset,JSON::to_json($data,{ allow_nonref => 1, allow_blessed => 1, convert_blessed => 1, pretty => 0, })); } sub _decode_response_content { my $self = shift; my ($data) = @_; - return ($data ? JSON::from_json($data) : undef); + my $decoded; + $decoded = JSON::from_json(Encode::decode($response_charset,$data),{ allow_nonref => 1, }) if $data; + convert_bools($decoded); + return $decoded // $data; } sub _add_post_headers { diff --git a/lib/NGCP/BulkProcessor/Serialization.pm b/lib/NGCP/BulkProcessor/Serialization.pm index 57c5c18..cbbfcef 100755 --- a/lib/NGCP/BulkProcessor/Serialization.pm +++ b/lib/NGCP/BulkProcessor/Serialization.pm @@ -45,7 +45,7 @@ use MIME::Base64 qw(encode_base64 decode_base64); #http://blogs.perl.org/users/steven_haryanto/2010/09/comparison-of-perl-serialization-modules.html use Storable; # qw( nfreeze thaw ); -use JSON qw(); +use JSON -support_by_pp, -no_export; #use JSON::XS; # qw(encode_json decode_json); use Data::Dump; # qw(dump); @@ -168,13 +168,13 @@ sub deserialize_xml { sub serialize_json { my $input_ref = shift; #return JSON::XS::encode_json($input_ref); - return JSON::to_json($input_ref,{ allow_blessed => 1, convert_blessed => 1, pretty => 0 }); + return JSON::to_json($input_ref, { allow_nonref => 1, allow_blessed => 1, convert_blessed => 1, pretty => 0 }); } sub deserialize_json { my $input_ref = shift; #return JSON::XS::decode_json($input_ref); - return JSON::from_json($$input_ref); + return JSON::from_json($$input_ref, { allow_nonref => 1, }); } sub serialize_yaml {