Skip to content

Commit 5d5e60c

Browse files
committed
Rename generate_request_id to generator and improve docs
1 parent 74a8674 commit 5d5e60c

File tree

2 files changed

+17
-12
lines changed

2 files changed

+17
-12
lines changed

lib/plug/request_id.ex

Lines changed: 15 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -54,9 +54,12 @@ defmodule Plug.RequestId do
5454
5555
plug Plug.RequestId, logger_metadata_key: :my_request_id
5656
57-
* `:generate_request_id` - The function used to generate the request ID, defaults to `generate_request_id/0`.
57+
* `:generator` - The function used to generate the request ID, defaults to
58+
`Plug.RequestId.generate/0`. When setting up a custom function, it is recommended
59+
to be in the `&MyApp.custom_request_id/0` format, so it can be stored at compile-time.
60+
The generated value must also have size between 20 and 200 bytes.
5861
59-
plug Plug.RequestId, generate_request_id: fn -> "myapp-" <> Plug.RequestId.generate_request_id() end
62+
plug Plug.RequestId, generator: &MyApp.custom_request_id/0
6063
"""
6164

6265
alias Plug.Conn
@@ -68,30 +71,32 @@ defmodule Plug.RequestId do
6871
Keyword.get(opts, :http_header, "x-request-id"),
6972
Keyword.get(opts, :assign_as),
7073
Keyword.get(opts, :logger_metadata_key, :request_id),
71-
Keyword.get(opts, :generate_request_id, &__MODULE__.generate_request_id/0)
74+
Keyword.get(opts, :generator, &__MODULE__.generate/0)
7275
}
7376
end
7477

7578
@impl true
76-
def call(conn, {header, assign_as, logger_metadata_key, generate_request_id}) do
77-
request_id = get_request_id(conn, header, generate_request_id)
79+
def call(conn, {header, assign_as, logger_metadata_key, generator}) do
80+
request_id = get_request_id(conn, header, generator)
7881

7982
Logger.metadata([{logger_metadata_key, request_id}])
8083
conn = if assign_as, do: Conn.assign(conn, assign_as, request_id), else: conn
8184

8285
Conn.put_resp_header(conn, header, request_id)
8386
end
8487

85-
defp get_request_id(conn, header, generate_request_id) do
88+
defp get_request_id(conn, header, generator) do
8689
case Conn.get_req_header(conn, header) do
8790
[val | _] when byte_size(val) in 20..200 -> val
88-
_ -> generate_request_id.()
91+
_ -> generator.()
8992
end
9093
end
9194

92-
@doc "Generates Base64 encoded request ID."
93-
@spec generate_request_id :: binary()
94-
def generate_request_id do
95+
@doc """
96+
Generates a random Base64 encoded request ID.
97+
"""
98+
@spec generate :: binary()
99+
def generate do
95100
binary = <<
96101
System.system_time(:nanosecond)::64,
97102
:erlang.phash2({node(), self()}, 16_777_216)::24,

test/plug/request_id_test.exs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,10 +7,10 @@ defmodule Plug.RequestIdTest do
77
Plug.RequestId.call(conn, Plug.RequestId.init(opts))
88
end
99

10-
test "generates new request id with generate_request_id" do
10+
test "generates new request id with generator" do
1111
conn =
1212
call(conn(:get, "/"),
13-
generate_request_id: fn -> "myapp-" <> Plug.RequestId.generate_request_id() end
13+
generator: fn -> "myapp-" <> Plug.RequestId.generate() end
1414
)
1515

1616
[res_request_id] = get_resp_header(conn, "x-request-id")

0 commit comments

Comments
 (0)