Skip to content

Problem on passing paramethers on GET requests #29

@msileoni

Description

@msileoni

I have found following problem on this code:

my $mediaItemId = 'AOvLn3Qhdjmtc34r4C3GIlYv6pGsf0LMpLdm1Bv05hovVu2virSTwQut0XIKm_rT9UkIBaXOfKGECFuESSkCxymnpebUQJ';
my $media_item;

eval {
    $media_item = $service->mediaItems->get(
        body => {
            mediaItemId => $mediaItemId
        }
    )->execute({ auth_driver => $auth_driver });
};
if ($@) {
    die "Error retrieving media object: $@";
}

The call fails due to this problem:

		>x %required_param
		>	0  'mediaItemId'
		>	1  'AOvLn3Qhdjmtc34r4C3GIlYv6pGsf0LMpLdm1Bv05hovVu2virSTwQut0XIKm_rT9UkIBaXOfKGECFuESSkCxymnpebUQJ'
		>p $url
		>	https://photoslibrary.googleapis.com/v1/mediaItems/{+mediaItemId}
		>p $required_param{mediaItemId}
		>	AOvLn3Qhdjmtc34r4C3GIlYv6pGsf0LMpLdm1Bv05hovVu2virSTwQut0XIKm_rT9UkIBaXOfKGECFuESSkCxymnpebUQJ
		>p $required_param{+mediaItemId}
		>	AOvLn3Qhdjmtc34r4C3GIlYv6pGsf0LMpLdm1Bv05hovVu2virSTwQut0XIKm_rT9UkIBaXOfKGECFuESSkCxymnpebUQJ
		>$p = '+mediaItemId'
		>p $required_param{$p}
		>
		>p $p
		>	+mediaItemId
		>($p) = ($url =~ /{([^}]+)}/)			<--- Original Reg Ex
		>p $p
		>	+mediaItemId
		>p $required_param{$p}
		>
		>($p) = ($url =~ /{\+([^}]+)}/)			<--- Fixed Reg Ex
		>p $required_param{$p}
			AOvLn3Qhdjmtc34r4C3GIlYv6pGsf0LMpLdm1Bv05hovVu2virSTwQut0XIKm_rT9UkIBaXOfKGECFuESSkCxymnpebUQJ

I have solved the problem by following fix on lib/Google/API/Method.pm file:

	  	-    $url =~ s/{([^}]+)}/uri_escape(delete $required_param{$1})/eg;
		+    $url =~ s/{\+([^}]+)}/uri_escape(delete $required_param{$1})/eg;

Hope it helps :)

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions