-
Notifications
You must be signed in to change notification settings - Fork 340
Description
I was a bit surprised to hit a bug in our code - we accidentally put a map instead of a keyword list in a Request struct, and that blew up in our staging environment:
2022-11-17T21:57:36.282000+00:00 ip-192-168-0-108/fb9f6b2 (elixir 1.14.1) lib/keyword.ex:1078: Keyword.has_key?(%{"follow_redirect" => true, "max_body_length" => 10240, "max_redirect" => 3, "recv_timeout" => 5000, "timeout" => 5000}, :proxy)
2022-11-17T21:57:36.282000+00:00 ip-192-168-0-108/fb9f6b2 (httpoison 1.8.2) lib/httpoison/base.ex:763: HTTPoison.Base.build_hackney_proxy_options/1
The reason I was surprised is that I assumed that a widely used library like HTTPoison by now would have correct typespecs everywhere, so seeing bd14138 was, well, not what I expected.
Can we batten down the hatches? At the moment, you can feed anything you want to HTTPoison and Dialyzer will not mind; this is the sort of mistake that we have the tools to catch quickly and unless I'm missing something (there's not a lot of detail on that commit) there's really no reason to make everything just any(). I mean, it's probably better to just remove the typespecs at this point altogether...