Changes
=======

All changes by Daisuke Maki unless otherwise noted.

0.08012 Sun Oct 14 2007 [rev 175]
  - *Backwards Incompatible Change*
    - Gungho::Log has been totally redesigned the following methods are
      now deprecated. Calling $c->debug(...) and such still work, but
      log setup has been completely changed.
      is_debug() and friends still exist, but they have been deprecated,
      and always return false.
    - engine.send_request hook has been moved to *right* before the 
      request is sent
  - Introduce Gungho::Log::Dispatch. Gungho::Log has now been re-implemented
    as Gugho::Log::Simple.
  - Introduce Gungho::Plugin::RequestLog

0.08011 Wed Oct 10 2007 [rev 166]
  - Fix problems with RobotRules::Storage::* not properly accepting
    configuration parameters.
  - RobotRules::Storage::* now accept a $c in the first argument

0.08010 Wed Oct 10 2007 [rev 158]
  - Accept Data::Throttler::Memcached as the throttling engine as well.

0.08009 Mon Oct 01 2007 [rev 157]
  - New Cache component! Now you can cache anything, anywhere in your app.

0.08008 Mon Oct 01 2007 [rev 155]
  [General]
  - Make sure that the URI object is one that has the host() method at
    various places
  - Make block_private_ip_address() to accept an URI object.

  [Tests]
  - Disable localhost tests, as there are environments where this doesn't
    work.

0.08007 Sat Sep 29 2007 [rev 149]
  [RobotRules]
  - Fix how parameters are passed
  - Fixed a problem where Gungho would go in an infinite loop, if robots.txt 
    didn't exist. 

0.08006 Fri Sep 28 2007 [rev 145]
  [General]
  - Fix double-setting the host header. Reported by Keiichi Okabe
  - Fix Gungho::Request->clone to actually clone the contents of notes()
  - Attempt to use DNS lookup result from previous request, if the
    request has been cloned.

0.08005 Mon Sep 03 2007 [rev 142]
  [General]
  - Add docs
  - Fix dependencies
  - Properly receive user_agent from config

  [POE Engine]
  - Make sure that client: agent: is respected. However, this is an exception
    in the POE engine. If you are using only one user agent, you should be
    using user_agent. Reported by Keiichi Okabe

  [Tests]
  - Added t/03_live/twitter.t, but twitter is currently responding with
    urls like balancer://twitter_cluster/statuses/update.json, so it will
    most likely fail anyway.

0.08004 Wed Jul 25 2007 [rev 130]
  [General]
  - Previously block_private_address was blocking all addreses.
    Fixed (Kazuho Oku)
  - Previously private addresses were only checked after a DNS resolution.
    Now given an address that contains IP addresses to begin with are
    also checked (Kazuho Oku)
  - Local addresses other than loopback (127.0.0.1) are also checked.

  [POE Engine]
  - Parameters can now be passed to PoCo::Client::DNS (Kazuho Oku)

  [Build]
  - Retooled the tests.
  - Fixed requires list.

0.08003 Mon May 28 2007 
  - *Backwards Incomptible Change*
    - 127.0.0.1 is now considered a private IP address, when 
      block_private_ip_address is in use (Kazuho Oku).
  - 192.160.*.* was being considered a private IP address instead of
    192.168.*.* (Kazuho Oku).
  - The handler wasn't properly called when DNS lookups failed (Kazuho Oku)
  - Fix t/03_live/perl.t to reflect recent API changes.

0.08002 Tue May 15 2007 [rev 111]
  - Some remaining pieces of code that were assuming Gungho to be an
    object failed to execute at Class::Accessor::Fast. Spotted by
    Keiichi Okabe.
  - Make sure to force robots.txt request to be query-less and fragment-less

0.08001 Tue May 15 2007 [rev 108]
  - No code change
  - Doc blunder
  - Hide HTTP::Response from PAUSE

0.08 Tue May 15 2007 [rev 107]
  - *API Incompatiblity*
    - Gungho::Inline->run()'s parameter list changed so that it can accept
      a config file name (or a hashref, like Gungho->run), and a second
      hashref that contains the code references.
    - Parameter ordering for Gungho::Inline's provider and handler has been
      changed so that it resembles that of regular providers and handlers
    - The old behavior for both of the above changes are still preserved
      if you specify the GUNGHO_INLINE_OLD_PARAMETER_LIST environment
      variable, or if you specify sub Gungho::Inline::OLD_PARAMETER_LIST { 1 }
  - Implement blocking of private DNS names from lookups. By default
    this is disabled. To enable, set block_private_ip_address
  - So that method names for POE events are clearly marked as such,
    all methods that are mapped to POE events in Engine::POE are now
    prefixed with _poe_* (including private methods)
  - Change the way components are invoked. Components are now invoked via
    maybe::next::method() chain, and if a component should want to stop
    processing somewhere in the chain, it should raise an exception
  - Add Gunghoe::Component::RobotRules
  - GUNGHO_DEBUG environment variable is now respeced
  - Don't throttle (again) a request if it has gone through DNS-resolution 
    path internally.

0.07 Tue May 08 2007 [rev 90]
  - Add asynchronous DNS lookups for POE, IO::Async, Danga::Socket engines
  - Add dependency on Danga::Socket::Callback, if we're using Danga::Socket engine

0.06 Tue May 08 2007 [rev 85]
  - Add a new engine based on IO::Async
  - Add a simple FileWriter handler
  - Fix documentation and remove ->new()
  - Fix documentation and add contributors
  - Tweak the user-agent
  - Add optional deps for Class::C3::XS

0.05 Sun May 06 2007 [rev 71]
  - *API Incompatiblity*
    - Gungho->new has been deprecated in favor of a simple call to ->run()
    - Gungho::Inline->new has been deprecated
  - Fix SKIP_DECODED_CONTENT handling by properly specifying a package.
    POE workaround should now work.
  - Gungho::Engine::POE will set FollowRedirect to 1 by default.

0.04 Tue Apr 17 2007 [rev 61]
  - Add Gungho::Inline - thanks to Kazuho Oku
  - Add way to control logging behavior
  - Allow comments in files for Provider::Simple
  - Work around POE trying to decode contents for us.

0.03 Thu Apr 12 2007 [rev 51]
  - Add simple examples at examples directory
  - Add Danga::Socket engine -- this is a pretty crude implementation
  - Add documentation.
  - Fix G::Request's ID generation
  - Change pushback_request()'s signature to include a $c

0.02_05 Wed Apr 11 2007 [rev. 41]
  - Provider::Simple wasn't exactly prepared for the new code path.
    Fixed, and tested with Plagger

0.02_04 Wed Apr 11 2007
  - Throttle::Domain was actually checking for URL, not domains.

0.02_03 Wed Apr 11 2007
  - Packaging blunder. Add dep files for Throttle components

0.02_02 Wed Apr 11 2007
  - Add a gungho script
  - Add throttling. You can now throttle your requests by domain or
    simply by the number of requests in a specific amount of time.
    Providers are now expected to handle "pushback" of requests when
    a request has been throttled.
  - Internal change: Code path to send requests has changed from
    Gungho.pm doing the control to Provider doing the control

0.02_01 Tue Apr 10 2007
  - Add experimental component system
    >>> NOTE <<< This is still subject to change *widely*
  - Add Gungho->has_feature(X)
  - Add WWW Authentication component -- now you can authenticate
    your requests via Basic authentication
  - Fix Gungho::Request->clone()
  - Gungho::Provider::Simple respects the is_running() flag

0.02 Mon Apr 09 2007
  - Fix stupid bug in Gungho::Request
  - Change the call syntax for G::Component->new(\%config) to 
    G::Component->(config => \%config, %other_args)
  - send_request() takes the context object as well
  - Implement plugins
  - Add G::Plugin::RequestTimer
  - Add deps features in Makefile.PL 

0.01 Sat 07 Apr 2007
  - handle_response() now take $request and $response all over
  - Add send_request() in Gungho.pm, Gungho/Engine/POE.pm
  - Add notes() in Gungho/Request.pm. Cloning is properly handled

0.01_04 Sat 07 Apr 2007
  - Enable keepalive

0.01_03 Fri 06 Apr 2007
  - Fix embarassing documentation whoopla. As stated, no,
    I'm not ashamed of stealing good code. 

0.01_02 Fri 06 Apr 2007
  - Add a new provider and small set of changes so that we can
    use this in Plagger
  - Use Class::Inspector to check if a module has been loaded

0.01_01 Fri 06 Apr 2007 "It's right after YAPC" release
  - Alpha release.
