Changes for version 1.0100

  • Change: e8e7ebfea48b4328933da9cf26d8683d160a0ab1 Author: Dean Hamstead <dean@fragfest.com.au> Date : 2026-07-31 01:01:42 +0000
    • feat: add head and options HTTP methods (#38)
    • feat: add head and options HTTP methods
    • test: add tests for head and options verbs
    • docs: improve POD, fix broken examples, update verb lists
    • refactor: consolidate verb methods into _request_with_params and _encode_params
  • Change: 24390bd523c0493a531863d2efa5b76897e5c150 Author: Dean Hamstead <dean@fragfest.com.au> Date : 2026-07-06 00:46:10 +0000
    • refactor: consolidate headers handling into _headers and _headers_content_type
  • Change: f47c8bd368e59f7642354e364a5c83a9f466dffb Author: Dean Hamstead <dean@fragfest.com.au> Date : 2026-07-06 00:46:10 +0000
    • fix: stop sending Content-Type header on GET requests
  • Change: a2ba104c312d9faf1fd4ac217f4bf0315a74c5b2 Author: Dean Hamstead <dean@fragfest.com.au> Date : 2026-07-06 00:46:10 +0000
    • test: verify all HTTP methods do not mutate caller arguments
    • Uses Clone + is_deeply to snapshot inputs before each method call and compare after. Covers get, post, put, patch, delete.
  • Change: 2040e521c79166ad453f17f5cd76261628c22ba4 Author: Dean Hamstead <dean@fragfest.com.au> Date : 2026-07-02 11:28:49 +0000
    • fix: stop sending Content-Type header on DELETE requests
    • DELETE requests have no body, so sending Content-Type is incorrect and rejected by some APIs. This is a breaking change -- callers that relied on the old behavior must set Content-Type explicitly via the headers argument.
  • Change: 31a4c80e9fa96ff8e6c1802012a2b98fe5340f7c Author: Dean Hamstead <dean@fragfest.com.au> Date : 2026-06-27 12:58:48 +0000
    • Update README.md and Makefile.PL
  • Change: a81303e325319cfff1bd1f201988330c87b7a2bb Author: Dean Hamstead <dean@fragfest.com.au> Date : 2026-06-27 12:58:48 +0000
    • ci: add GitHub Actions workflow for dzil test
  • Change: 907960582728121b1c799a32230d7b81e0deeb46 Author: Dean Hamstead <dean@fragfest.com.au> Date : 2026-06-27 12:58:48 +0000
    • fix: restore headers propagation broken by _headers // change
  • Change: 019f25d3b6458a57696ecef112d26a713e30ea68 Author: Dean Hamstead <dean@fragfest.com.au> Date : 2026-06-26 14:20:52 +0000
    • fix: guard Response type-check against non-object values
  • Change: cfdcafe6ad3bea7fe50d194bfa65cff7c6df5588 Author: Dean Hamstead <dean@fragfest.com.au> Date : 2026-06-26 00:55:30 +0000
    • Use defined-or instead of logical-or for default headers
    • ||= replaced undef, 0, and '' with {} silently, hiding invalid non-hashref values from the is_plain_hashref validation croak. Changed to // which only replaces undef, allowing invalid values like 0 and '' to properly produce an error.
  • Change: 2519adc310e18a92013cc9e44471f658ad5bb215 Author: Dean Hamstead <dean@fragfest.com.au> Date : 2026-06-25 22:26:08 +0000
    • fix: use PATCH from HTTP::Request::Common
    • Import PATCH from HTTP::Request::Common - Rewrite patch method to match post/put pattern - Bump HTTP::Message minimum from 6.06 to 6.13
    • Add test verifying method, URL, Content-Type, and body - Expand =head2 patch POD with signature and example
  • Change: 1ec7fbdb8b911fb0d9f2a5e6c8ecdfa856cceceb Author: Dean Hamstead <dean@fragfest.com.au> Date : 2026-06-25 22:22:12 +0000
    • Fix loose _url regex allowing http-prefixed paths to bypass base_url
    • The regex /^http/ matched any path starting with 'http' (e.g. 'http:/evil.com/api'), treating it as an absolute URL and bypassing base_url. Tightened to m{^https?://} so only valid scheme-prefixed URLs are treated as absolute.
  • Change: 76c96e2772fd45b666daf79ba99ec4ae5a89563d Author: Dean Hamstead <dean@fragfest.com.au> Date : 2026-06-25 21:24:17 +0000
    • Use decoded_content instead of content in default deserializer
    • Switch from ->content to ->decoded_content so that Content-Encoding (e.g. gzip) is properly handled before JSON deserialization. Without this, gzipped response bodies would be passed as raw compressed bytes to the JSON decoder, causing a parse failure.
    • Also adds a test with a gzipped response to cover this path.
    • Consistent with WebService::Client::Response::data() which already uses decoded_content (commit d133246).
  • Change: 2c49537f167712a523c3e18745a99f2d82cd1be8 Author: Dean Hamstead <dean@fragfest.com.au> Date : 2026-06-25 21:22:50 +0000
    • Fix each() iterator corruption in _php_params
    • Replace each() with keys() + index to avoid corrupting the hash's internal iterator. When _php_params was called on a hashref that was also being externally iterated with each(), the two iterators would interfere, causing skipped keys and wrong query strings.
  • Change: 12070a010dfb7d84811f797c1d1bf900555d659f Author: Dean Hamstead <dean@fragfest.com.au> Date : 2026-06-25 01:23:02 +0000
    • Fix #25 - URL-encode query params in get(), add array_query_style attribute
    • Replace manual query string building with URI->query_form_hash
    • for proper RFC 3986 encoding - Add array_query_style attribute (default 'php', option 'rfc')
    • to control how array params are serialized in query strings - Use Ref::Util::is_plain_* instead of bare ref eq checks - Document array_query_style in POD - Expand test coverage for both param styles
  • Change: f44b7afcdc9304e4a07550b1cff424b7cef9b6b4 Author: Nicolas R <nicolas@atoomic.org> Date : 2020-11-05 20:43:57 +0000
    • Add Test::LWP::UserAgent to TestRequires
  • Change: bda2c08d624930acd9cf89458c8e4918c20be787 Author: Nicolas R <nicolas@atoomic.org> Date : 2020-11-05 20:41:52 +0000
    • Add a basic .gitignore file
  • Change: dc19d609ab78e7afde772fb4e4a6fb93e193bbc4 Author: Nicolas R <nicolas@atoomic.org> Date : 2020-11-05 20:41:06 +0000
    • Avoid cruft files in release
    • Note that the last release 1.0001 includes files like foo.pl and stocks.pl. These files should not have been part of the tarball as they are not versionned in git.
    • Switch to Git::GatherDir to avoid such mistakes in the future.
  • Change: b9c286dc6a80a8d9ca0f73dfa98ad09a671549ba Author: Nicolas R <nicolas@atoomic.org> Date : 2020-10-22 01:48:54 +0000
    • Use some colors for README.md
    • use Perl syntax highlighting when possible
  • Change: 4a79563ed493b02688f767697a518df47d719621 Author: Naveed Massjouni <nmassjouni@harmonia.com> Date : 2020-07-05 16:20:44 +0000
    • Fix #20 deserializer typo in POD documentation

Modules

A base role for creating web service clients