CGI-Info
view release on metacpan or search on metacpan
Revision history for CGI-Info
1.14 Thu Jul 23 21:29:19 EDT 2026
[ Enhancements ]
- Add is_ai() method: returns true for known AI training/inference crawlers (ClaudeBot, GPTBot, PerplexityBot, CCBot, etc.)
browser_type() now returns 'ai' for these visitors
- More helpful error message on "Multipart/form-data not supported"
- Set status to 501 when attempting to upload to a place that doesn't take uploads
- Log the invalid method type
- Clone path now validates logger and croaks on deprecated expect argument, matching the normal construction path
- Clone path deletes cached paramref so a new allow schema is applied on the first params() call
- Upgrade t/40-more.t from Test::MockModule to Test::Mockingbird; fix three pre-existing test bugs now exposed
- Add use autodie qw(:all) and Readonly constants ($MAX_UPLOAD_SIZE_DEFAULT, $CACHE_TTL_ROBOT, $CACHE_TTL_SEARCH) to eliminate magic numbers
- Fix UNIVERSAL::isa() deprecation warning in _find_paths(): replaced with proper ->isa() call
- Remove dead commented-out expect and interactive debug blocks from params()
- Fix reversed referrer logic in is_robot(): now correctly checks if the HTTP_REFERER starts with a known crawler URL
- Add API SPECIFICATION, MESSAGES and FORMAL SPECIFICATION sections to param() POD
- Add t/locales.t: tests system-locale (POSIX LC_ALL) error-path invariance under en_US.UTF-8, de_DE.UTF-8, and zh_CN.UTF-8; geographic GeoIP subtests skipped unless IP::Country::Fast is installed
- Rewrite t/function.t: Test::Most, Test::Returns, Test::Memory::Cycle, Readonly constants, white-box tests for _log/_warn/_error/_get_env/_create_file_name/_untaint_filename, $_ clobbering tests
- Use Sub::Protected
- Remove subroutine prototype from _sanitise_input forward declaration and definition
- Replace explicit return undef with return in _get_env
- Rename FIXME in _log to a Note
- Fix spelling of overridden in POD comments
- Add Readonly to PREREQ_PM in Makefile.PL
- Refactor bin/info.pl to use cookie() instead of deprecated get_cookie() and improve cookie parsing split regex
[ Bug fixes]
- Fix bin/info.pl: add use autodie qw(:all); replace bare foreach(keys(%FORM)) with for my $key (sort keys %FORM)
- Fix _sanitise_input: change s/^\s// to s/^\s+// so all leading whitespace is stripped (was only stripping one space)
- Fix _untaint_filename: add explicit return at end so function returns undef (not "") when the filename regex fails to match
- Fix t/00-load.t bail-out: capture load error before use_ok clobbers $@, then BAIL_OUT with the actual reason on failure
- Fix double-colon instantiation validation to correctly croak when params are provided to CGI::Info::new
1.13 Sun Apr 12 08:49:24 EDT 2026
Fixed test failures on Windows, e.g. https://www.cpantesters.org/cpan/report/5bf7930a-7048-1014-8eeb-cabb5837fa32
Bump Test::Mockingbird version, fixes https://www.cpantesters.org/cpan/report/5992cad6-3527-11f1-a62b-8d83cf1a6737
1.12 Sun Apr 5 17:46:12 EDT 2026
as_string should not return undef
Added mutation tests and LCSAJ data to the test dashboard
Say who is trying to upload or using unsupported multipart
Block attacks with var_dump%28md5
Allow the default max_upload_size to be configurable at runtime
Added function.t - white-box tests for all functions, including helper functions
Added unit.t - a set of black-box subtests to test each public function, according to their API documentation in the POD
Added integration.t - a set of subtests to blackâbox, endâtoâend behaviour across multiple routines, including the entire package, according to the POD documentation.
Includes as many stateful tests and tests of integration with other packages as possible.
Added edge_cases.t - a set of destructive, pathological, boundaryâcondition subtests
Fixed an issue that edge_cases found in scanning very long parameters for injections - the scan was slow and inefficient
Added extended.t - any other tests
Fix handling double injection NUL via %2500
1.11 Mon Feb 2 12:59:36 EST 2026
Fix "skipped: (no reason given)" https://www.cpantesters.org/cpan/report/6af2b33e-fef6-11f0-9424-b5d717f4d45d
1.10 Mon Feb 2 08:24:22 EST 2026
Fix test failures on non English systems https://www.cpantesters.org/cpan/report/23060ef6-feb3-11f0-b888-30156e8775ea
Try to fix "skipped: (no reason given)" https://www.cpantesters.org/cpan/report/6af2b33e-fef6-11f0-9424-b5d717f4d45d
Could be an issue with Test::Needs
1.09 Fri Jan 30 08:54:26 EST 2026
Updated test dashboard shows CPAN test failures
Bumped version of Object::Configure to see if that fixes https://www.cpantesters.org/cpan/report/a8dc0030-dc5d-11f0-baa1-832b6e8775ea
Bumped version of Params::Validate::Strict to see if that fixes https://www.cpantesters.org/cpan/report/a2d57ccc-dca6-11f0-8c44-bc72dd65bc3d
1.08 Thu Dec 18 08:12:56 EST 2025
Invalid args could get through if the logger is set
Make get_cookie() just call cookie()
Verify the format of the cookie name
Added test dashboard
Croak if tmpdir is given a non-scalar for default
No longer use Log::Any
Set HTTP status 501 when GET is given Multipart/form-data
1.07 Sun Sep 14 09:16:12 EDT 2025
Fix https://ci.appveyor.com/project/nigelhorne/cgi-info-vqpj8/builds/52537979/job/bnag8kvc2htkl3vf
( run in 2.666 seconds using v1.01-cache-2.11-cpan-a5162978ef8 )