mirror of
https://github.com/edgurgel/httparrot
synced 2025-04-05 08:12:31 -04:00
more fixes
This commit is contained in:
parent
eedc9798bc
commit
3f2bbe78df
9 changed files with 18 additions and 17 deletions
|
@ -26,6 +26,6 @@ defmodule HTTParrot.DeleteCookiesHandler do
|
|||
defp delete_cookie(name, true, req), do: delete_cookie(name, "", req)
|
||||
|
||||
defp delete_cookie(name, value, req) do
|
||||
:cowboy_req.set_resp_cookie(name, value, req, path: "/", max_age: 0)
|
||||
:cowboy_req.set_resp_cookie(name, value, req, %{path: "/", max_age: 0})
|
||||
end
|
||||
end
|
||||
|
|
|
@ -2,7 +2,7 @@ defmodule HTTParrot.GeneralRequestInfo do
|
|||
def retrieve(req) do
|
||||
args = :cowboy_req.parse_qs(req)
|
||||
headers = :cowboy_req.headers(req)
|
||||
url = :cowboy_req.uri(req)
|
||||
url = IO.iodata_to_binary(:cowboy_req.uri(req))
|
||||
{ip, _port} = :cowboy_req.peer(req)
|
||||
|
||||
ip =
|
||||
|
@ -19,8 +19,8 @@ defmodule HTTParrot.GeneralRequestInfo do
|
|||
@doc """
|
||||
Group by keys and if duplicated keys, aggregate them as a list
|
||||
|
||||
iex> group_by_keys([a: "v1", a: "v2", b: "v3", a: "v4"])
|
||||
%{a: ["v1", "v2", "v4"], b: "v3"}
|
||||
iex> group_by_keys([{"a", "v1"}, {"a", "v2"}, {"b", "v3"}, {"a", "v4"}])
|
||||
%{"a" => ["v1", "v2", "v4"], "b" => "v3"}
|
||||
"""
|
||||
@spec group_by_keys(list) :: map
|
||||
def group_by_keys([]), do: %{}
|
||||
|
|
|
@ -19,7 +19,7 @@ defmodule HTTParrot.RedirectHandler do
|
|||
def previously_existed(req, state), do: {true, req, state}
|
||||
|
||||
def moved_permanently(req, n) do
|
||||
host_url = :cowboy_req.uri(req)
|
||||
host_url = IO.iodata_to_binary(:cowboy_req.uri(req))
|
||||
url = if n > 1, do: "/redirect/#{n - 1}", else: "/get"
|
||||
{{true, host_url <> url}, req, nil}
|
||||
end
|
||||
|
|
|
@ -31,6 +31,6 @@ defmodule HTTParrot.SetCookiesHandler do
|
|||
end
|
||||
|
||||
defp set_cookie(name, value, req) do
|
||||
:cowboy_req.set_resp_cookie(name, value, req, path: "/")
|
||||
:cowboy_req.set_resp_cookie(name, value, req, %{path: "/"})
|
||||
end
|
||||
end
|
||||
|
|
|
@ -21,7 +21,7 @@ defmodule HTTParrot.StoreRequestHandler do
|
|||
|
||||
def get(req, state) do
|
||||
{info, req} = GeneralRequestInfo.retrieve(req)
|
||||
{key, _} = :cowboy_req.binding(:key, req)
|
||||
key = :cowboy_req.binding(:key, req)
|
||||
HTTParrot.RequestStore.store(key, info)
|
||||
{'{"saved": "true"}', req, state}
|
||||
end
|
||||
|
@ -65,7 +65,7 @@ defmodule HTTParrot.StoreRequestHandler do
|
|||
{info, req} = GeneralRequestInfo.retrieve(req)
|
||||
key = :cowboy_req.binding(:key, req)
|
||||
HTTParrot.RequestStore.store(key, info ++ body)
|
||||
req = :cowboy_req.reply(200, %{}, '{"saved": "true"}', req)
|
||||
req = :cowboy_req.reply(200, %{}, "{\"saved\": \"true\"}", req)
|
||||
{:halt, req, nil}
|
||||
end
|
||||
end
|
||||
|
|
|
@ -11,15 +11,16 @@ defmodule HTTParrot.DeleteCookiesHandlerTest do
|
|||
|
||||
test "delete cookies and redirect to /cookies " do
|
||||
expect(:cowboy_req, :set_resp_cookie, [
|
||||
{[:k1, :v1, :req1, [path: "/", max_age: 0]], :req2},
|
||||
{[:k2, :v2, :req2, [path: "/", max_age: 0]], :req3}
|
||||
{["k1", "v1", :req1, %{path: "/", max_age: 0}], :req2},
|
||||
{["k2", "v2", :req2, %{path: "/", max_age: 0}], :req3}
|
||||
])
|
||||
|
||||
expect(:cowboy_req, :reply, [
|
||||
{[302, %{"location" => "/cookies"}, "Redirecting...", :req3], :req4}
|
||||
])
|
||||
|
||||
assert get_json(:req1, k1: :v1, k2: :v2) == {:halt, :req4, [k1: :v1, k2: :v2]}
|
||||
assert get_json(:req1, [{"k1", "v1"}, {"k2", "v2"}]) ==
|
||||
{:halt, :req4, [{"k1", "v1"}, {"k2", "v2"}]}
|
||||
|
||||
assert validate(:cowboy_req)
|
||||
end
|
||||
|
|
|
@ -60,8 +60,8 @@ defmodule HTTParrot.SetCookiesHandlerTest do
|
|||
|
||||
test "redirect to /cookies " do
|
||||
expect(:cowboy_req, :set_resp_cookie, [
|
||||
{[:k1, :v1, :req1, [path: "/"]], :req2},
|
||||
{[:k2, :v2, :req2, [path: "/"]], :req3}
|
||||
{[:k1, :v1, :req1, %{path: "/"}], :req2},
|
||||
{[:k2, :v2, :req2, %{path: "/"}], :req3}
|
||||
])
|
||||
|
||||
expect(:cowboy_req, :reply, [
|
||||
|
|
|
@ -5,19 +5,19 @@ defmodule HTTParrot.StoreRequestHandlerTests do
|
|||
|
||||
setup do
|
||||
HTTParrot.RequestStore.clear(:test)
|
||||
on_exit fn -> unload() end
|
||||
on_exit(fn -> unload() end)
|
||||
:ok
|
||||
end
|
||||
|
||||
test "store a request" do
|
||||
expect(:cowboy_req, :binding, [:key, :req1], {:test, :req1})
|
||||
expect(:cowboy_req, :binding, [:key, :req1], :test)
|
||||
expect(HTTParrot.GeneralRequestInfo, :retrieve, 1, {:info, :req1})
|
||||
assert get(:req1, :state) == {'{"saved": "true"}', :req1, :state}
|
||||
assert HTTParrot.RequestStore.retrieve(:test) == [:info]
|
||||
end
|
||||
|
||||
test "store multiple requests" do
|
||||
expect(:cowboy_req, :binding, [:key, :req1], {:test, :req1})
|
||||
expect(:cowboy_req, :binding, [:key, :req1], :test)
|
||||
expect(HTTParrot.GeneralRequestInfo, :retrieve, 1, {:info, :req1})
|
||||
assert get(:req1, :state) == {'{"saved": "true"}', :req1, :state}
|
||||
assert get(:req2, :state) == {'{"saved": "true"}', :req1, :state}
|
||||
|
|
|
@ -1 +1 @@
|
|||
ExUnit.start
|
||||
ExUnit.start()
|
||||
|
|
Loading…
Add table
Reference in a new issue