I’m trying to build a function to send a file through a POST request in multipart format, using this as guide, but HTTPoison keeps giving me two errors no matter what changes I make to the form. They are all
HTTPoison.post("https://api.telegram.org/myCredentials", {:multipart, form}, headers)
and the versions of my form and the errors are the following (whether I use headers or not):
1st and 2nd Version (same error for both):
form = [{"photo", [{"name", "myphoto.jpg"}, {:file, "files/aphoto.jpg"}]}, {"chat_id", 237799110}]
-----
form = [photo: [{"name", "myphoto.jpg"}, {:file, "files/aphoto.jpg"}], chat_id: 237799110]
Which give me this error:
** (FunctionClauseError) no function clause matching in anonymous fn/2 in :hackney_multipart.len_mp_stream/2
(hackney) c:/Users/venta/projects/elixir/wrapper/deps/hackney/src/hackney_multipart.erl:159: anonymous fn({"photo", [{"name", "myphoto.jpg"}, {:file, "files/aphoto.jpg"}]}, 0) in :hackney_multipart.len_mp_stream/2
(stdlib) lists.erl:1263: :lists.foldl/3
(hackney) c:/Users/venta/projects/elixir/wrapper/deps/hackney/src/hackney_multipart.erl:159: :hackney_multipart.len_mp_stream/2
(hackney) c:/Users/venta/projects/elixir/wrapper/deps/hackney/src/hackney_request.erl:319: :hackney_request.handle_body/4
(hackney) c:/Users/venta/projects/elixir/wrapper/deps/hackney/src/hackney_request.erl:81: :hackney_request.perform/2
(hackney) c:/Users/venta/projects/elixir/wrapper/deps/hackney/src/hackney.erl:373: :hackney.send_request/2
(httpoison) lib/httpoison/base.ex:432: HTTPoison.Base.request/9
I checked the code for Hackney and the line that is erroring out is one that is supposed to get the file and an accSize, but it gets passed the whole form, not the file, and Hackney can’t do anything with it. I’m wondering how to pass a form with a file inside, since the API I’m using requires that the file be inside a “photo” object as such: {“chat_id”: someid, “photo”: file_in_multipart/form-data, “otherkeys”: othervals}