in reply to Re^2: HTTP::Tiny losing headers for Stripe
in thread HTTP::Tiny losing headers for Stripe

Nothing in the HTTP::Tiny docs but it is in the code:
# line 239 sub post_form { my ($self, $url, $data, $args) = @_; # ... delete $args->{headers};

The request() method doesn't seem to do this deletion.

Replies are listed 'Best First'.
Re^4: HTTP::Tiny losing headers for Stripe
by Bod (Parson) on Jun 26, 2022 at 14:28 UTC
    ...but it is in the code

    Well spotted tangent
    I'm sure there was a reason for this behaviour but it does seem very odd!

    All my calls to Stripe are in a dedicated module and this has now been modified to get around this issue. The headers are cloned to create a deep copy immediately before the API calls and therefore the original headers don't get clobbered. I've done this with all calls in case any future script makes multiple calls for any reason.

    use HTTP::Tiny; use Clone qw(clone); my $http = HTTP::Tiny->new; my $headers = { 'headers' => { 'Authorization' => 'Bearer ' . $Site::Variables::stripe_secret +, }, 'agent' => 'Wayfinder/v3.0', }; # for each API call my $head = clone($headers); my $response = $http->post_form($stripe_api_url, $payload, $head);