# NAME

LWP::UserAgent::DNS::Hosts - Override LWP HTTP/HTTPS request's host like /etc/hosts

# SYNOPSIS

   use LWP::UserAgent;
   use LWP::UserAgent::DNS::Hosts;

   # add entry
   LWP::UserAgent::DNS::Hosts->register_host(
       'www.cpan.org' => '127.0.0.1',
   );

   # add entries
   LWP::UserAgent::DNS::Hosts->register_hosts(
       'search.cpan.org' => '192.168.0.100',
       'pause.perl.org'  => '192.168.0.101',
   );

   # read hosts file
   LWP::UserAgent::DNS::Hosts->read_hosts('/path/to/my/hosts');

   LWP::UserAgent::DNS::Hosts->enable_override;

   # override request hosts with peer addr defined above
   my $ua  = LWP::UserAgent->new;
   my $res = $ua->get("http://www.cpan.org/");
   print $res->content; # is same as "http://127.0.0.1/" content

# DESCRIPTION

LWP::UserAgent::DNS::Hosts is a module to override HTTP/HTTPS request
peer addresses that uses LWP::UserAgent.

This module concept was got from [LWP::Protocol::PSGI](https://metacpan.org/pod/LWP::Protocol::PSGI).

# METHODS

- register\_host($host, $peer\_addr)

       LWP::UserAgent::DNS::Hosts->register_host($host, $peer_addr);

   Registers a pair of hostname and peer ip address.

       # /etc/hosts
       127.0.0.1    example.com

   equals to:

       LWP::UserAgent::DNS::Hosts->regiter_hosts('example.com', '127.0.0.1');

- register\_hosts(%host\_addr\_pairs)

       LWP::UserAgent::DNS::Hosts->register_hosts(
           'example.com' => '192.168.0.1',
           'example.org' => '192.168.0.2',
           ...
       );

   Registers pairs of hostname and peer ip address.

- read\_hosts($file\_or\_string)

       LWP::UserAgent::DNS::Hosts->read_hosts('hosts.my');

       LWP::UserAgent::DNS::Hosts->read_hosts(<<'__HOST__');
           127.0.0.1      example.com
           192.168.0.1    example.net example.org
       __HOST__

   Registers "/etc/hosts" syntax entries.

- clear\_hosts

   Clears registered pairs.

- enable\_override

       LWP::UserAgent::DNS::Hosts->enable_override;
       my $guard = LWP::UserAgent::DNS::Hosts->enable_override;

   Enables to override hook.

   If called in a non-void context, returns a [Guard](https://metacpan.org/pod/Guard) object that
   automatically resets the override when it goes out of context.

- disable\_override

       LWP::UserAgent::DNS::Hosts->disable_override;

   Disables to override hook.

   If you use the guard interface described above,
   it will be automatically called for you.

# AUTHOR

NAKAGAWA Masaki <[email protected]>

# LICENSE

This library is free software; you can redistribute it and/or modify
it under the same terms as Perl itself.

# SEE ALSO

[LWP::Protocol](https://metacpan.org/pod/LWP::Protocol), [LWP::Protocol::http](https://metacpan.org/pod/LWP::Protocol::http), [LWP::Protocol::https](https://metacpan.org/pod/LWP::Protocol::https)