Skip to content

Commit 07efcb7

Browse files
committed
Move @doc false function to non-imported module
1 parent f28e1a4 commit 07efcb7

3 files changed

Lines changed: 31 additions & 34 deletions

File tree

lib/plug/conn.ex

Lines changed: 1 addition & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -1671,41 +1671,12 @@ defmodule Plug.Conn do
16711671
def put_resp_cookie(%Conn{} = conn, key, value, opts \\ [])
16721672
when is_binary(key) and is_list(opts) do
16731673
%{resp_cookies: resp_cookies, scheme: scheme} = conn
1674-
{to_send_value, opts} = maybe_sign_or_encrypt_cookie(conn, key, value, opts)
1674+
{to_send_value, opts} = Plug.Conn.Cookies.sign_or_encrypt(conn, key, value, opts)
16751675
cookie = [{:value, to_send_value} | opts] |> Map.new() |> maybe_secure_cookie(scheme)
16761676
resp_cookies = Map.put(resp_cookies, key, cookie)
16771677
update_cookies(%{conn | resp_cookies: resp_cookies}, &Map.put(&1, key, value))
16781678
end
16791679

1680-
@doc false
1681-
def maybe_sign_or_encrypt_cookie(%Conn{} = conn, key, value, opts) do
1682-
{sign?, opts} = Keyword.pop(opts, :sign, false)
1683-
{encrypt?, opts} = Keyword.pop(opts, :encrypt, false)
1684-
1685-
case {sign?, encrypt?} do
1686-
{true, true} ->
1687-
raise ArgumentError,
1688-
":encrypt automatically implies :sign. Please pass only one or the other"
1689-
1690-
{true, false} ->
1691-
{Plug.Crypto.sign(conn.secret_key_base, key <> "_cookie", value, max_age(opts)), opts}
1692-
1693-
{false, true} ->
1694-
{Plug.Crypto.encrypt(conn.secret_key_base, key <> "_cookie", value, max_age(opts)), opts}
1695-
1696-
{false, false} when is_binary(value) ->
1697-
{value, opts}
1698-
1699-
{false, false} ->
1700-
raise ArgumentError, "cookie value must be a binary unless the cookie is signed/encrypted"
1701-
end
1702-
end
1703-
1704-
defp max_age(opts) do
1705-
max_age = Keyword.get(opts, :max_age) || 86400
1706-
[keys: Plug.Keys, max_age: max_age]
1707-
end
1708-
17091680
defp maybe_secure_cookie(cookie, :https), do: Map.put_new(cookie, :secure, true)
17101681
defp maybe_secure_cookie(cookie, _), do: cookie
17111682

lib/plug/conn/cookies.ex

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,35 @@ defmodule Plug.Conn.Cookies do
33
Conveniences for encoding and decoding cookies.
44
"""
55

6+
@doc false
7+
def sign_or_encrypt(%Plug.Conn{} = conn, key, value, opts) do
8+
{sign?, opts} = Keyword.pop(opts, :sign, false)
9+
{encrypt?, opts} = Keyword.pop(opts, :encrypt, false)
10+
11+
case {sign?, encrypt?} do
12+
{true, true} ->
13+
raise ArgumentError,
14+
":encrypt automatically implies :sign. Please pass only one or the other"
15+
16+
{true, false} ->
17+
{Plug.Crypto.sign(conn.secret_key_base, key <> "_cookie", value, max_age(opts)), opts}
18+
19+
{false, true} ->
20+
{Plug.Crypto.encrypt(conn.secret_key_base, key <> "_cookie", value, max_age(opts)), opts}
21+
22+
{false, false} when is_binary(value) ->
23+
{value, opts}
24+
25+
{false, false} ->
26+
raise ArgumentError, "cookie value must be a binary unless the cookie is signed/encrypted"
27+
end
28+
end
29+
30+
defp max_age(opts) do
31+
max_age = Keyword.get(opts, :max_age) || 86400
32+
[keys: Plug.Keys, max_age: max_age]
33+
end
34+
635
@doc """
736
Decodes the given cookies as given in either a request or response header.
837

lib/plug/test.ex

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -240,10 +240,7 @@ defmodule Plug.Test do
240240
def put_req_cookie(%Conn{} = conn, key, value, opts \\ [])
241241
when is_binary(key) and is_list(opts) do
242242
conn = delete_req_cookie(conn, key)
243-
opts = Keyword.take(opts, [:max_age, :sign, :encrypt])
244-
245-
{to_send_value, _opts} = Conn.maybe_sign_or_encrypt_cookie(conn, key, value, opts)
246-
243+
{to_send_value, _opts} = Plug.Conn.Cookies.sign_or_encrypt(conn, key, value, opts)
247244
%{conn | req_headers: [{"cookie", "#{key}=#{to_send_value}"} | conn.req_headers]}
248245
end
249246

0 commit comments

Comments
 (0)