From bb14424105bd3d74a0de5ed377ca4b51652a6f9a Mon Sep 17 00:00:00 2001 From: Rene Krenn Date: Fri, 24 Oct 2025 14:56:02 +0200 Subject: [PATCH] MT#61442 allow utf8 for creating data::hal links prevent api 500 error when building urls in data::hal from item data tha carry odd utf8 fields (ie. usernames of banned users) Change-Id: I0c2c0bf0170bf97bf8a05c35fdb343860b6aeef4 (cherry picked from commit 3ff0395cacb0d7b1439a5c1994fac7437f09c4b0) --- lib/NGCP/Panel/Role/API.pm | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/lib/NGCP/Panel/Role/API.pm b/lib/NGCP/Panel/Role/API.pm index 0503281483..586c256fe9 100644 --- a/lib/NGCP/Panel/Role/API.pm +++ b/lib/NGCP/Panel/Role/API.pm @@ -6,7 +6,7 @@ use parent qw/NGCP::Panel::Role::Journal/; use NGCP::Panel::Utils::Generic qw(:all); use boolean qw(true); -use URI::Escape qw(uri_escape); +use URI::Escape qw(uri_escape_utf8); use Safe::Isa qw($_isa $_can); use Storable qw(); use JSON qw(); @@ -1158,21 +1158,21 @@ sub apply_query_params { $item_rs = $item_rs->search($sub_where->($q,$c), $sub_attributes->($q,$c)); } } - + #use DBIx::Class::Helper::ResultSet::Explain qw(); #use Data::Dumper; #$c->log->debug(Dumper(DBIx::Class::Helper::ResultSet::Explain::explain($item_rs))); - + return $item_rs; } sub _get_sorted_query_params { my ($c,$query_params) = @_; - + my %unknown = %{$c->req->query_params}; my @sorted = (); - + # 1. add non-dummy query parameters found: # keep order of query params as defined in the source, but put those with new_rs # at the beginning (narrow part results as much as possible as early as possible) @@ -1187,10 +1187,10 @@ sub _get_sorted_query_params { } } } - + # 2. add unknown query parameters: push(@sorted, keys %unknown); - + return @sorted; } @@ -1325,7 +1325,7 @@ sub hal_from_item { href => $self->apply_mandatory_parameters($c, 'item', sprintf( "%s%s", $self->dispatch_path, - uri_escape($self->get_item_id($c, $item)) + uri_escape_utf8($self->get_item_id($c, $item)) ), $item, $resource, $params), ), Data::HAL::Link->new( @@ -1333,11 +1333,11 @@ sub hal_from_item { href => $self->apply_mandatory_parameters($c, 'item', sprintf( "/api/%s/%s", $self->resource_name, - uri_escape($self->get_item_id($c, $item)) + uri_escape_utf8($self->get_item_id($c, $item)) ), $item, $resource, $params) ), @$links, - $self->get_journal_relation_link($c, uri_escape($self->get_item_id($c, $item))), + $self->get_journal_relation_link($c, uri_escape_utf8($self->get_item_id($c, $item))), ], relation => 'ngcp:'.$self->resource_name, );