Reputation: 19456
I'm getting the following back from plug
`conn.req_headers:
[
{"accept",
"text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8"},
{"accept-encoding", "gzip, deflate, br"},
{"accept-language", "en-GB,en;q=0.9,fr;q=0.8"},
{"cache-control", "max-age=0"},
{"connection", "keep-alive"},
{"cookie",
"_xsrf=2|353a732a|e6f0e245b4f4617b78f5080f716b5a83|1548858283; username-localhost-8888=\"2|1:0|10:1548926887|23:username-localhost-8888|44:MjlmNjg1MmMwMTA5NGZlNjllM2FmNzg0YmFlMDM4ZTY=|b5777f2478a76e40e5d2a194c35a6dc49771b5522513299099e9baf47d7c0975\"; _shortr_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYcnEvMWJQRE1OSVROSG1JOXRDY1VrUT09.SAlNvN6U9ol3ldsUP2qjlVXTJgvtLdSUzjBkAuuW5NM"},
{"host", "localhost:4000"},
{"referer", "http://localhost:4000/links"},
{"upgrade-insecure-requests", "1"},
{"user-agent",
"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.81 Safari/537.36"}
]
I need to convert it to a Map (to send to ecto), such that %{"accept" => "...", ...}
In python I'd do something like
{v[0]: v[1] for v in original_list}
Is there something so beautiful in Elixir?
Upvotes: 0
Views: 58
Reputation: 847
You can also use Map.new
https://hexdocs.pm/elixir/Map.html#new/1
iex> [{"foo", "bar"}, {"fizz", "buzz"}] |> Map.new
%{"fizz" => "buzz", "foo" => "bar"}
Upvotes: 3
Reputation: 1342
Use Enum#into/2:
Inserts the given enumerable into a collectable.
For example (see docs for more examples):
iex> [{"foo", "bar"}, {"fizz"}, {"buzz"}] |> Enum.into(%{})
%{"foo" => "bar", "fizz" => "buzz"}
In your case:
iex(1)> [
...(1)> {"accept",
...(1)> "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8"},
...(1)> {"accept-encoding", "gzip, deflate, br"},
...(1)> {"accept-language", "en-GB,en;q=0.9,fr;q=0.8"},
...(1)> {"cache-control", "max-age=0"},
...(1)> {"connection", "keep-alive"},
...(1)> {"cookie",
...(1)> "_xsrf=2|353a732a|e6f0e245b4f4617b78f5080f716b5a83|1548858283; username-localhost-8888=\"2|1:0|10:1548926887|23:username-localhost-8888|44:MjlmNjg1MmMwMTA5NGZlNjllM2FmNzg0YmFlMDM4ZTY=|b5777f2478a76e40e5d2a194c35a6dc49771b5522513299099e9baf47d7c0975\"; _shortr_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYcnEvMWJQRE1OSVROSG1JOXRDY1VrUT09.SAlNvN6U9ol3ldsUP2qjlVXTJgvtLdSUzjBkAuuW5NM"},
...(1)> {"host", "localhost:4000"},
...(1)> {"referer", "http://localhost:4000/links"},
...(1)> {"upgrade-insecure-requests", "1"},
...(1)> {"user-agent",
...(1)> "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.81 Safari/537.36"}
...(1)> ] |> Enum.into(%{})
%{
"accept" => "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8",
"accept-encoding" => "gzip, deflate, br",
"accept-language" => "en-GB,en;q=0.9,fr;q=0.8",
"cache-control" => "max-age=0",
"connection" => "keep-alive",
"cookie" => "_xsrf=2|353a732a|e6f0e245b4f4617b78f5080f716b5a83|1548858283; username-localhost-8888=\"2|1:0|10:1548926887|23:username-localhost-8888|44:MjlmNjg1MmMwMTA5NGZlNjllM2FmNzg0YmFlMDM4ZTY=|b5777f2478a76e40e5d2a194c35a6dc49771b5522513299099e9baf47d7c0975\"; _shortr_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYcnEvMWJQRE1OSVROSG1JOXRDY1VrUT09.SAlNvN6U9ol3ldsUP2qjlVXTJgvtLdSUzjBkAuuW5NM",
"host" => "localhost:4000",
"referer" => "http://localhost:4000/links",
"upgrade-insecure-requests" => "1",
"user-agent" => "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.81 Safari/537.36"
}
Upvotes: 3