==================================================
Changes from 2016-08-16 00:00:00 +0000 to present.
==================================================
-------------------------------------------
version 1.0100 at 2026-08-14 04:19:17 +0000
-------------------------------------------
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
-------------------------------------------
version 1.0001 at 2020-04-08 04:17:18 +0000
-------------------------------------------
Change: 8fc9dc47c82cf792d28360d52b7424bd2e4c5b1c
Author: Naveed Massjouni <nmassjouni@harmonia.com>
Date : 2020-04-08 00:17:18 +0000
v1.0001
Change: d13324674f010a713a13af4e9a743d9720995b5b
Author: Naveed Massjouni <nmassjouni@harmonia.com>
Date : 2020-04-08 00:13:35 +0000
Get the decoded_content of the http response in v2 mode
Change: 8ce8aa6ace3638d2c63e60d36ad487db37d0e5bd
Author: Naveed Massjouni <nmassjouni@harmonia.com>
Date : 2020-04-07 22:22:36 +0000
Add an example of how to use the v2 mode
-------------------------------------------
version 1.0000 at 2020-04-08 01:49:43 +0000
-------------------------------------------
Change: a57076bc37dd1916dbc4ba9209ff5b082201e8db
Author: Naveed Massjouni <nmassjouni@harmonia.com>
Date : 2020-04-07 21:49:43 +0000
v1.0000
Change: 69b2cf1de001eddb6c13a9326b55be8341711d37
Author: Naveed Massjouni <nmassjouni@harmonia.com>
Date : 2019-11-04 19:28:04 +0000
Update README and Makefile
Change: 335e2f1886cdb2c5b6229f8d8a3f4760ff034dbe
Author: Naveed Massjouni <nmassjouni@harmonia.com>
Date : 2019-11-04 16:25:16 +0000
Add ok() method to Response class
Change: f0c573987142d3418965440f03a2ffac96eac508
Author: Naveed Massjouni <nmassjouni@harmonia.com>
Date : 2019-11-04 16:24:45 +0000
Set the default mode to be an empty string
Change: 7483f92e5cdc8cb006ad4cbea4cd91b3752eb32d
Author: Naveed Massjouni <naveed@vt.edu>
Date : 2019-10-30 16:53:58 +0000
Add a new operating mode that always returns a response object (#19)
This is to address issue #11. djzort suggested adding a mode where
the http response is always returned.
Change: 2cc9f986ed2d1889f0ea2718c1bfffef4e0c64b2
Author: Naveed Massjouni <naveed@vt.edu>
Date : 2019-10-26 14:43:09 +0000
Merge pull request #16 from ZipRecruiter/nawglan/authordeps
add authordep entries in dist.ini for missing development requires.
Change: 46cff5dab359d38e0ba20c77e757c7c9a39cc153
Author: Naveed Massjouni <naveed@vt.edu>
Date : 2019-10-26 14:40:40 +0000
Merge pull request #17 from ZipRecruiter/add-test-for-get
Adds a test for successful path GET functionality, including
deserialâ¦
Change: 0f89f68a186b10dd9692e16af433fdfae49d1d1a
Author: Naveed Massjouni <naveed@vt.edu>
Date : 2019-04-03 15:01:54 +0000
Merge pull request #15 from ZipRecruiter/kwalitee-minimumperl
Add [MinimumPerl] to dist.ini
Change: 923f98d84dbfaa46d5d54033dba2a8f3b3574de7
Author: Naveed Massjouni <naveed@vt.edu>
Date : 2019-04-03 10:08:44 +0000
Merge pull request #14 from ZipRecruiter/kwalitee-provides
Add [MetaProvides::Package] to dist.ini
Change: 4203d86199fe04f14c628980de62b4690892ca07
Author: nalabelle <nalabelle@gmail.com>
Date : 2018-07-18 20:11:44 +0000
Adds a test for successful path GET functionality, including
deserialization into list
Change: 1a0de516b88a550757f95dd49df5cc6949e9c537
Author: Desmond Daignault <nawglan@cpan.org>
Date : 2018-07-18 21:46:59 +0000
add authordep entries in dist.ini for missing development requires.
Change: 06bde4856347f02a147183cc0a282d7dccaead02
Author: Kivanc Yazan <kyzn@cpan.org>
Date : 2018-07-18 18:38:39 +0000
Add [MetaProvides::Package] to dist.ini
Without it, META.yml file is missing {provides}, which was reported
as an "experimental issue" at
https://cpants.cpanauthors.org/dist/WebService-Client
Change: 9cce32c5ca91f756e3d7a0eb0f06798cdd24f68d
Author: Kivanc Yazan <kyzn@cpan.org>
Date : 2018-07-18 18:29:55 +0000
Add [MinimumPerl] to dist.ini
Without it, META.yml file is missing {requires}{perl}, which was
reported as an "extra issue" at
https://cpants.cpanauthors.org/dist/WebService-Client
-------------------------------------------
version 0.0601 at 2017-06-08 19:41:46 +0000
-------------------------------------------
Change: 0702964927fbd2eca02ed81d8c869f9fcb4791ee
Author: Naveed Massjouni <nmassjouni@harmonia.com>
Date : 2017-06-08 15:41:46 +0000
v0.0601
Change: a86219e52830ddddad430beecca5dea4a8599d3e
Author: Naveed Massjouni <nmassjouni@harmonia.com>
Date : 2017-06-08 15:39:18 +0000
Fix #13, a json bug.
-------------------------------------------
version 0.0600 at 2017-06-02 17:49:44 +0000
-------------------------------------------
Change: abead5f53270b3c68d7c35688075ed20ce319058
Author: Naveed Massjouni <nmassjouni@harmonia.com>
Date : 2017-06-02 13:49:44 +0000
v0.0600
Change: 680e0cbcd6b8647dede2ec51c735d657d1ab52c3
Author: Naveed Massjouni <naveedm9@gmail.com>
Date : 2017-06-01 10:05:15 +0000
Merge pull request #12 from djzort/json_object
Use a JSON object
Change: 99adcec2638b7dde6ab46354d9682d848781f1b0
Author: Dean Hamstead <dean@fragfest.com.au>
Date : 2017-06-01 21:13:27 +0000
Use a json object, so it can be tweaked.
Inspired by https://github.com/ironcamel/WebService-Client/pull/1
Change: 515233834f2cb257b4eda7c6eedb47ae8e29f47a
Author: Dean Hamstead <dean@fragfest.com.au>
Date : 2017-06-01 21:12:35 +0000
Some suggestions only
Change: 270b4e77cda0ee03898143c6edfa2ec0e91b0d15
Author: Dean Hamstead <dean@fragfest.com.au>
Date : 2017-06-01 20:44:40 +0000
Bump year
Change: 4c896c03328f2e43edff98a716cd794550d8f5a0
Author: Naveed Massjouni <nmassjouni@harmonia.com>
Date : 2017-04-26 10:16:46 +0000
v0.0502
Change: b349c3555fc9d5ec367d1077cc439e8236e64c65
Author: Naveed Massjouni <naveedm9@gmail.com>
Date : 2017-04-26 10:09:48 +0000
Merge pull request #10 from ByteFoundryAU/master
use JSON::MaybeXS, this means JSON can go faster
Change: 8b5ff5fb2b87998c983e84db8cb3501b31f47c4c
Author: Dean Hamstead <dean@fragfest.com.au>
Date : 2017-04-26 08:20:08 +0000
use JSON::MaybeXS, this means JSON can go faster
Change: cb77e11a9ef475abdec69f2be270b21ae0c94946
Author: Naveed Massjouni <naveedm9@gmail.com>
Date : 2015-12-16 04:01:11 +0000
Merge pull request #9 from ironcamel/validate-retries
validate that retries is a nonnegative int
Change: 7da3fef8d44008b78080151b9ae8fa26c83a8311
Author: Naveed Massjouni <naveed@vt.edu>
Date : 2015-12-16 03:49:32 +0000
validate that retries is a nonnegative int
================================================
Plus 9 releases after 2016-08-16 00:00:00 +0000.
================================================