Some servers will return an error response if a `Content-Length`
header isn't included in a `POST` request, so this adds it to the
`post_args` array when `post_form` or `post_json` are used.
`Livecheck::Strategy.page_headers` uses `Utils::Curl.curl_headers` but
the method only handles `HEAD` and `GET` requests. I recently added
`POST` support to livecheck but forgot to update `curl_headers` in the
process, so `livecheck` blocks using the `HeaderMatch` strategy along
with `post_form` or `post_json` will fail because curl doesn't allow
both `--head` and `--data`/`--json` arguments.
This addresses the issue by updating `curl_headers` to handle `POST`
requests and skip the `GET` retry logic.
We recently added `POST` request support to livecheck but related cask
checks are failing the `livecheck_https_availability` audit because it
calls `validate_url_for_https_availability` which calls
`Utils::Curl.curl_check_http_content` and that checks the URL using a
`GET` request. Adding `POST` request support to all of those methods
will take some work, so this adds a guard to skip the audit if the
`livecheck` block uses `post_form` or `post_json`. This isn't ideal
but it will allow us to add these `livecheck` blocks in the interim
time.
Co-authored-by: Douglas Eichelberger <d@eic.email>
In the spirit of trying to cleanup e.g. `brew sh` or `brew bundle env`
environment variables: let's delete them instead of fetching them.
This avoids having `env` output all the environment variables that we're
just using to pass state from Bash to Ruby.
The `Xorg.find_versions` method was recently updated to replace
`match_data[:content].blank?` with `match_data[:content].empty?` but
this is producing an `undefined method 'empty?' for nil` error, as
`:content` is not present when `PageMatch.find_versions` uses cached
content. This updates `Xorg.find_versions` to handle nil `:content`
values in a way that's similar to other `find_versions` methods.