Skip Menu |

This queue is for tickets about the Reddit-Client CPAN distribution.

Report information
The Basics
Id: 110585
Status: new
Priority: 0/
Queue: Reddit-Client

People
Owner: Nobody in particular
Requestors: davidnmfarrell [...] gmail.com
Cc:
AdminCc:

Bug Information
Severity: (no value)
Broken in: (no value)
Fixed in: (no value)



Subject: Encode token requests
Date: Thu, 24 Dec 2015 10:53:14 -0500
To: bug-Reddit-Client [...] rt.cpan.org
From: David Farrell <davidnmfarrell [...] gmail.com>
Reddit::Client::Request::token_request does not percent encode the form content before submitting to Reddit. This causes the authentication to fail when a user's credentials include URI reserved characters. (the HTTP request succeeds but the JSON returned just contains an error message). Here is a patched sub: sub token_request { my ($self, $client_id, $secret, $username, $password, $useragent) = @_; my $url = "https://$client_id:$secret\@www.reddit.com/api/v1/access_token "; my $ua = LWP::UserAgent->new(user_agent => $useragent); my $req = HTTP::Request->new(POST => $url); $req->header('content-type' => 'application/x-www-form-urlencoded'); my $encoder = URI::Encode->new( {encode_reserved => 1 }); my $postdata = sprintf('grant_type=password&username=%s&password=%s', $encoder->encode($username), $encoder->encode($password) ); $req->content($postdata); my $res = $ua->request($req); if ($res->is_success) { return $res->decoded_content; } else { croak sprintf('Request error: HTTP %s', $res->status_line); }