Skip Menu |

This queue is for tickets about the libwww-perl CPAN distribution.

Report information
The Basics
Id: 17966
Status: resolved
Priority: 0/
Queue: libwww-perl

Owner: Nobody in particular
Requestors: polettix [...]

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

Subject: DWIMmy LWP::UserAgent::credentials()
Download (untitled) / with headers
text/plain 1.6k
Browsing the code, we have the credentials() method that uses the given $netloc directly when populating the hash of basic_authentication: sub credentials { my($self, $netloc, $realm, $uid, $pass) = @_; @{ $self->{'basic_authentication'}{lc($netloc)}{$realm} } = ($uid, $pass); } while get_basic_credentials(), that receives a URI, uses host_port() on the $uri parameter before accessing the very same hash: sub get_basic_credentials { my($self, $realm, $uri, $proxy) = @_; return if $proxy; my $host_port = lc($uri->host_port); if (exists $self->{'basic_authentication'}{$host_port}{$realm}) { return @{ $self->{'basic_authentication'}{$host_port}{$realm} }; } return (undef, undef); } This makes using credentials() quite difficult, because one has to know that the $netloc should contain the port as well (which I didn't find in the docs). I'd like to share a little patch that would make things a little more DWIM: --- /opt/perl/lib/site_perl/5.8.8/LWP/ 2004-11-12 12:12:04.000000000 +0100 +++ 2006-03-03 18:13:24.214743280 +0100 @@ -552,7 +552,8 @@ sub credentials { my($self, $netloc, $realm, $uid, $pass) = @_; - @{ $self->{'basic_authentication'}{lc($netloc)}{$realm} } = + $netloc = URI->new($netloc) unless ref $netloc; + @{ $self->{'basic_authentication'}{lc($netloc->host_port)}{$realm} } = ($uid, $pass); } As you can see, it basically tries to call the host_port() method on the $netloc parameter, or on its URI incarnation in case $netloc isn't a reference. Just my 2c, and my very compliments for this beautiful piece of code, Flavio.

This service is sponsored and maintained by Best Practical Solutions and runs on infrastructure.

Please report any issues with to